<?php
// el motor rpc ya esta desactivado..
//delay(1);
require('startinclude.php');
$camara=parametro('camara', 0);
obtener_login_nivel ($nivel_usuario);
$totalcamaras=0;
//sleep(5);
$camaras_actual=array();
$camaras_item_actual=array();
$camaras=array();
$camaras_estado=array();
$camaras_item=array();
leer_camaras ($camaras);
leer_camaras_estado(); // camaras_estado
leer_camaras_item ($camaras_item);
leer_camaras_actual ($camaras_actual);
leer_camaras_item_actual ($camaras_item_actual);
$totalcamaras=count($camaras);
$totalcamaras_item=count($camaras_item);
$id_sensor=array();     // id del sensor
$temp=array();          // temperaturas.
$limite=array();        // limite temperaturas.
$estado_window=array(); // estado visual de cada window.
function jelemento($ventana, $elemento, $htm) {
    $tmp="if (imarco.contentWindow.document.getElementById('$elemento')) { ";
    $tmp.="imarco.contentWindow.document.getElementById('$elemento').innerHTML='$htm';";
    $tmp.=" } \n";
    return $tmp;
}
function jelementovalor($ventana, $elemento, $htm) {
    $tmp="if (imarco.contentWindow.document.getElementById('$elemento')) { ";
    $tmp.="imarco.contentWindow.document.getElementById('$elemento').value='$htm';";
    $tmp.=" } \n";
    return $tmp;
}
function jelementolocal($elemento, $htm) {
    // elemento local (siempre esta en cualquier estado)
    $tmp=" if (document.getElementById('$elemento')) { ";
    $tmp.=" if (document.getElementById('$elemento').innerHTML!='" . trim($htm) . "') { ";
    $tmp.="document.getElementById('$elemento').innerHTML='" . trim($htm) . "'; } }\n";
    return $tmp;
}
function jelementolocalsrc($elemento, $src) {
    // elemento local (siempre esta en cualquier estado)
    // no vamos a cambiar si el valor sigue siendo el mismo :-)
    $tmp=" if (document.getElementById('$elemento').src!='$src') { ";
    $tmp.="document.getElementById('$elemento').src='$src';  }\n";
    return $tmp;
}
function jelementosuperiorsrc($elemento, $src) {
    // elemento local (siempre esta en cualquier estado)
    // no vamos a cambiar si el valor sigue siendo el mismo :-)
    $tmp=" if (framesuperior.document.getElementById('$elemento').src!='$src') { ";
    $tmp.="framesuperior.document.getElementById('$elemento').src='$src';  }\n";
    return $tmp;
}
function jelementosuperiortitle($elemento, $src) {
    // elemento local (siempre esta en cualquier estado)
    // no vamos a cambiar si el valor sigue siendo el mismo :-)
    $tmp="framesuperior.document.getElementById('$elemento').title='$src';\n";
    return $tmp;
}
function jelementolocalclase($elemento, $clase) {
    // elemento local (siempre esta en cualquier estado)
    // no vamos a cambiar si el valor sigue siendo el mismo :-)
    $tmp=" if (document.getElementById('$elemento').className!='$clase') { ";
    $tmp.="document.getElementById('$elemento').className='$clase';  }\n";
    return $tmp;
}
function jcondicion($ventana, $elemento) {
    // inicio de un bloque condicional (para velocidad)
    $tmp="if (imarco.contentWindow.document.getElementById('$elemento')) { \n";
    return $tmp;
}
function jcondicionfin($ventana, $elemento) {
    // fin de un bloque condicional (para velocidad)
    $tmp="} \n";
    return $tmp;
}
function jclase($ventana, $elemento, $clase) {
    // clase de un elemento de la ventana.
    $tmp="if (imarco.contentWindow.document.getElementById('$elemento')) { ";
    $tmp.="   imarco.contentWindow.document.getElementById('$elemento').className='$clase';";
    $tmp.=" } \n";
    return $tmp;
}
function jclasefst($ventana, $elemento, $clase) {
    // clase de un elemento de la ventana (sin verificacion = rapido) , usado en conjunto con jcondicion
    $tmp="   imarco.contentWindow.document.getElementById('$elemento').className='$clase';\n";
    return $tmp;
}
function generaralarma($gen_alarma_camara=0, $gen_alarma_num_sensor=0, $tipo=0) {
    @$ultimaalarma=$_SESSION["ultimaalarma" . $gen_alarma_camara];
    $ahora=mktime();
    // toco la alarma cada 160 segundos.
    if ($ahora - $ultimaalarma > 600) {
        echo
            "if (framesuperior.document.getElementById('layermensaje').style.visibility!='visible' ) { \n"; // si no se esta viendo la pantalla entonces primero la cargamos.
        echo
            "    framesuperior.modiframe('wmensaje.php?camara=$gen_alarma_camara&num_sensor=$gen_alarma_num_sensor&tipo=$tipo'); \n";
        echo "	  framesuperior.document.getElementById('layermensaje').style.visibility='visible'; \n";
        echo "     frameoculto=1;";
        echo "     hideFrame();";
        echo " } \n";
        echo "alertaactiva=1; \n";
        echo "soundManager.play('beep'); \n";
        $_SESSION["ultimaalarma" . $gen_alarma_camara]=$ahora;
    } else {
    //echo "alert('".($ahora-$ultimaalarma)."');";
    }
    $_SESSION["alarmaactiva"]=1;
}
function deteneralarma() {
    @$activa=$_SESSION["alarmaactiva"];
    if ($activa == 1) {
        echo "soundManager.stop('beep');";
        echo "if (alertaactiva==1) framesuperior.document.getElementById('layermensaje').style.visibility='hidden' ; ";
        echo "alertaactiva=0;";
        $_SESSION["alarmaactiva"]=0;
    }
}
$gen_alarma=0;
$gen_alarma_camara=0;
$gen_alarma_num_sensor=0;
$realizar_cambios_forzado=0;
$nomk="";
leer_ultima_fecha_vb($ultima_fecha_seg, $nomk, 1);
$ultima_fecha=floor($ultima_fecha_seg / 60);
$realizar_cambio=0;
if (@$_SESSION["refreshpage"] != $nomk) {
    $realizar_cambio=1;
    $_SESSION["refreshpage"]=$nomk;
}
//		echo "alert('".(epochnow()-$ultima_fecha)."');";
$pasado=$ultima_fecha_seg;
$pasado=($pasado < 60)
    ? $pasado . " Seg." : (($pasado < 360) ? floor($pasado / 60) . " Min." : floor($pasado / 3600) . " Horas");
