Index: trunk/client/modules/Elezioni/consiglieri.php
===================================================================
--- trunk/client/modules/Elezioni/consiglieri.php	(revision 199)
+++ trunk/client/modules/Elezioni/consiglieri.php	(revision 220)
@@ -22,5 +22,4 @@
 if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo='';
 if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
-
 
 $result = mysql_query("select id_conf,id_fascia from ".$prefix."_ele_cons_comune where id_cons='$id_cons'", $dbi);
@@ -210,8 +209,8 @@
     if ($gruppo[$listagruppo[$lisvin]]>($validi*$infpremio/100) and $fisso==0) 
     {
-    	foreach ($groups as $key=>$val) $gruppo[$key]=$val;
-    	$groups=$gruppo; 
-    	$gruppo=array();
-    	$num_cons=$numcons;
+$seggimag[$lisvin]=number_format($numcons*($gruppo[$listagruppo[$lisvin]]*100/$validi)/100);
+echo "<br> seggimag:".$seggimag[$lisvin];
+$num_cons=number_format($numcons-$seggimag[$lisvin]);
+#    	$num_cons=$numcons;
     } else {   
 //    	$seggimag[$lisvin]=number_format($numcons*2/3);
@@ -297,9 +296,10 @@
 #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);
+		$quozienti[$y][$x]= $tmp/($x+1); ###echo "<br>[$y][$x]=".$tmp/($x+1);
 	}
 }
@@ -409,9 +409,9 @@
  */
 
-#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'];
 
+#per voti validi non si intendono i voti validi alle liste ma i voti validi espressi
 #$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_gruppo where id_cons='$id_cons'",$dbi); 
@@ -433,6 +433,14 @@
     $lists[$num_lista]=$voti;
     $groups[($num_gruppo)]+=$voti;
-  }//else $validi-=$voti; //maggio 2011: verificare questa sottrazione, non mi convince
-}    
+  }
+}   
+###################
+	$elencog=array();
+	$sindseggiopre=array();
+	foreach($groups as $testk=>$valk) if($testk!=$gruppo) {$elencog[$testk]=$valk;}
+	$testseggio=calcoloseggi($elencog,floor($numcons*(100-$suppremio)/100),0);
+	foreach($testseggio as $testk=>$valk) if($valk) {$sindseggiopre[]=$testk;}
+#foreach ($gruppomin as $key=>$val) {if (($numcons*60/100)<$val) $nopremio=0;if($key!=$gruppo){echo "<br>gruppomin: $key -- $val";}}
+##################
 $descrsind=$desgruppi[$gruppo];
 foreach ($groups as $key=>$val){
@@ -463,9 +471,12 @@
     		 $groups[$gruppo]+=$lists[$lst];
     	}
- ////maggio 2011: da qui    	
+ ////maggio 2011: da qui   
+ 
+#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;
@@ -473,5 +484,5 @@
 	$consel=array();
 	$consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
-
+$groupsappo=$groups;
 $candidati=array();
 //maggio 2011: a qui viene spostato in modo da aggiungere i voti di lista delle collegate per il perdente solo dopo aver controllato se supera il 50%, in questo modo si evita che il collegamento tra perdenti faccia decadere il premio di maggioranza se solo insieme superano il 50% 
@@ -479,5 +490,5 @@
 if(!isset($groups[$gruppoperd])) $groups[$gruppoperd]=0;
     foreach ($collperd as $lst) 
