Доброго дня!
Появилась потребность вывода изображения из корпоративной столовой.
Но есть требование:
Изображение должно отображаться только с 12:00 до 15:00 и только по будним дням.
JavaScript я не знаю совсем, весь Google перерыл. Единственное что удалось раздобыть, так это вот такой код:
<SCRIPT language=JavaScript>
var timer=0;
var refreshrate=6;//
var image;
var imgwidth=640;
var imgheight=480;
var today;
var status=0;
function refresh(){
// alert("Refresh function");
today = new Date();
document.images["pic"].src=image+"?"+today;
document.all.dateLabel.innerHTML ="<br> Последнее обновление: " + today.toLocaleTimeString() + " " + today.toLocaleDateString();
//proc();
//setTimeout('refresh();', refreshrate*1000);
}
//document.write('<img src="'+image+'" height="'+imgheight+'" width="'+imgwidth+'" name="pic">');
//if(document.images) window.onload=refresh;
// if(document.images) window.onload=proc();
if(navigator.appName=="Microsoft Internet Explorer"){
document.getElementById("mainTable").style.display = "";
if(document.images) window.onload=proc;
}
else alert("Для просмотра веб-части \"Камера в столовой\" воспользуйтесь обозревателем \"Microsoft Internet Explorer\"!\n\nЕсли Вы считаете, что данное сообщение ошибочно, обратитесь к администратору портала!");
function getBeforeTime(){
//alert("GetBeforeTime");
var dDays, dHours, dMinutes, dSeconds, ost;
var flag;
var nowTime = new Date;
var openTime;
var MsgStr="";
if (nowTime.getHours()<12)
{
switch(nowTime.getDay()){
case 6: //суббота
var prevStatus = status;
status = 1;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate()+2,12,00,00,00);
image="file://1005nas/camera/switchedOff.jpg";
if(prevStatus!=status)
refresh();
break
case 0: //воскресенье
var prevStatus = status;
status = 1;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate()+1,12,00,00,00);
image="file://1005nas/camera/switchedOff.jpg";
if(prevStatus!=status)
refresh();
break
default:
var prevStatus = status;
status = 1;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate(),12,00,00,00);
image="file://1005nas/camera/switchedOff.jpg";
if(prevStatus!=status)
refresh();
}
}
if (nowTime.getHours() >= 12 && nowTime.getHours() < 15){
switch(nowTime.getDay()){
case 6: //суббота
var prevStatus = status;
status = 1;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate()+2,12,00,00,00);
image="file://1005nas/camera/switchedOff.jpg";
if(prevStatus!=status)
refresh();
break
case 0: //воскресенье
var prevStatus = status;
status = 1;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate()+1,12,00,00,00);
image="file://1005nas/camera/switchedOff.jpg";
if(prevStatus!=status)
refresh();
break
default:
status = 2;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate(),15,00,00,00);
image="file://1005nas/camera/1.jpg";
}
}
if (nowTime.getHours()>= 15){
switch(nowTime.getDay()){
case 5: //пятница
var prevStatus = status;
status = 1;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate()+3,12,00,00,00);
image="file://1005nas/camera/switchedOff.jpg";
if(prevStatus!=status)
refresh();
break
case 6: //суббота
var prevStatus = status;
status = 1;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate()+2,12,00,00,00);
image="file://1005nas/camera/switchedOff.jpg";
if(prevStatus!=status)
refresh();
break
default:
var prevStatus = status;
status = 1;
ctrlTime = new Date(nowTime.getFullYear(),nowTime.getMonth(),nowTime.getDate()+1,12,00,00,00);
image="file://1005nas/camera/switchedOff.jpg";
if(prevStatus!=status)
refresh();
}
}
//status = 0;
if (status == 0) alert ("При открытии страницы произошла ошибка!\nТаймер отсчета времени до закрытия/открытия столовой работает неправильно\nПожалуйста, обратитесь к администратору портала по номеру 0422!");
//openTime = new Date(nowTime.getFullYear(),nowTime.getMonth()+1,nowTime.getDate()+1,12,00,00,00);
//alert(nowTime.getDate());
var DTimeMs = ctrlTime - nowTime;
var DTimeSec = DTimeMs/1000;
dDays = DTimeSec/(24*60*60);
ost = DTimeSec%(24*60*60);
dHours = ost/(60*60);
ost = ost%(60*60);
dMinutes = ost/60;
dSeconds = ost%60;
if (status == 1) MsgStr += "<b>До открытия</b> столовой осталось: ";
if (status == 2) MsgStr += "<b>До закрытия</b> столовой осталось: ";
flag = 0;
if (parseInt(dDays)!=0) {
MsgStr += parseInt(dDays) + " дн. ";
flag = 1;
}
if (flag == 1) MsgStr += parseInt(dHours) + " ч ";
else if (parseInt(dHours)!=0) MsgStr += parseInt(dHours) + " ч ";
MsgStr += parseInt(dMinutes) + " мин " + parseInt(dSeconds) + " сек";
document.getElementById("beforeTimer").innerHTML = MsgStr;
//setTimeout('getBeforeTime()',2000);
}
function proc(){
getBeforeTime();
if(timer % refreshrate == 0 || timer == 0) if(status==2) refresh();
timer++;
date=new Date;
//document.getElementById("testLabel").innerHTML=timer+" "+date+"<br>";
//document.write(str);
setTimeout('proc();', 1000);
}
</SCRIPT>
Но он не работает.
Если знаете способ решения проблемы или поможете разобраться в этом коде, буду безгранично признателен! Спасибо Вам заранее!