echo jelementosuperiortitle("sensor", "Ultima lectura hace " . $pasado);
if (!$realizar_cambio) {
    @$_SESSION["refreshfalla"]++;
    // si el motor esta out entonces de 4 valores leo solamente 1. (aprox 37 segundos).
    if ($_SESSION["refreshfalla"] >= 10) {
        //$_SESSION["refreshpage"]=0;
        $realizar_cambio=1;
        $realizar_cambios_forzado=1;
    }
}
if ($realizar_cambio) {
    $_SESSION["refreshfalla"]=0;
    for ($i=0; $i < $totalcamaras; $i++) {
        $inuevo=-1;
        for ($ix=0; $ix < $total_ventanas; $ix++) {
            $iuniquev=$_SERVER['REMOTE_ADDR'] . "_pf_" . $ix;
            if ($i == apc_fetch($iuniquev)) {
                $inuevo=$ix;
                break;
            }
        }
        if (isset($_COOKIE["estado_camara" . $i])) { $estado_window[$i]=$_COOKIE["estado_camara" . $i]; }
        else { $estado_window[$i]='off'; }
        //leer_temperatura(&$t,$i,&$maxima,&$minima,&$estado,&$nombre_sensor,&$num_temp,&$limite);
        if ($camaras_actual[$i]["estado_actual"] != "V")
            { leer_temperatura2(&$temp, $i, $camaras_actual[$i]["proceso_actual"], 5, 1); }
        else { leer_temperatura2(&$temp, $i, 0, 5, 1); }
        echo jelementolocal('caming_titulo' . $i, "<b>" . $camaras[$i]["nombre_camara"] . "</b>");
        //echo jelementolocal('caming_titulo'.$i,"<b>".time()."</b>");
        $estado_proceso=$camaras_actual[$i]['estado_actual'];
        if (($estado_proceso != "P" and $estado_proceso != "H"))
            { $estado_actual=4; // la camara esta en estado libre, sin importar los errores.
        }
        else { $estado_actual=$temp["estado"];
        //echo "alert('$estado_actual');";
        }
		if (@$camaras[$i]["tipo_camara"]=="PREF") {
			echo jelementolocalsrc('caming_image' . $i, cnv_estado_caming($estado_actual, $camaras[$i]['posicion_puerta']));
			
			if ($estado_actual != 0 and $estado_actual != 4) {
				$gen_alarma=1;
				$gen_alarma_camara=$i;
				$gen_alarma_num_sensor=$temp["num_temp_error"];
			//echo "alert('ok');";
			// echo "alert('$estado_actual');";
			}
			
			switch ($estado_proceso)
				{
				case 'P':
					if ($estado_actual != 0) {
						$texto="<p align='center'><img src='images/iconos/warning.gif'/></p><b>"
							. $camaras[$i]["nombre_camara"] . "</b> en proceso con errores. <br>";
						$texto.="Proceso Actual :" . $camaras_actual[$i]["proceso_actual"] . "<br>";
						$texto.="Sensor Error   :" . $temp["num_temp_error"] . "<br>";
					} else {
						$texto="<p align='center'><img src='images/iconos/media_play.gif'/></p><b>"
							. $camaras[$i]["nombre_camara"] . "</b> en proceso. <br>";
						$texto.="Proceso Actual :" . $camaras_actual[$i]["proceso_actual"] . "<br>";
					}
					echo "mensaje$i=\"$texto \";";
					break;
				case 'H':
					if ($estado_actual != 0) {
						$texto="<p align='center'><img src='images/iconos/warning.gif'/></p><b>"
							. $camaras[$i]["nombre_camara"] . "</b> detenido con errores. <br>";
						$texto.="Proceso Actual :" . $camaras_actual[$i]["proceso_actual"] . "<br>";
						$texto.="Sensor Error   :" . $temp["num_temp_error"] . "<br>";
					} else {
						$texto="<p align='center'><img src='images/iconos/media_pause.gif'/></p><b>"
							. $camaras[$i]["nombre_camara"] . "</b> detenido. <br>";
						$texto.="Proceso Actual :" . $camaras_actual[$i]["proceso_actual"] . "<br>";
					}
					echo "mensaje$i=\"$texto \";";
					break;
					default:
					$texto="<p align='center'><img src='images/iconos/media_stop.gif'/></p><b>".$camaras[$i]["nombre_camara"]."</b> libre para ser usado <br>";
					$texto.="Temperatura Minima :" . $temp['minima_v'] . "<br>";
					$texto.="Temperatura Maxima :" . $temp['maxima_v'] . "<br>";
					echo "mensaje$i=\"$texto \";";
					break;
				}
			if ($inuevo != -1) {
				echo
					"imarco=document.getElementById('iventana$inuevo').contentWindow.document.getElementById('iframe2');\n";
			} else {
				echo "imarco=null;\n";
			}
		}
        if (($ultima_fecha_seg) > 180) {
            // 3 minutos
            $gen_alarma=2;
            echo jelementosuperiorsrc("sensor", "img/modulos_rojo.png");
        } else {
            echo jelementosuperiorsrc("sensor", "img/modulos.png");
        }
        $estado_error=0;
        for ($e=0; $e < $temp["num_temp"]; $e++) {
			if ($temp[$e]["lecturadirtipo"]==1) {
				$valor=$temp[$e]["t"];
				$clase="black";
				if ($e == $temp["minima"]) {
					if ($estado_actual != 0 and $estado_actual != 4)
						$clase="#0000C0";
					else
						$clase="#000050";
				}
				if ($e == $temp["maxima"]) { $clase="#007000"; }
				if ($temp[$e]["t"] == -55.5) {
					if ($estado_actual != 0 and $estado_actual != 4)
						$clase="#703030";
					else
						$clase="#ff3030";
					$valor="nc";
				}
				if ($temp[$e]["t"] == -66.6) {
					$clase="silver";
					$valor="OUT";
				}
			} 
			if ($temp[$e]["lecturadirtipo"]==2) {
				$valor=($temp[$e]["t"]==25.6)?"ON":"OFF";
				$clase="black";
			}
			if ($temp[$e]["lecturadirtipo"]==2049) {
				$vrota=$camaras[$i]["rotacion_valor"]-1;
				$valorr=$temp[$e]["t"];
				$valor="--";
				$valor=((pow(2,$vrota) & $valorr ) !=0)?"DE":$valor;
				$valor=((pow(2,$vrota+1) & $valorr ) !=0)?"IZ":$valor;						
			}					
			
            if ($temp[$e]["tipo_escala"] >= 5) {
                echo jelementolocal('c' . $i . "_" . $e,
                    "<font color=$clase style=\"background-color:#d0d0d0\" >$valor</font>");
            } else {
                echo jelementolocal('c' . $i . "_" . $e, "<font color=$clase>$valor</font>");
            }
        }
        echo "if (imarco) { \n";
		$valor="";
        switch ($estado_window[$i])
            {
			
            case 'normal':
				//echo "alert('".$temp['minima']."');";
				if (@$camaras[$i]["tipo_camara"]=="PREF" ) {
					
					echo jelemento($i, 'celmin', (@$temp['minima_v']) . "(" . @$temp[@$temp['minima']]["nombre"] . ")");
					echo jelemento($i, 'celmax', (@$temp['maxima_v']) . "(" . @$temp[@$temp['maxima']]["nombre"] . ")");
					echo jelemento($i, 'celestado', $a_estado[$estado_actual]);
				}
                break;
            case 'sensor':
                //echo jclase($i,'valor0',"alerta");
				
                for ($e=0; $e < $temp["num_temp"]; $e++) {
					$valor="";
					if ($temp[$e]["lecturadirtipo"]==1) {
						$valor=$temp[$e]["t"];
					}
					if ($temp[$e]["lecturadirtipo"]==2) {
						$valor=($temp[$e]["t"]==25.6)?"ON":"OFF";
					}
					if ($temp[$e]["lecturadirtipo"]==2049) {
						$vrota=$camaras[$i]["rotacion_valor"]-1;
						$valorr=$temp[$e]["t"];
						$valor="--";
						$valor=((pow(2,$vrota) & $valorr ) !=0)?"DE":$valor;
						$valor=((pow(2,$vrota+1) & $valorr ) !=0)?"IZ":$valor;						
					}					
					
                    $clase="ok";
                    if ($temp[$e]["estado"]) {
                        $clase="alerta";
                        //$valor="--";
                        $estado_error=1;
						
									
						
                    }
                    if ($temp[$e]["t"] == -55.5 and $temp[$e]["lecturadirtipo"]==1) {
                        $clase="alerta";
						@$camaras[$i]['alerta'].=$temp[$e]["nombre"]." C<br>";
                        $valor="nc";
                    }
                    if ($temp[$e]["t"] == -66.6) {
                        $clase="offline";
                        $valor="OUT";
                    }
					
                    echo jcondicion($i, 'celnombre' . $e);
                    if ($nivel_usuario > 1) {
                        echo jclasefst($i, 'idmodulo' . $e, $clase);
                    }
                    echo jclasefst($i, 'celnombre' . $e, $clase);
                    echo jclasefst($i, 'valor' . $e, $clase);
                    echo jclasefst($i, 'chk' . $e, $clase);
                    echo jclasefst($i, 'minima' . $e, $clase);
                    echo jclasefst($i, 'maxima' . $e, $clase);
                    echo jclasefst($i, 'minmax' . $e, $clase);
                    echo jcondicionfin($i, 'celnombre' . $e);
                    echo jelemento($i, 'valor' . $e, $valor);
                }
                break;
            default: break;
            }
			
        if ($inuevo != -1) {
			
		    // gestion de errores.
            echo jelementolocalclase("spWin" . $inuevo . "Container", cnv_estado_window($estado_actual));
		}
		
		if ($estado_actual!=$camaras_estado[$i]["actual"] and $estado_actual!=4 and ($estado_actual==0 or $estado_actual==3)) {
			
			if ($camaras[$i]['lecturadirmodulo']!=0) {
				// $camaras_estado[$i]["actual"]=($estado_actual != 0 and $estado_actual != 4)?1:0;	
				
				//if ($camaras_estado[$i]["anterior"]!=$camaras_estado[$i]["actual"]) {
					$v2=@$camaras[$i]['lectura_valor']+0;
					
					if ($v2>0) {
						
						if ($estado_actual==3) { //  $camaras_estado[$i]["actual"]==1
							$v2=$v2-1;
							$valorn=pow(2, $v2) + (pow(2 , (8+ $v2)));
						} else {
							$v2=$v2-1;
							$valorn=(pow(2 , $v2));
						}
						$sql="insert into MOTORESCRITURAS(EscrituraDirModulo, EscrituraDirMemoria, EscrituraValor, EscrituraError) ";
						// 2049
						$sql.="values (".$camaras[$i]['lecturadirmodulo'].",".$camaras[$i]["lecturadirtipo"].",$valorn,1);	"; // = 1 es intento no error.
						ejecutarsql($sql,&$filas,&$resultado);
						@$basura.=$i."-".$estado_actual."-".$camaras_estado[$i]["actual"]."-";
						
						apc_store("aaaa",$basura);
						
						//$camaras_estado[$i]["actual"]=44;
					}					
					$camaras_estado[$i]["anterior"]=$camaras_estado[$i]["actual"];
					$camaras_estado[$i]["actual"]=$estado_actual;
				//}
			}			
        }
        echo "}\n";
    } // for i
	
	apc_store("camaras_estado",$camaras_estado);
	
    for ($i=0; $i < $totalcamaras_item; $i++) {
        // si sensor ocurre algo entonces.. podemos enviar una seņal y cambiar la imagen.
        $num=$camaras_item[$i]["id_item"];
        switch ($camaras_item[$i]["tipo_item"])
            {
            case "ALARMA":
                // if alarma
                // $camaras_item_actual
                $texto="<p align='center'><img src='images/iconos/media_play.gif'/></p><b>"
                    . $camaras_item[$i]["nombre_item"] . "</b> con una alarma<br>";
                $texto.="Sensor :<br>";
				$texto.=@$camaras[$camaras_item[$i]["id_camara"]]['alerta'];
                echo "mensaje_item$num=\"$texto \";";
                $src="images/iconos/unknown.gif";
                echo jelementolocalsrc("caming_imageitem" . $num, $src);
                break;
            case "SOMETHING":
                leer_temperatura_item2(&$celsius_item, $i, 5, 1);
                break;
            }
    }
    if ($gen_alarma) { generaralarma($gen_alarma_camara, $gen_alarma_num_sensor, $gen_alarma - 1); }
    else { deteneralarma(); }
    $k=mktime() + 5; // sumamos 5 segundos ya que como es asyncronico :-P
    $hora1=date("H", $k);
    $hora2=date("i", $k);
    $hora3=date("s", $k);
    $horatotal=$hora1 . "|" . $hora2 . "|" . $hora3;
    $horatotaljs=$hora1 . ":" . $hora2 . ":" . $hora3;
    if ($realizar_cambios_forzado) { $horatotaljs="<font color=red>$horatotaljs</font>"; }
    echo "resultadojs = '$horatotaljs';\n";
}                // for realizar cambios
$k=mktime() + 5; // sumamos 5 segundos ya que como es asyncronico :-P
$hora1=date("H", $k);
$hora2=date("i", $k);
$hora3=date("s", $k);
$horatotal=$hora1 . "|" . $hora2 . "|" . $hora3;
echo "resultadoajax = '$horatotal';\n";
//echo "};";
//echo "activar();\n";
// document.getElementById('spWin0Container').className='spWinSilverxpContainer';
?>