

function playNewIpod( d,g,j,b ){
   var n=document.getElementById(j);
   if(n==null) return false;
   thi["pb"+g+d]=n.innerHTML;
   document.getElementById("pb"+g+d).style.display="none";
   setTimeout(function(){document.getElementById("sb"+g+d).style.display="inline";},3000);
   startCam(g,d);
}

var thi = new Array();
function playNew( d, g, j, b ){
   var n=document.getElementById(j);
   if(n==null) return false;
   thi["pb"+g+d]=n.innerHTML;
   document.getElementById("pb"+g+d).style.display="none";
   setTimeout(function(){document.getElementById("sb"+g+d).style.display="inline";},3000);
   um.load( function(c,m, rt, rx){
        if( c == 0 )
        n.innerHTML = rt;
        else document.location.reload();
        }, "", "lve.do?running=true&g="+g+"&d="+d );
}

function stopNew( d,g,j,b ){
   var n=document.getElementById(j);
   n.innerHTML=thi["pb"+g+d];
   document.getElementById("sb"+g+d).style.display="none";
   setTimeout(function(){document.getElementById("pb"+g+d).style.display="inline";},1000);
}

function doffline() {
    alert("This device is currently offline and cannot be controlled!");
}
function goffline() {
    alert("This location is currently offline, and cannot be controlled!");
}

function setLocation( gatewayGUID ) {
    var fields = new Array();
    fields["gguid"] = gatewayGUID;
    submitForm ( cp + '/device.do', fields );
}

function setDiscoveryLocation( gatewayGUID ) {
    var fields = new Array();
    fields["ctype"] = "noop";
    fields["gguid"] = gatewayGUID;
    submitForm ( cp + '/discovery.do', fields );
}
function setCamera( fld ) {
    var ids = fld.options[fld.selectedIndex].value;
    if( ids != "-1" ) {
        var p = ids.indexOf(",");
        var fields = new Array();
        fields["camgg"] = ids.substring(0,p);
        fields["cameraDeviceGUID"] = ids.substring(p+1);
        fields["webcamRunning"] = wc;
        submitForm ( cp + '/device.do', fields );
    } else {
        fld.form.reset();
    }
}
function snapshot() { toDev(cg,c,'1070','@0',document.i1); }
function video() { toDev(cg,c,'1070','@1',document.i2); }
function play() { sendSingleCommand(cg,c,'1040','on'); }
function toDevR(ggg, devI, oid, val, interval) {
    commandCount=20; 
    toDev(ggg,devI,oid,val,null,false);
    setTimeout( "repeat('" + ggg + "','" + devI + "','" + oid + "','" + val + "','" + interval + "')", interval );
}
function toDev( ggg, ddd, o, v, i, focusAfter ) {
    osi.src=cp+"/bg.do?ctype=q&g=" + ggg + "&d=" + ddd + "&o=" + o + "&v=" + v + "&" + new Date().getTime();
    if((typeof(focusAfter) == "undefined" || focusAfter == true) && document.all ) setTimeout( "document.body.focus()", 500 );
}

function stop() {
    sendSingleCommand(cg,c,'1040','off');
}

function editDevice( gg, dg, w, h ) {
    if(document.all) document.body.focus(); 
    createSetPop( cp+"/device/set.do?g="+gg+"&d="+dg,w,h );
    //setPop.focus();
}

function sendSingleCommand( gatewayGUID, deviceGUID, oid, val ) {
    var fields = new Array();
    fields["gguid"] = gatewayGUID;
    fields["sdg"] = deviceGUID;
    fields["oid_" + oid ] = val;
    fields["ctype"] = "queueSingleCommand";
    fields["sgg"] = gatewayGUID;
    submitForm( 'device.do', fields );
}

var wcPop = null;
var setPop = null;

function createSetPop( url, width, height ) {
    setPop = createPopup( url, "settPop", width, height );
    setPop.focus(); // compensates for focus/style 'bug'
}

function createWebcamPopup( url, name, width, height ) {
    wcPop = createPopup( url, name, width, height );
}

function popup( url, name, width, height ) {
    var settings  = '';
    if(typeof(width) != "undefined" ) {
        var winl = (screen.width-width)/2;
        var wint = (screen.height-height)/2;
        settings += 'height='+height+',';
        settings += 'width='+width+',';
        settings += 'top='+wint+',';
        settings += 'left='+winl+',';
        settings += 'scrollbars=yes,';
        settings += 'resizable=yes,';
        settings += 'status=no';
    }
    return(window.open(url,name,settings));
}

function createPopup( url, name, width, height ) {
    var settings  = '';
    if(typeof(width) != "undefined" ) {
        var winl = (screen.width-width)/2;
        var wint = (screen.height-height)/2;
        settings += 'height='+height+',';
        settings += 'width='+width+',';
        settings += 'top='+wint+',';
        settings += 'left='+winl+',';
        settings += 'scrollbars=no,';
        settings += 'resizable=yes,';
        settings += 'status=no';
    }
    return(window.open(url,name,settings));
}

function liveVideo() {
    document.location='/ces/device/cameras.do';

    if ( wcPop && !wcPop.closed ) {
        wcPop.focus();
    } else {
        createWebcamPopup('/ces/webcam.do', 'wc', 520, 360);
        wcPop.focus();
    }
}

