// Javascript for printing OpenSprinkler modify program page
// Firmware v1.8
// All content is published under:
// Creative Commons Attribution ShareAlike 3.0 License
// Sep 2012, Rayshobby.net
function w(s) {document.writeln(s);}
function id(s){return document.getElementById(s);}
function imgstr(s) {return " ";}
// parse time
function parse_time(prefix) {
var h=parseInt(id(prefix+"h").value,10);
var m=parseInt(id(prefix+"m").value,10);
if(!(h>=0&&h<24&&m>=0&&m<60)) {alert("Error: Incorrect time input "+prefix+".");return -1;}
return h*60+m;
}
// fill time
function fill_time(prefix,idx) {
var t=prog[idx];
id(prefix+"h").value=""+((t/60>>0)/10>>0)+((t/60>>0)%10);
id(prefix+"m").value=""+((t%60)/10>>0)+((t%60)%10);
}
// check/uncheck all days
function seldays(v) {
var i;
for(i=0;i<7;i++) id("d"+i).checked=(v>0)?true:false;
}
// handle form submit
function fsubmit(f) {
var errmsg = "",days=[0,0],i,s,sid;
var en=0;
if(id("en_on").checked) en=1;
// process days
if(id("days_week").checked) {
for(i=0;i<7;i++) {if(id("d"+i).checked) {days[0] |= (1<=2&&days[1]<=128)) {alert("Error: interval days must be between 2 and 128.");return;}
days[0]=parseInt(id("drem").value,10);
if(!(days[0]>=0&&days[0]=0&&ds>=0&&ds<60&&duration>0)) {alert("Error: Incorrect duration.");return;}
// password
var p="";
if(!sd['ipas']) p=prompt("Please enter your password:","");
if(p!=null){
f.elements[0].value=p;
f.elements[1].value=pid;
f.elements[2].value="["+en+","+days[0]+","+days[1]+","+start_time+","+end_time+","+interval+","+duration;
for(i=0;i"+((pid>-1)?"Modify Program "+(pid+1):"Add a New Program")+"");
w("");
w("");
w("");
// default values
id("en_on").checked=true;
id("days_week").checked=true;id("days_norst").checked=true;
id("dn").value="3";id("drem").value="0";
id("tsh").value="06";id("tsm").value="00";id("teh").value="18";id("tem").value="00";
id("tih").value="04";id("tim").value="00";id("tdm").value="15";id("tds").value="00";
// fill in existing program values
if(pid>-1) {
if(prog[0]==0) id("en_off").checked=true;
// process days
var _days=[prog[1],prog[2]];
if((_days[0]&0x80)&&(_days[1]>1)) {
id("days_n").checked=true;
id("dn").value=_days[1];id("drem").value=_days[0]&0x7f;
} else {
id("days_week").checked=true;
for(i=0;i<7;i++) {if(_days[0]&(1<>0)/10>>0)+((t/60>>0)%10);
id("tds").value=""+((t%60)/10>>0)+((t%60)%10);
// process stations
var bits;
for(bid=0;bid