Index: /trunk/trunk/admin/admin.php
===================================================================
--- /trunk/trunk/admin/admin.php	(revision 43)
+++ /trunk/trunk/admin/admin.php	(revision 43)
@@ -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/trunk/admin/eleonline.sql
===================================================================
--- /trunk/trunk/admin/eleonline.sql	(revision 43)
+++ /trunk/trunk/admin/eleonline.sql	(revision 43)
@@ -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/trunk/admin/footer.php
===================================================================
--- /trunk/trunk/admin/footer.php	(revision 43)
+++ /trunk/trunk/admin/footer.php	(revision 43)
@@ -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/trunk/admin/header.php
===================================================================
--- /trunk/trunk/admin/header.php	(revision 43)
+++ /trunk/trunk/admin/header.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckcontextmenu.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckcontextmenu.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckcontextmenu.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckeditingarea.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckeditingarea.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckeditingarea.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckevents.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckevents.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckevents.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckicon.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckicon.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckicon.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckiecleanup.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckiecleanup.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckiecleanup.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublock.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublock.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublock.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublockpanel.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublockpanel.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenublockpanel.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenuitem.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenuitem.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckmenuitem.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckpanel.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckpanel.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckpanel.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckplugin.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckplugin.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckplugin.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckspecialcombo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckspecialcombo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckspecialcombo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstylesloader.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstylesloader.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckstylesloader.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbar.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbar.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbar.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbutton.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbutton.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbutton.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/classes/fckxml_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fck_othercommands.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fck_othercommands.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fck_othercommands.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckfitwindow.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckfitwindow.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckfitwindow.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckstylecommand.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckstylecommand.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fckstylecommand.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktablecommand.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktablecommand.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktablecommand.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/fckconstants.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/fckconstants.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/fckconstants.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/fckeditorapi.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/fckeditorapi.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/fckeditorapi.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/fckjscoreextensions.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/fckjscoreextensions.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/fckjscoreextensions.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fck.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_1_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_2_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_contextmenu.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_contextmenu.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fck_contextmenu.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckbrowserinfo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckbrowserinfo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckbrowserinfo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcodeformatter.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcodeformatter.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcodeformatter.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcommands.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcommands.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckcommands.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckconfig.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckconfig.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckconfig.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdebug.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdebug.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdebug.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdialog_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdocumentprocessor.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdocumentprocessor.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckdocumentprocessor.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcklanguagemanager.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcklanguagemanager.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcklanguagemanager.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckplugins.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckplugins.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckplugins.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckregexlib.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckregexlib.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckregexlib.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckselection_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktablehandler_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbaritems.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbaritems.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbaritems.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbarset.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbarset.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktoolbarset.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fcktools_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckundo_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckurlparams.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckurlparams.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckurlparams.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtml_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtmlentities.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtmlentities.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/_source/internals/fckxhtmlentities.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/css/behaviors/disablehandles.htc
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/css/behaviors/disablehandles.htc	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/css/behaviors/disablehandles.htc	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/css/behaviors/hiddenfield.htc
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/css/behaviors/hiddenfield.htc	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/css/behaviors/hiddenfield.htc	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/css/behaviors/showtableborders.htc
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/css/behaviors/showtableborders.htc	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/css/behaviors/showtableborders.htc	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/css/fck_editorarea.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/css/fck_editorarea.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/css/fck_editorarea.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/css/fck_internal.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/css/fck_internal.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/css/fck_internal.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/css/fck_showtableborders_gecko.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/css/fck_showtableborders_gecko.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/css/fck_showtableborders_gecko.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/common/fck_dialog_common.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/common/fcknumericfield.htc
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/common/fcknumericfield.htc	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/common/fcknumericfield.htc	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/common/moz-bindings.xml
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/common/moz-bindings.xml	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/common/moz-bindings.xml	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_about.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_about.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_about.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_about/lgpl.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_about/lgpl.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_about/lgpl.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_anchor.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_anchor.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_anchor.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_button.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_button.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_button.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_checkbox.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_checkbox.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_checkbox.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_colorselector.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_colorselector.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_colorselector.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_find.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_find.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_find.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_form.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_form.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_form.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_hiddenfield.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_hiddenfield.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_hiddenfield.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_image.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_image.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_image.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image_preview.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image_preview.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_image/fck_image_preview.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_link.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_link.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_link.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_link/fck_link.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_link/fck_link.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_link/fck_link.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_listprop.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_listprop.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_listprop.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_paste.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_paste.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_paste.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_radiobutton.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_radiobutton.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_radiobutton.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_replace.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_replace.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_replace.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_select.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_select.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_select.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_select/fck_select.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_select/fck_select.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_select/fck_select.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_smiley.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_smiley.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_smiley.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_source.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_source.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_source.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_specialchar.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_specialchar.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_specialchar.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_table.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_table.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_table.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_tablecell.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_tablecell.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_tablecell.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_template.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_template.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_template.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_textarea.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_textarea.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_textarea.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_textfield.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_textfield.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_textfield.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/data.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/data.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/data.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/diacritic.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/diacritic.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/diacritic.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/dialogue.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/dialogue.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/dialogue.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/fck_universalkey.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/fck_universalkey.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/fck_universalkey.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/multihexa.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/multihexa.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/dialog/fck_universalkey/multihexa.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/fckblank.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/fckblank.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/fckblank.html	(revision 43)
@@ -0,0 +1,5 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head><title></title></head>
+<body></body>
+</html>
Index: /trunk/trunk/admin/inc/FCKeditor/editor/fckdebug.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/fckdebug.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/fckdebug.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/fckdialog.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/fckdialog.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/fckdialog.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/fckeditor.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/fckeditor.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/fckeditor.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/browser.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/basexml.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/basexml.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/basexml.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/commands.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/commands.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/commands.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/config.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/config.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/config.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/io.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/io.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/io.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/util.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/util.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/connectors/php/util.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmactualfolder.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmactualfolder.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmactualfolder.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmcreatefolder.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmcreatefolder.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmcreatefolder.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmfolders.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmfolders.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmfolders.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourceslist.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourceslist.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourceslist.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourcetype.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourcetype.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmresourcetype.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmupload.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmupload.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/frmupload.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/common.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/common.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/common.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/fckxml.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/fckxml.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/browser/default/js/fckxml.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/config.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/config.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/config.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/upload.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/upload.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/upload.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/util.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/util.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/filemanager/upload/php/util.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_gecko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_gecko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_gecko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_ie.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_ie.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/js/fckeditorcode_ie.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/_getfontformat.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/_getfontformat.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/_getfontformat.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/_translationstatus.txt
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/_translationstatus.txt	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/_translationstatus.txt	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/ar.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/ar.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/ar.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/bg.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/bg.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/bg.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/bn.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/bn.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/bn.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/bs.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/bs.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/bs.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/ca.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/ca.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/ca.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/cs.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/cs.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/cs.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/da.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/da.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/da.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/de.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/de.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/de.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/el.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/el.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/el.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/en-au.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/en-au.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/en-au.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/en-ca.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/en-ca.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/en-ca.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/en-uk.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/en-uk.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/en-uk.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/en.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/en.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/en.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/eo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/eo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/eo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/es.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/es.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/es.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/et.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/et.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/et.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/eu.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/eu.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/eu.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/fa.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/fa.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/fa.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/fi.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/fi.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/fi.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/fo.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/fo.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/fo.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/fr.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/fr.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/fr.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/gl.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/gl.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/gl.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/he.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/he.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/he.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/hi.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/hi.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/hi.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/hr.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/hr.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/hr.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/hu.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/hu.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/hu.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/it.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/it.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/it.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/ja.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/ja.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/ja.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/km.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/km.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/km.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/ko.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/ko.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/ko.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/lt.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/lt.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/lt.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/lv.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/lv.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/lv.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/mn.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/mn.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/mn.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/ms.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/ms.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/ms.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/nb.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/nb.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/nb.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/nl.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/nl.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/nl.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/no.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/no.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/no.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/pl.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/pl.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/pl.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/pt-br.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/pt-br.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/pt-br.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/pt.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/pt.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/pt.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/ro.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/ro.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/ro.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/ru.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/ru.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/ru.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/sk.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/sk.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/sk.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/sl.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/sl.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/sl.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/sr-latn.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/sr-latn.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/sr-latn.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/sr.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/sr.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/sr.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/sv.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/sv.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/sv.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/th.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/th.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/th.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/tr.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/tr.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/tr.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/uk.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/uk.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/uk.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/vi.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/vi.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/vi.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/zh-cn.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/zh-cn.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/zh-cn.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/lang/zh.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/lang/zh.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/lang/zh.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/autogrow/fckplugin.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/autogrow/fckplugin.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/autogrow/fckplugin.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fck_placeholder.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fck_placeholder.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fck_placeholder.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fckplugin.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fckplugin.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/fckplugin.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/de.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/de.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/de.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/en.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/en.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/en.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/fr.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/fr.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/fr.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/it.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/it.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/it.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/pl.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/pl.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/placeholder/lang/pl.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/simplecommands/fckplugin.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/simplecommands/fckplugin.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/simplecommands/fckplugin.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/plugins/tablecommands/fckplugin.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/plugins/tablecommands/fckplugin.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/plugins/tablecommands/fckplugin.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/skins/_fckviewstrips.html
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/skins/_fckviewstrips.html	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/skins/_fckviewstrips.html	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/skins/default/fck_dialog.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/skins/default/fck_dialog.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/skins/default/fck_dialog.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/skins/default/fck_editor.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/skins/default/fck_editor.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/skins/default/fck_editor.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_dialog.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_dialog.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_dialog.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_editor.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_editor.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/skins/office2003/fck_editor.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_dialog.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_dialog.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_dialog.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_editor.css
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_editor.css	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/editor/skins/silver/fck_editor.css	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/fckconfig.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/fckconfig.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/fckconfig.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/fckeditor.js
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/fckeditor.js	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/fckeditor.js	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/fckeditor.php
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/fckeditor.php	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/fckeditor.php	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/fckstyles.xml
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/fckstyles.xml	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/fckstyles.xml	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/fcktemplates.xml
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/fcktemplates.xml	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/fcktemplates.xml	(revision 43)
@@ -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/trunk/admin/inc/FCKeditor/htaccess.txt
===================================================================
--- /trunk/trunk/admin/inc/FCKeditor/htaccess.txt	(revision 43)
+++ /trunk/trunk/admin/inc/FCKeditor/htaccess.txt	(revision 43)
@@ -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/trunk/admin/inc/funzioni.php
===================================================================
--- /trunk/trunk/admin/inc/funzioni.php	(revision 43)
+++ /trunk/trunk/admin/inc/funzioni.php	(revision 43)
@@ -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/trunk/admin/index.php
===================================================================
--- /trunk/trunk/admin/index.php	(revision 43)
+++ /trunk/trunk/admin/index.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/aggiorna.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/aggiorna.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/aggiorna.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/backup.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/backup.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/backup.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/backup2.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/backup2.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/backup2.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/controllo_votanti.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/controllo_votanti.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/controllo_votanti.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/controllo_voti.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/controllo_voti.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/controllo_voti.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_affluenze.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_affluenze.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_affluenze.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_associazioni.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_associazioni.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_associazioni.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_candidato.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_candidato.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_candidato.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_circo.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_circo.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_circo.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_collegi.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_collegi.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_collegi.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_come.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_come.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_come.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_comuni.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_comuni.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_comuni.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_confcons.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_confcons.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_confcons.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_configurazione.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_configurazione.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_configurazione.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_cons_comuni.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_cons_comuni.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_cons_comuni.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_consiglieri.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_consiglieri.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_consiglieri.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_consultazioni.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_consultazioni.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_consultazioni.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_consultazionitipi.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_consultazionitipi.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_consultazionitipi.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_gruppo.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_gruppo.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_gruppo.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_lista.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_lista.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_lista.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_operatori.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_operatori.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_operatori.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_operatori_admin.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_operatori_admin.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_operatori_admin.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_permessi.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_permessi.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_permessi.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_pwd.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_pwd.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_pwd.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_sede.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_sede.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_sede.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_sezione.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_sezione.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_sezione.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_tipi.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_tipi.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_tipi.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_voti.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_voti.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_voti.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/ele_widget.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/ele_widget.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/ele_widget.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/foto.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/foto.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/foto.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/funzionidata.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/funzionidata.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/funzionidata.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/importa (copia).php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/importa (copia).php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/importa (copia).php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/importa.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/importa.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/importa.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/language/lang-en.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/language/lang-en.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/language/lang-en.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/language/lang-it.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/language/lang-it.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/language/lang-it.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/restore.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/restore.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/restore.php	(revision 43)
@@ -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/trunk/admin/modules/Elezioni/scarica.php
===================================================================
--- /trunk/trunk/admin/modules/Elezioni/scarica.php	(revision 43)
+++ /trunk/trunk/admin/modules/Elezioni/scarica.php	(revision 43)
@@ -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/trunk/admin/modules/index.html
===================================================================
--- /trunk/trunk/admin/modules/index.html	(revision 43)
+++ /trunk/trunk/admin/modules/index.html	(revision 43)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/trunk/admin/temi/altro/index.php
===================================================================
--- /trunk/trunk/admin/temi/altro/index.php	(revision 43)
+++ /trunk/trunk/admin/temi/altro/index.php	(revision 43)
@@ -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/trunk/admin/temi/altro/style.css
===================================================================
--- /trunk/trunk/admin/temi/altro/style.css	(revision 43)
+++ /trunk/trunk/admin/temi/altro/style.css	(revision 43)
@@ -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/trunk/admin/temi/default/index.php
===================================================================
--- /trunk/trunk/admin/temi/default/index.php	(revision 43)
+++ /trunk/trunk/admin/temi/default/index.php	(revision 43)
@@ -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/trunk/admin/temi/default/style.css
===================================================================
--- /trunk/trunk/admin/temi/default/style.css	(revision 43)
+++ /trunk/trunk/admin/temi/default/style.css	(revision 43)
@@ -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/trunk/admin/temi/facebook/index.php
===================================================================
--- /trunk/trunk/admin/temi/facebook/index.php	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/index.php	(revision 43)
@@ -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/trunk/admin/temi/facebook/menu.php
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu.php	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu.php	(revision 43)
@@ -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/trunk/admin/temi/facebook/menu/csshover.htc
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/csshover.htc	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/csshover.htc	(revision 43)
@@ -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/trunk/admin/temi/facebook/menu/iefix-htc.css
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/iefix-htc.css	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/iefix-htc.css	(revision 43)
@@ -0,0 +1,1 @@
+body { behavior:url("csshover.htc")}
Index: /trunk/trunk/admin/temi/facebook/menu/jquery-1.2.6.pack.js
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/jquery-1.2.6.pack.js	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/jquery-1.2.6.pack.js	(revision 43)
@@ -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/trunk/admin/temi/facebook/menu/jquery-dd.js
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/jquery-dd.js	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/jquery-dd.js	(revision 43)
@@ -0,0 +1,5 @@
+$(function(){
+$("#nav>li").hover(
+    function(){$("ul",this).slideDown("slow");},
+    function(){$("ul",this).css({left:"-1px"}).slideUp("fast");});
+});
Index: /trunk/trunk/admin/temi/facebook/menu/jquery-ddi.js
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/jquery-ddi.js	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/jquery-ddi.js	(revision 43)
@@ -0,0 +1,5 @@
+$(function(){
+$("#nav>li").hoverIntent(
+    function(){$("ul",this).fadeIn("slow");},
+    function(){$("ul",this).css({left:"-1px"}).fadeOut("fast");});
+});
Index: /trunk/trunk/admin/temi/facebook/menu/jquery-ddi2.js
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/jquery-ddi2.js	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/jquery-ddi2.js	(revision 43)
@@ -0,0 +1,8 @@
+$(function(){
+$("#nav>li").hoverIntent(
+    function(){$("ul",this).slideDown("slow");},
+    function(){$("ul",this).css({left:"-1px"}).slideUp('fast')});
+});
+
+
+
Index: /trunk/trunk/admin/temi/facebook/menu/jquery.hoverIntent.minified.js
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/jquery.hoverIntent.minified.js	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/jquery.hoverIntent.minified.js	(revision 43)
@@ -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/trunk/admin/temi/facebook/menu/menu-dd.css
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/menu-dd.css	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/menu-dd.css	(revision 43)
@@ -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/trunk/admin/temi/facebook/menu/suckerfish.js
===================================================================
--- /trunk/trunk/admin/temi/facebook/menu/suckerfish.js	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/menu/suckerfish.js	(revision 43)
@@ -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/trunk/admin/temi/facebook/style.css
===================================================================
--- /trunk/trunk/admin/temi/facebook/style.css	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/style.css	(revision 43)
@@ -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/trunk/admin/temi/facebook/styledefault.css
===================================================================
--- /trunk/trunk/admin/temi/facebook/styledefault.css	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/styledefault.css	(revision 43)
@@ -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/trunk/admin/temi/facebook/tema.php
===================================================================
--- /trunk/trunk/admin/temi/facebook/tema.php	(revision 43)
+++ /trunk/trunk/admin/temi/facebook/tema.php	(revision 43)
@@ -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/trunk/admin/temi/index.html
===================================================================
--- /trunk/trunk/admin/temi/index.html	(revision 43)
+++ /trunk/trunk/admin/temi/index.html	(revision 43)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/trunk/aggiornamento-2.0-20090611.sql
===================================================================
--- /trunk/trunk/aggiornamento-2.0-20090611.sql	(revision 43)
+++ /trunk/trunk/aggiornamento-2.0-20090611.sql	(revision 43)
@@ -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/trunk/client/class/charts.php
===================================================================
--- /trunk/trunk/client/class/charts.php	(revision 43)
+++ /trunk/trunk/client/class/charts.php	(revision 43)
@@ -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/trunk/client/file.php
===================================================================
--- /trunk/trunk/client/file.php	(revision 43)
+++ /trunk/trunk/client/file.php	(revision 43)
@@ -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/trunk/client/footer.php
===================================================================
--- /trunk/trunk/client/footer.php	(revision 43)
+++ /trunk/trunk/client/footer.php	(revision 43)
@@ -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/trunk/client/header.php
===================================================================
--- /trunk/trunk/client/header.php	(revision 43)
+++ /trunk/trunk/client/header.php	(revision 43)
@@ -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/trunk/client/inc/authors.php
===================================================================
--- /trunk/trunk/client/inc/authors.php	(revision 43)
+++ /trunk/trunk/client/inc/authors.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/FAQ.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/FAQ.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/FAQ.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/acceptpagebreak.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/acceptpagebreak.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/acceptpagebreak.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/addfont.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/addfont.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/addfont.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/addlink.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/addlink.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/addlink.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/addpage.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/addpage.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/addpage.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/aliasnbpages.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/aliasnbpages.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/aliasnbpages.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/cell.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/cell.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/cell.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/close.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/close.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/close.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/error.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/error.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/error.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/footer.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/footer.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/footer.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/fpdf.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/fpdf.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/fpdf.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/getstringwidth.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/getstringwidth.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/getstringwidth.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/getx.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/getx.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/getx.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/gety.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/gety.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/gety.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/header.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/header.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/header.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/image.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/image.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/image.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/index.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/index.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/index.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/line.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/line.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/line.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/link.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/link.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/link.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/ln.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/ln.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/ln.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/multicell.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/multicell.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/multicell.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/output.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/output.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/output.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/pageno.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/pageno.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/pageno.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/rect.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/rect.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/rect.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setauthor.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setauthor.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setauthor.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setautopagebreak.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setautopagebreak.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setautopagebreak.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setcompression.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setcompression.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setcompression.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setcreator.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setcreator.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setcreator.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setdisplaymode.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setdisplaymode.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setdisplaymode.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setdrawcolor.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setdrawcolor.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setdrawcolor.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setfillcolor.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setfillcolor.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setfillcolor.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setfont.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setfont.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setfont.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setfontsize.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setfontsize.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setfontsize.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setkeywords.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setkeywords.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setkeywords.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setleftmargin.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setleftmargin.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setleftmargin.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setlinewidth.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setlinewidth.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setlinewidth.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setlink.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setlink.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setlink.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setmargins.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setmargins.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setmargins.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setrightmargin.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setrightmargin.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setrightmargin.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setsubject.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setsubject.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setsubject.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/settextcolor.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/settextcolor.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/settextcolor.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/settitle.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/settitle.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/settitle.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/settopmargin.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/settopmargin.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/settopmargin.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setx.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setx.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setx.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/setxy.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/setxy.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/setxy.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/sety.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/sety.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/sety.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/text.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/text.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/text.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/doc/write.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/doc/write.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/doc/write.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/courier.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/courier.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/courier.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/helvetica.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/helvetica.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/helvetica.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/helveticab.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/helveticab.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/helveticab.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/helveticabi.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/helveticabi.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/helveticabi.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/helveticai.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/helveticai.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/helveticai.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1250.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1250.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1250.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1251.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1251.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1251.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1252.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1252.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1252.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1253.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1253.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1253.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1254.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1254.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1254.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1255.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1255.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1255.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1257.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1257.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1257.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1258.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1258.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp1258.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/cp874.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp874.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/cp874.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-1.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-1.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-1.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-11.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-11.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-11.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-15.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-15.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-15.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-16.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-16.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-16.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-2.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-2.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-2.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-4.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-4.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-4.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-5.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-5.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-5.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-7.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-7.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-7.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-9.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-9.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/iso-8859-9.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-r.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-r.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-r.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-u.map
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-u.map	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/koi8-u.map	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/makefont/makefont.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/makefont.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/makefont/makefont.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/symbol.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/symbol.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/symbol.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/times.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/times.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/times.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/timesb.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/timesb.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/timesb.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/timesbi.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/timesbi.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/timesbi.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/timesi.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/timesi.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/timesi.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/font/zapfdingbats.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/font/zapfdingbats.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/font/zapfdingbats.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/fpdf.css
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/fpdf.css	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/fpdf.css	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/fpdf.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/fpdf.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/fpdf.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/histo.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/histo.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/histo.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/install.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/install.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/install.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/license.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/license.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/license.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c1.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c1.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c1.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c2.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c2.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/20k_c2.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.afm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.afm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.afm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/calligra.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/countries.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/countries.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/countries.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/index.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/index.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/index.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/makefont.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/makefont.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/makefont.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto1.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto2.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto3.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto4.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto5.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto6.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.htm
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.htm	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.htm	(revision 43)
@@ -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/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_fpdf/tutorial/tuto7.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_mypdf/00_fpdf_codebar.class.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_mypdf/00_fpdf_codebar.class.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_mypdf/00_fpdf_codebar.class.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_mypdf/01_fpdf_bookmark.class.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_mypdf/01_fpdf_bookmark.class.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_mypdf/01_fpdf_bookmark.class.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_mypdf/02_fpdf_formulaire.class.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_mypdf/02_fpdf_formulaire.class.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_mypdf/02_fpdf_formulaire.class.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_mypdf/99_fpdf_protection.class.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_mypdf/99_fpdf_protection.class.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_mypdf/99_fpdf_protection.class.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/_mypdf/mypdf.class.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/_mypdf/mypdf.class.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/_mypdf/mypdf.class.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/html2pdf.class.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/html2pdf.class.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/html2pdf.class.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/ca.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/ca.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/ca.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/de.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/de.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/de.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/en.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/en.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/en.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/es.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/es.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/es.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/fr.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/fr.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/fr.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/it.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/it.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/it.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/nl.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/nl.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/nl.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/pt.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/pt.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/pt.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/langues/tr.txt
===================================================================
--- /trunk/trunk/client/inc/hpdf/langues/tr.txt	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/langues/tr.txt	(revision 43)
@@ -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/trunk/client/inc/hpdf/parsingHTML.class.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/parsingHTML.class.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/parsingHTML.class.php	(revision 43)
@@ -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/trunk/client/inc/hpdf/styleHTML.class.php
===================================================================
--- /trunk/trunk/client/inc/hpdf/styleHTML.class.php	(revision 43)
+++ /trunk/trunk/client/inc/hpdf/styleHTML.class.php	(revision 43)
@@ -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/trunk/client/inc/javascript.php
===================================================================
--- /trunk/trunk/client/inc/javascript.php	(revision 43)
+++ /trunk/trunk/client/inc/javascript.php	(revision 43)
@@ -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/trunk/client/index.php
===================================================================
--- /trunk/trunk/client/index.php	(revision 43)
+++ /trunk/trunk/client/index.php	(revision 43)
@@ -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/trunk/client/modules.php
===================================================================
--- /trunk/trunk/client/modules.php	(revision 43)
+++ /trunk/trunk/client/modules.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/affluenze.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/affluenze.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/affluenze.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/backup.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/backup.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/backup.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/backup2.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/backup2.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/backup2.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/00_affluenze.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/00_affluenze.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/00_affluenze.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/01_votanti.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/01_votanti.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/01_votanti.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/02_risultati.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/02_risultati.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/02_risultati.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/04_sezioni.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/04_sezioni.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/04_sezioni.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/bar_affluenze.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/bar_affluenze.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/bar_affluenze.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/bloccocand.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/bloccocand.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/bloccocand.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/bloccogen.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/bloccogen.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/bloccogen.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/bloccolink.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/bloccolink.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/bloccolink.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/bloccoref.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/bloccoref.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/bloccoref.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/gom_affluenze.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/gom_affluenze.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/gom_affluenze.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/off_Votanti.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/off_Votanti.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/off_Votanti.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/blocchi/pie_affluenze.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/blocchi/pie_affluenze.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/blocchi/pie_affluenze.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/candidato.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/candidato.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/candidato.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/confronti.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/confronti.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/confronti.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/consiglieri.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/consiglieri.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/consiglieri.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/contatti.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/contatti.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/contatti.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/crea_pagina.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/crea_pagina.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/crea_pagina.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/evvai.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/evvai.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/evvai.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/foto.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/foto.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/foto.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/funzioni.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/funzioni.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/funzioni.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/graf.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/graf.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/graf.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/affluenze_graf.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/affluenze_graf.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/affluenze_graf.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/barre.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/barre.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/barre.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/gd_image.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/gd_image.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/gd_image.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/imgdata_balls.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/imgdata_balls.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/imgdata_balls.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/imgdata_bevels.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/imgdata_bevels.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/imgdata_bevels.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/imgdata_diamonds.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/imgdata_diamonds.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/imgdata_diamonds.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/imgdata_pushpins.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/imgdata_pushpins.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/imgdata_pushpins.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/imgdata_squares.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/imgdata_squares.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/imgdata_squares.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/imgdata_stars.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/imgdata_stars.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/imgdata_stars.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpg-config.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpg-config.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpg-config.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_antispam-digits.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_antispam-digits.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_antispam-digits.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_antispam.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_antispam.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_antispam.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_bar.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_bar.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_bar.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_canvas.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_canvas.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_canvas.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_canvtools.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_canvtools.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_canvtools.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_date.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_date.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_date.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_errhandler.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_errhandler.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_errhandler.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_error.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_error.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_error.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_flags.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_flags.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_flags.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_gantt.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_gantt.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_gantt.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_gb2312.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_gb2312.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_gb2312.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_gradient.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_gradient.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_gradient.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_iconplot.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_iconplot.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_iconplot.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_imgtrans.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_imgtrans.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_imgtrans.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_led.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_led.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_led.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_legend.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_legend.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_legend.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_line.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_line.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_line.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_log.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_log.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_log.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_mgraph.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_mgraph.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_mgraph.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_pie.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_pie.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_pie.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_pie3d.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_pie3d.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_pie3d.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_plotband.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_plotband.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_plotband.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_plotmark.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_plotmark.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_plotmark.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_polar.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_polar.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_polar.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_radar.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_radar.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_radar.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_regstat.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_regstat.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_regstat.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_rgb.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_rgb.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_rgb.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_scatter.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_scatter.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_scatter.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_stock.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_stock.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_stock.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_text.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_text.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_text.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_ttf.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_ttf.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_ttf.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/jpgraph_utils.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_utils.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/jpgraph_utils.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/lang/de.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/lang/de.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/lang/de.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/lang/en.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/lang/en.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/lang/en.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/lang/prod.inc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/lang/prod.inc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/lang/prod.inc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/ledex2.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/ledex2.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/ledex2.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/raffronti.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/raffronti.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/raffronti.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/raffrontiperc.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/raffrontiperc.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/raffrontiperc.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/raffrontivoto.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/raffrontivoto.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/raffrontivoto.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/torta.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/torta.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/torta.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/votanti_graf.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/votanti_graf.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/votanti_graf.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/grafici/voti_graf.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/grafici/voti_graf.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/grafici/voti_graf.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/gruppo.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/gruppo.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/gruppo.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/images/index.html
===================================================================
--- /trunk/trunk/client/modules/Elezioni/images/index.html	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/images/index.html	(revision 43)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/trunk/client/modules/Elezioni/index.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/index.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/index.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/language/lang-en.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/language/lang-en.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/language/lang-en.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/language/lang-it.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/language/lang-it.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/language/lang-it.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/language/ori-lang-it.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/language/ori-lang-it.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/language/ori-lang-it.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/menu.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/menu.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/menu.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/rss.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/rss.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/rss.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/tema.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/tema.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/tema.php	(revision 43)
@@ -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/trunk/client/modules/Elezioni/votanti.php
===================================================================
--- /trunk/trunk/client/modules/Elezioni/votanti.php	(revision 43)
+++ /trunk/trunk/client/modules/Elezioni/votanti.php	(revision 43)
@@ -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/trunk/client/modules/index.html
===================================================================
--- /trunk/trunk/client/modules/index.html	(revision 43)
+++ /trunk/trunk/client/modules/index.html	(revision 43)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/trunk/client/pagine/chisiamo.html
===================================================================
--- /trunk/trunk/client/pagine/chisiamo.html	(revision 43)
+++ /trunk/trunk/client/pagine/chisiamo.html	(revision 43)
@@ -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/trunk/client/pagine/datigen01.html
===================================================================
--- /trunk/trunk/client/pagine/datigen01.html	(revision 43)
+++ /trunk/trunk/client/pagine/datigen01.html	(revision 43)
@@ -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/trunk/client/pagine/gruppo.html
===================================================================
--- /trunk/trunk/client/pagine/gruppo.html	(revision 43)
+++ /trunk/trunk/client/pagine/gruppo.html	(revision 43)
@@ -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/trunk/client/pagine/index.html
===================================================================
--- /trunk/trunk/client/pagine/index.html	(revision 43)
+++ /trunk/trunk/client/pagine/index.html	(revision 43)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/trunk/client/robots.txt
===================================================================
--- /trunk/trunk/client/robots.txt	(revision 43)
+++ /trunk/trunk/client/robots.txt	(revision 43)
@@ -0,0 +1,9 @@
+User-agent: *
+Disallow: admin.php
+Disallow: /admin/
+Disallow: /images/
+Disallow: /doc/
+Disallow: /pagine/
+Disallow: /temi/
+Disallow: /modules/
+
Index: /trunk/trunk/client/temi/altro/index.php
===================================================================
--- /trunk/trunk/client/temi/altro/index.php	(revision 43)
+++ /trunk/trunk/client/temi/altro/index.php	(revision 43)
@@ -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/trunk/client/temi/altro/style.css
===================================================================
--- /trunk/trunk/client/temi/altro/style.css	(revision 43)
+++ /trunk/trunk/client/temi/altro/style.css	(revision 43)
@@ -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/trunk/client/temi/blog/index.php
===================================================================
--- /trunk/trunk/client/temi/blog/index.php	(revision 43)
+++ /trunk/trunk/client/temi/blog/index.php	(revision 43)
@@ -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/trunk/client/temi/blog/style.css
===================================================================
--- /trunk/trunk/client/temi/blog/style.css	(revision 43)
+++ /trunk/trunk/client/temi/blog/style.css	(revision 43)
@@ -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/trunk/client/temi/default/index.php
===================================================================
--- /trunk/trunk/client/temi/default/index.php	(revision 43)
+++ /trunk/trunk/client/temi/default/index.php	(revision 43)
@@ -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/trunk/client/temi/default/style.css
===================================================================
--- /trunk/trunk/client/temi/default/style.css	(revision 43)
+++ /trunk/trunk/client/temi/default/style.css	(revision 43)
@@ -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/trunk/client/temi/facebook/index.php
===================================================================
--- /trunk/trunk/client/temi/facebook/index.php	(revision 43)
+++ /trunk/trunk/client/temi/facebook/index.php	(revision 43)
@@ -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/trunk/client/temi/facebook/menu.php
===================================================================
--- /trunk/trunk/client/temi/facebook/menu.php	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu.php	(revision 43)
@@ -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/trunk/client/temi/facebook/menu/csshover.htc
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/csshover.htc	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/csshover.htc	(revision 43)
@@ -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/trunk/client/temi/facebook/menu/iefix-htc.css
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/iefix-htc.css	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/iefix-htc.css	(revision 43)
@@ -0,0 +1,1 @@
+body { behavior:url("csshover.htc")}
Index: /trunk/trunk/client/temi/facebook/menu/jquery-1.2.6.pack.js
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/jquery-1.2.6.pack.js	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/jquery-1.2.6.pack.js	(revision 43)
@@ -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/trunk/client/temi/facebook/menu/jquery-dd.js
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/jquery-dd.js	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/jquery-dd.js	(revision 43)
@@ -0,0 +1,5 @@
+$(function(){
+$("#nav>li").hover(
+    function(){$("ul",this).slideDown("slow");},
+    function(){$("ul",this).css({left:"-1px"}).slideUp("fast");});
+});
Index: /trunk/trunk/client/temi/facebook/menu/jquery-ddi.js
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/jquery-ddi.js	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/jquery-ddi.js	(revision 43)
@@ -0,0 +1,5 @@
+$(function(){
+$("#nav>li").hoverIntent(
+    function(){$("ul",this).fadeIn("slow");},
+    function(){$("ul",this).css({left:"-1px"}).fadeOut("fast");});
+});
Index: /trunk/trunk/client/temi/facebook/menu/jquery-ddi2.js
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/jquery-ddi2.js	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/jquery-ddi2.js	(revision 43)
@@ -0,0 +1,8 @@
+$(function(){
+$("#nav>li").hoverIntent(
+    function(){$("ul",this).slideDown("slow");},
+    function(){$("ul",this).css({left:"-1px"}).slideUp('fast')});
+});
+
+
+
Index: /trunk/trunk/client/temi/facebook/menu/jquery.hoverIntent.minified.js
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/jquery.hoverIntent.minified.js	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/jquery.hoverIntent.minified.js	(revision 43)
@@ -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/trunk/client/temi/facebook/menu/menu-dd.css
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/menu-dd.css	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/menu-dd.css	(revision 43)
@@ -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/trunk/client/temi/facebook/menu/suckerfish.js
===================================================================
--- /trunk/trunk/client/temi/facebook/menu/suckerfish.js	(revision 43)
+++ /trunk/trunk/client/temi/facebook/menu/suckerfish.js	(revision 43)
@@ -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/trunk/client/temi/facebook/style.css
===================================================================
--- /trunk/trunk/client/temi/facebook/style.css	(revision 43)
+++ /trunk/trunk/client/temi/facebook/style.css	(revision 43)
@@ -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/trunk/client/temi/facebook/styledefault.css
===================================================================
--- /trunk/trunk/client/temi/facebook/styledefault.css	(revision 43)
+++ /trunk/trunk/client/temi/facebook/styledefault.css	(revision 43)
@@ -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/trunk/client/temi/facebook/tema.php
===================================================================
--- /trunk/trunk/client/temi/facebook/tema.php	(revision 43)
+++ /trunk/trunk/client/temi/facebook/tema.php	(revision 43)
@@ -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/trunk/client/temi/inc/button.php
===================================================================
--- /trunk/trunk/client/temi/inc/button.php	(revision 43)
+++ /trunk/trunk/client/temi/inc/button.php	(revision 43)
@@ -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/trunk/client/temi/index.html
===================================================================
--- /trunk/trunk/client/temi/index.html	(revision 43)
+++ /trunk/trunk/client/temi/index.html	(revision 43)
@@ -0,0 +1,1 @@
+ 
Index: /trunk/trunk/client/temi/language/lang_english_menu.php
===================================================================
--- /trunk/trunk/client/temi/language/lang_english_menu.php	(revision 43)
+++ /trunk/trunk/client/temi/language/lang_english_menu.php	(revision 43)
@@ -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/trunk/client/temi/language/lang_italian_menu.php
===================================================================
--- /trunk/trunk/client/temi/language/lang_italian_menu.php	(revision 43)
+++ /trunk/trunk/client/temi/language/lang_italian_menu.php	(revision 43)
@@ -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/trunk/client/temi/stylized/index.php
===================================================================
--- /trunk/trunk/client/temi/stylized/index.php	(revision 43)
+++ /trunk/trunk/client/temi/stylized/index.php	(revision 43)
@@ -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/trunk/client/temi/stylized/style.css
===================================================================
--- /trunk/trunk/client/temi/stylized/style.css	(revision 43)
+++ /trunk/trunk/client/temi/stylized/style.css	(revision 43)
@@ -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/trunk/client/temi/tour/button.php
===================================================================
--- /trunk/trunk/client/temi/tour/button.php	(revision 43)
+++ /trunk/trunk/client/temi/tour/button.php	(revision 43)
@@ -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/trunk/client/temi/tour/config.php
===================================================================
--- /trunk/trunk/client/temi/tour/config.php	(revision 43)
+++ /trunk/trunk/client/temi/tour/config.php	(revision 43)
@@ -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/trunk/client/temi/tour/index.php
===================================================================
--- /trunk/trunk/client/temi/tour/index.php	(revision 43)
+++ /trunk/trunk/client/temi/tour/index.php	(revision 43)
@@ -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/trunk/client/temi/tour/style.css
===================================================================
--- /trunk/trunk/client/temi/tour/style.css	(revision 43)
+++ /trunk/trunk/client/temi/tour/style.css	(revision 43)
@@ -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/trunk/client/temi/yellowblu/index.php
===================================================================
--- /trunk/trunk/client/temi/yellowblu/index.php	(revision 43)
+++ /trunk/trunk/client/temi/yellowblu/index.php	(revision 43)
@@ -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/trunk/client/temi/yellowblu/style.css
===================================================================
--- /trunk/trunk/client/temi/yellowblu/style.css	(revision 43)
+++ /trunk/trunk/client/temi/yellowblu/style.css	(revision 43)
@@ -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/trunk/client/versione.php
===================================================================
--- /trunk/trunk/client/versione.php	(revision 43)
+++ /trunk/trunk/client/versione.php	(revision 43)
@@ -0,0 +1,3 @@
+<?php
+$versione="pre-2.0";
+?> 
Index: /trunk/trunk/eleonline2.sql
===================================================================
--- /trunk/trunk/eleonline2.sql	(revision 43)
+++ /trunk/trunk/eleonline2.sql	(revision 43)
@@ -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/trunk/install.php
===================================================================
--- /trunk/trunk/install.php	(revision 43)
+++ /trunk/trunk/install.php	(revision 43)
@@ -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/trunk/install/common.php
===================================================================
--- /trunk/trunk/install/common.php	(revision 43)
+++ /trunk/trunk/install/common.php	(revision 43)
@@ -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/trunk/install/footer.php
===================================================================
--- /trunk/trunk/install/footer.php	(revision 43)
+++ /trunk/trunk/install/footer.php	(revision 43)
@@ -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/trunk/install/gpl.html
===================================================================
--- /trunk/trunk/install/gpl.html	(revision 43)
+++ /trunk/trunk/install/gpl.html	(revision 43)
@@ -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/trunk/install/header.php
===================================================================
--- /trunk/trunk/install/header.php	(revision 43)
+++ /trunk/trunk/install/header.php	(revision 43)
@@ -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/trunk/install/includes/database.php
===================================================================
--- /trunk/trunk/install/includes/database.php	(revision 43)
+++ /trunk/trunk/install/includes/database.php	(revision 43)
@@ -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/trunk/install/index.php
===================================================================
--- /trunk/trunk/install/index.php	(revision 43)
+++ /trunk/trunk/install/index.php	(revision 43)
@@ -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/trunk/install/install.css
===================================================================
--- /trunk/trunk/install/install.css	(revision 43)
+++ /trunk/trunk/install/install.css	(revision 43)
@@ -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/trunk/install/install.php
===================================================================
--- /trunk/trunk/install/install.php	(revision 43)
+++ /trunk/trunk/install/install.php	(revision 43)
@@ -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/trunk/install/install1.php
===================================================================
--- /trunk/trunk/install/install1.php	(revision 43)
+++ /trunk/trunk/install/install1.php	(revision 43)
@@ -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/trunk/install/install2.php
===================================================================
--- /trunk/trunk/install/install2.php	(revision 43)
+++ /trunk/trunk/install/install2.php	(revision 43)
@@ -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/trunk/install/install3.php
===================================================================
--- /trunk/trunk/install/install3.php	(revision 43)
+++ /trunk/trunk/install/install3.php	(revision 43)
@@ -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/trunk/install/install4.php
===================================================================
--- /trunk/trunk/install/install4.php	(revision 43)
+++ /trunk/trunk/install/install4.php	(revision 43)
@@ -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/trunk/install/sql/.htaccess
===================================================================
--- /trunk/trunk/install/sql/.htaccess	(revision 43)
+++ /trunk/trunk/install/sql/.htaccess	(revision 43)
@@ -0,0 +1,1 @@
+deny from all
Index: /trunk/trunk/install/sql/eleonline.sql
===================================================================
--- /trunk/trunk/install/sql/eleonline.sql	(revision 43)
+++ /trunk/trunk/install/sql/eleonline.sql	(revision 43)
@@ -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/trunk/install/version.php
===================================================================
--- /trunk/trunk/install/version.php	(revision 43)
+++ /trunk/trunk/install/version.php	(revision 43)
@@ -0,0 +1,8 @@
+<?php
+
+
+
+$version_number = "2.0 beta";
+$version = "Eleonline $version_number(Data Release: 5 giugno 2009)";
+
+?>
Index: /trunk/trunk/readme.txt
===================================================================
--- /trunk/trunk/readme.txt	(revision 43)
+++ /trunk/trunk/readme.txt	(revision 43)
@@ -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/trunk/widget.sql
===================================================================
--- /trunk/trunk/widget.sql	(revision 43)
+++ /trunk/trunk/widget.sql	(revision 43)
@@ -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