-    	if (isset($lists[$lst])){
+    	if (isset($lists[$lst])){ 
     		$oldlstgrp[$lst]=$listagruppo[$lst];
     		 $listagruppo[$lst]=$gruppoperd;
@@ -489,10 +500,14 @@
 ////maggio 2011: a qui (mettendolo dopo Ãš come se l'avessi tolto ma possono esserci altre implicazioni visto che si modificano le percentuali del gruppo, cosÃ¬ per ora non lo tolgo) 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
-
-
-if ($premio) { 
+if ($premio) {
+#########
+################### nell'array sindseggio vengono inseriti i candidati sindaco che restano senza seggio per gli apparentamenti
+	$elencog=array();
+	$testseggio=array();
+	$sindseggio=array();
+	foreach($groups as $testk=>$valk) if($testk!=$gruppo) {$elencog[$testk]=$valk;}
+	$testseggio=calcoloseggi($elencog,floor($numcons*(100-$suppremio)/100),0);
+	foreach($sindseggiopre as $testk=>$valk) {if(!$testseggio[$valk]) $sindseggio[$valk]=$valk;}
+########### 
     $sindaco[$gruppo]=$groups[$gruppo]; $groups[$gruppo]=0;
     $gruppomag=calcoloseggi($sindaco,ceil($numcons*$suppremio/100),0);
@@ -518,10 +533,33 @@
 		$z++;
 	}
-#foreach ($groups as $key=>$val)echo "           key: $key : val : $val<br/>";
 	$seggimag=array();
+	$x=0;
+#####25 maggio 2014 - il candidato sindaco non eletto ha diritto al seggio anche se di maggioranza
+### individua ultimi seggi assegnati a liste collegate
+	$listdec =array();
+	$seggitmp=calcoloseggi($listemag,$val,1);
+	foreach ($seggitmp as $keyl=>$vall){ #echo "<br>sindseggio: $key - $val";
+#	foreach ($sindseggio as $key=>$val){
+		if (in_array($keyl,$collegate) and ! isset($tempo[$keyl])) $tempo[$keyl]=number_format($quozienti[$keyl][$vall-1],2);
+#		echo "<br>lista:$key";
+		$res = mysql_query("SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$keyl' and id_cons='$id_cons'",$dbi);
+		list($tempig)=mysql_fetch_row($res);
+		$res = mysql_query("SELECT num_gruppo from ".$prefix."_ele_gruppo where id_gruppo='$tempig' and id_cons='$id_cons'",$dbi);
+		list($tempng)=mysql_fetch_row($res);
+		if (in_array($tempng,$sindseggio)) $listdec[]=$keyl;
+}
+
+		/*		while(){
+			if(isset($tempo[$tempnl])) echo "<br> tempnl: $tempnl -- key:$key".$tempo[$key];
+		}
+*/
+##########
 	$seggimag=calcoloseggi($listemag,$val,1);
-	$x=0;
+
 	foreach ($seggimag as $key=>$val){
-		for ($z=0;$z<$val;$z++){
+	## condizione per esclusione di un seggio da destinare al sindaco non eletto
+		if(in_array($key,$listdec)) $val--;
+	## fine condizione - impostare variabile in db per differenziare il comportamento per consultazioni diverse
+		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
@@ -539,5 +577,4 @@
 if ($premio) $consmin=floor($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   
@@ -579,8 +616,11 @@
 	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];
+		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]);
@@ -594,17 +634,19 @@
 	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(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;
+}
 		if($val==0){
 		if($ultimo==''){
 			foreach($oldlists as $lst=>$vot)
-			{		
+			{
+if (!isset($quozienti[$lst][($val)])) $quozienti[$lst][($val)]=$vot;
 				if ($oldlstgrp[$lst]!= $key or !isset($oldseggi[$lst]) or $oldseggi[$lst]==0) continue;
-				if($ultimo=='') $ultimo=$lst;	
-				if($quozienti[$ultimo][($val-1)]==$last[$lst]) 
+				if($ultimo=='') $ultimo=$lst;
+				if($quozienti[$ultimo][($val)]==$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="";}
+	 			if ($quozienti[$ultimo][($val)]> $last[$lst]) {$ultimo=$lst;$mex="";}
 			}$lst=$ultimo;
 		if($ultimo and $consin){
@@ -619,4 +661,10 @@
 	}
 #if($key!=$gruppo){
+###############
+#foreach($collegate
+	foreach ($seggimin as $lista=>$val){
+		if($ultimo==$lista and $key!=$gruppo and $consin) $val--; 
+	}
+################
 	foreach ($seggimin as $lista=>$val){
 		if($ultimo==$lista and $key!=$gruppo and $consin) $val--; 
@@ -630,8 +678,10 @@
 			$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);
+########
+#		echo "<br>".$tt[$lista]." arper --- $gruppo --$ultimo--$key--".$arper[$lista][0];
 			}
 		}
 	if (isset($oldlists[$lista]))
-	{
+	{ 
 		$tt[$lista]=(count($conselb)-1);
 		if($z) $last[$lista]=$quozienti[$lista][($z-1)]; else $last[$lista]=0;
@@ -674,4 +724,8 @@
 		}
 	}
+#### condizione di aggiunta candidato sindaco non eletto in elenco consiglieri	
+	foreach($sindseggio as $key=>$val) 	if ($consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];}
+####
+
 	
 	if (isset($conselsin)) foreach($conselsin as $key=>$val) 
@@ -689,4 +743,5 @@
 		$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);