function monitor(g,d, vr){
    if(vr==2)
        createWebcamPopup('/ces/webcam.do?running=true&g='+g+"&d="+d+"&vr="+vr, 'wc'+g+d, 840, 600);
    else
        createWebcamPopup('/ces/webcam.do?running=true&g='+g+"&d="+d+"&vr="+vr, 'wc'+g+d, 520, 360);
    wcPop.focus();
}


function detach() {
    createWebcamPopup(cp+'/webcam.do?g='+cg+'&d='+c, 'wc', 520, 360);
    setTimeout('postDetach()', 500);
}

function postDetach() {
    //createWebcamPopup(cp+'/webcam.do?g='+cg+'&d='+c, 'wc', 520, 360);
    var fields = new Array();
    fields["gguid"] = g;
    fields["cameraDeviceGUID"] = c;
    fields["camgg"] = cg;
    fields["ctype"] = "floatVideo";
    submitForm( 'device.do', fields );
}

function deviceSet( frm, gg, dd ) {
 var fields=new Array();
 var changed=false;
 for(var i=0;i< frm.elements.length;i++) {
  var el=frm.elements[i];
  var name=el.name;
  if(name.indexOf("pds")==0) {
    if(el.checked) {
        if(fields["oid_2100"]==null || fields["oid_2100"].length==0) {
          fields["oid_2100"] = "_n='"+el.value;
        }else{
          fields["oid_2100"] = fields["oid_2100"]+";"+el.value;
        }
    }else {
        if(fields["oid_2100"]==null) fields["oid_2100"] = "";
    }
    changed=true;
  }else if( name.indexOf("oid_1171")==0 || name.indexOf("oid_2050")==0 || name.indexOf("oid_2010")==0 || name.indexOf("oid_2000")==0 || name.indexOf("oid_1106")==0){
    fields[name]=el.value; changed=true;
  }else if( name.indexOf("oid_")==0 && hasChanged(el) ) {
   fields[name]=el.value;
   changed=true;
  }
 }
 if(changed){
   if(fields["oid_2100"]!=null && fields["oid_2100"].length>4) {
      fields["oid_2100"] = fields["oid_2100"]+"'";
   }
   fields["t"]=new Date().getTime();
   fields["gguid"]=gg==null?frm.g.value:gg;
   fields["settingDeviceGUID"]=dd==null?frm.d.value:dd;
   fields["ctype"]="queue";
   submitForm('device.do',fields);
 }
}

function hasChanged( element ) {
 switch( element.type ) {
  case "text":
   return element.value != element.defaultValue;
   break;
  case "password":
   return element.value != element.defaultValue;
   break;
  case "hidden":
   //will ignoree hidden fields, unless it's oid 1151 and not blank
   if(element.name != "oid_1151" || element.value == "") return false;
   return true;
  case "select-one":
   for(var j=0;j<element.options.length;j++){
     if( element.selectedIndex==j && element.options[j].defaultSelected ) return false;
   }
   return true;
   break;
  case "radio":
   return (element.checked&&!element.defaultChecked);
   break;
  default:
   //alert( element.type );
  }
}

function onWrapperUnload() {
    if ( wcPop && !wcPop.closed ) wcPop.focus();
    if ( setPop && !setPop.closed ) setPop.close();
}

commandCount=20; 
function mouseUp() {
    commandCount=0;
    if(document.all) document.body.focus();
    //setTimeout( "document.body.focus()", 500 );
}

function ptz(){
    //for the future....
}

function repeat(ggg, devI,oid,val,interval) {
   commandCount--;
   if ( commandCount > 0 ) {
     toDev(ggg,devI,oid,val,null,false);
     setTimeout( "repeat('" + ggg + "','" + devI + "','" + oid + "','" + val + "','" + interval + "')", interval );
   }
}

function armDevice(cb,di){
    updateDeviceList(g,di,"1100",cb.checked?"armed":"disarmed");
}

function updateDeviceList(ggg,ddd,o,v) {
var urlr = "/ces/bg.do?g="+ggg+"&"+(new Date().getTime());
if( ddd != null ) {
  urlr = urlr + "&ctype=q&d=" + ddd + "&o=" + o + "&v=" + v;
}
var respText = getContent(urlr);

var devices=respText.split(",/");
for( var i=0;i<devices.length;i++){
  if(devices[i].length>0){
    var d = devices[i].split(",|");
    var lid = "l"+d[0];
    var lyr = document.getElementById(lid);
    if(lyr!=null) {
        lyr.innerHTML=d[1];
        if(d[2].length>0)document.getElementById("state_"+d[0]).innerHTML=d[2];
        if(d[3].length>0)document.getElementById("icon_"+d[0]).innerHTML=d[3];
    } // else new device present ? refresh page ?
  }
}

//*/
}

function gwArm(ggg, arm, ref){
  var urlr = "/ces/bg.do?ctype=q&d=0&o=1100&v=@"+(arm?"1":"0")+"&g="+ggg+"&"+(new Date().getTime());
  var c = getContent(urlr);
  alert("It may take a few seconds to update all devices");
  if(ref) document.location.href="device.do";
}

function getContent(u){
    var req=null;
    if(typeof(ActiveXObject)=="undefined"){
      req = new XMLHttpRequest();
    } else {
      req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    req.open( "GET", u, false ); req.send( null );
    return req.responseText;
}
