//display version var VIEW_VERSION = "v.1.0.9" //delay in miliseconds after post response var responseDelay = 50000; //directory path var port = location.port; var file_path = ":" + port + "/"; var postUrl = "cgi-bin/cgi_bin/"; var uploadURL= "cgi-bin/cgi_bin_upload/"; //var file_path = "/view/"; //var postUrl = "postRequest2.php"; //var uploadURL= "postRequest2.php"; var isExtExsit = "1"; //supported file extentions of version update var version_supported_extention = new Array("tgz","tgz"); var xmlpost = false; var xmlget = false; var alldata = ""; var isStart = true; var isStartID = true; var portCount=2; var portNum = 1; //xmlget try { xmlget = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlget = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlget = false; } } if (!xmlget && typeof XMLHttpRequest != 'undefined') { try { xmlget = new XMLHttpRequest(); } catch (e) { xmlget = false; } } if (!xmlget && window.createRequest) { try { xmlget = window.createRequest(); } catch (e) { xmlget = false; } } //xmlpost try { xmlpost = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlpost = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlpost = false; } } if (!xmlpost && typeof XMLHttpRequest != 'undefined') { try { xmlpost = new XMLHttpRequest(); } catch (e) { xmlpost = false; } } if (!xmlpost && window.createRequest) { try { xmlpost = window.createRequest(); } catch (e) { xmlpost = false; } } function start() { LockAll(); doViewRequest(); } //amir function doViewRequest() { doGetRequest("http://" + document.domain + file_path + "config.ini", handleView); } function doIDRequest() { doGetRequest("http://" + document.domain + file_path + "ID.ini", handleID); } function getExtChannel(){ doGetRequest("http://" + document.domain + file_path + "ext_chan.ini", handleExtChannel); document.forms["formView"]["viewMsg"].value = "DVISn Loaded Successfully"; UnLockAll(); } function handleExtChannel() { var responseData = checkRequestStatus(); if (responseData == null) return; responseData = responseData.split("\n").join(""); var isExt = responseData.split("=")[1]; isExtExsit = isExt; var frm = document.formView; if(isExt=="0"){ frm["Prog_EnabledB"].checked = false; frm["Prog_EnabledB"].disabled = true; frm["Video_StandardB"].disabled = true; frm["Video_RateB"].disabled = true; frm["Video_ResolutionB"].disabled = true; frm["BrightnessB"].disabled = true; frm["ContrastB"].disabled = true; frm["SaturationB"].disabled = true; frm["Audio_CodecB"].disabled = true; frm["Audio_RateB"].disabled = true; frm["Prog_NumberB"].disabled = true; frm["Video_Pid_NumberB"].disabled = true; frm["Audio_Pid_NumberB"].disabled = true; frm["Pcr_Pid_NumberB"].disabled = true; frm["Pmt_Pid_NumberB"].disabled = true; frm["Vsync_Lock_EnableB"].disabled = true; } } function doGetRequest(url, callback) { xmlget.open("GET", url + "?" + new Date().getTime(), true); //register function to onReadyStateChange event if (callback == null) { document.forms["formView"]["viewMsg"].value = "callback is null"; alert("callback is null"); UnLockAll(); } else xmlget.onreadystatechange = callback; //send the request xmlget.send(null); } function GetPorts(str, pn) { var tmpObj = new Object(); var tmpArr = str.split("\n"); var check = false; var count = 1; for (var i = 0; i < tmpArr.length; i++) { if (tmpArr[i] == ("[Program_" + pn + "]")) { check = true; } else if (!check) continue; else if (tmpArr[i].charAt(0) == "#" || tmpArr[i].charAt(0) == "[" || tmpArr[i].length < 3) { if (tmpArr[i].charAt(0) == "[") { i = tmpArr.length; check = false; } else continue; } else { tmpObj[tmpArr[i].split("=")[0]] = tmpArr[i].split("=")[1]; } } return tmpObj; } function doParse(str) { var tmpObj = new Object(); var tmpArr = str.split("\n"); for (var i = 0; i < tmpArr.length; i++) { if (tmpArr[i].charAt(0) == "#" || tmpArr[i].charAt(0) == "[" || tmpArr[i].length < 3) continue; tmpObj[tmpArr[i].split("=")[0]] = tmpArr[i].split("=")[1]; } return tmpObj; } function handleView() { unMarkAll(); var responseData = checkRequestStatus(); var dhcp = false; var qam = false; if (responseData == null) return; alldata = responseData; var viewData = new Object(); viewData = doParse(responseData); for (var obj in viewData) { try { if (document.forms["formView"][obj].name == "AV") continue; else if (document.forms["formView"][obj].type == "checkbox") { if (obj == "DHCP_Enable" && viewData[obj] == 1) dhcp = true; document.forms["formView"][obj].checked = eval(viewData[obj]); } else { if (obj == "Qam_Mode" && viewData[obj] == 256) qam = true; document.forms["formView"][obj].value = viewData[obj]; } } catch (e) { } } handleAV(); dhcpHandle(dhcp); qamHandle(qam); } function handleAV() { var responseDataAV = alldata; if (responseDataAV == null) return; var viewDataAV = new Object(); while (portNum - 1 < portCount) { viewDataAV = GetPorts(responseDataAV, portNum - 1); for (var objAV in viewDataAV) { try { if (portNum == 1) { if (document.forms["formView"][objAV].type == "checkbox") document.forms["formView"][objAV].checked = eval(viewDataAV[objAV]); else document.forms["formView"][objAV].value = viewDataAV[objAV]; if (objAV == "Video_Standard") resHandle(viewDataAV[objAV], ""); } else { if (document.forms["formView"][objAV + "B"].type == "checkbox") document.forms["formView"][objAV + "B"].checked = eval(viewDataAV[objAV]); else document.forms["formView"][objAV + "B"].value = viewDataAV[objAV]; if (objAV == "Video_Standard") resHandle(viewDataAV[objAV], "B"); } } catch (e) { } } portNum++; } portNum = 1; if (isStartID) { isStartID = false; doIDRequest(); } else { document.forms["formView"]["viewMsg"].value = "DVISn Loaded Successfully"; //alert("DVISn Loaded Successfully"); UnLockAll(); } } function handleID() { var responseDataID = checkRequestStatus(); if (responseDataID == null) return; var viewDataID = new Object(); viewDataID = doParse(responseDataID); for (var objID in viewDataID) { try { document.forms["formInfo"][objID].value = viewDataID[objID]; } catch (e) { } } doCallBackPostRequest(postUrl +"?get_ver", "",handleGetVersion) } function handleGetVersion(){ var responseDataID = checkPostRequestStatus(); if (responseDataID == null || responseDataID == "") return; document.getElementById("SW_Version").value = responseDataID; getExtChannel(); } function sendNew(net) { LockAll(); var validate = true; var frm = document.forms["formView"]; var obj = ""; for (var i = 0; i < frm.elements.length; i++) { obj = frm.elements[i]; if (obj.id == "viewMsg") continue; else if (obj.type == "text") { if (obj.id == "viewMsg") continue; if (obj.id == "SW_Version") continue; if (IsEmpty(obj)) { mark(obj); validate = false; } else if (NotNumbers(obj, obj.name == "Network")) { mark(obj); validate = false; } else if (OverChars(obj)) { mark(obj); validate = false; } else unMark(obj); } } if (!validate) { document.forms["formView"]["viewMsg"].value = "Correct entries in highlighted fields."; alert("Correct entries in highlighted fields."); UnLockAll(); return false; } unMarkAll(); var url = ""; if (net) url = postUrl+"?SetNetwork"; else url = postUrl+"?SetParams"; var data = GetString(); doCallBackPostRequest(url, data,handleSubmitAll); } function handleSubmitAll(){ var responseData = checkPostRequestStatus(); if(responseData == null) return; setTimeout('document.forms["formView"]["viewMsg"].value = "DVISn Settings Successfully Updated";UnLockAll();',responseDelay) } function doCallBackPostRequest(url, data,callback) { xmlpost.open("POST", url, true); xmlpost.onreadystatechange = callback; xmlpost.send(data); } function checkRequestStatus() { if (xmlget.readyState == 4) { try { if (xmlget.status == 200) { return xmlget.responseText; } else return ""; } catch (e){ return "";} } return null; } function checkPostRequestStatus() { if (xmlpost.readyState == 4) { try { if (xmlpost.status == 200) { var retString = xmlpost.responseText; if( retString.toLowerCase().indexOf("errmsg")>-1){ //dvis application error retString = retString.split("ErrMsg_")[1]; document.forms["formView"]["viewMsg"].value = "Error Desc: " + retString; alert("Request Failed.\nError Desc: " + retString); UnLockAll(); return null; }else{ return retString; } } else{ //http dvis error document.forms["formView"]["viewMsg"].value = "HTTP Status: " + xmlpost.status; alert("Request Failed.\nHTTP Status: " + xmlpost.status); UnLockAll(); return null; } } catch (e){ return "";} } return null; } function GetString() { var dataForm = alldata; var splitData = doParse(dataForm); var frm = document.forms["formView"]; var old_Name = "", new_Name = "Network", data = ""; for (var objDT in splitData) { try { new_Name = frm[objDT].name; if (old_Name != new_Name && frm[objDT].name != "AV") { data += "\n[" + new_Name + "]\n"; old_Name = new_Name; } if (frm[objDT].name == "AV") continue; else if (frm[objDT].type == "checkbox") data += objDT + "=" + Number(frm[objDT].checked) + "\n"; else { if (objDT == "Qam_Bandwidth") data += "Qam_Bandwidth=6\n"; else data += objDT + "=" + frm[objDT].value + "\n"; } } catch (e) { } } var first = true, second = true; while (portNum - 1 < portCount) { splitData = GetPorts(dataForm, portNum - 1); for (var objAV in splitData) { try { if (portNum == 1) { if (first) { data += "\n[Program_0]\n"; first = false; } if (frm[objAV].type == "checkbox") data += objAV + "=" + Number(frm[objAV].checked) + "\n"; else data += objAV + "=" + frm[objAV].value + "\n"; } else { if (second) { data += "\n[Program_1]\n"; second = false; } if (frm[objAV].type == "checkbox") data += objAV + "=" + Number(frm[objAV + "B"].checked) + "\n"; else data += objAV + "=" + frm[objAV + "B"].value + "\n"; } } catch (e) {} } portNum++; } portNum = 1; return data; } function dhcpHandle(en) { document.formView.Static_IP_Address.disabled=en; document.formView.Web_Port.disabled=en; document.formView.Subnet_Mask.disabled=en; document.formView.Default_Gateway.disabled=en; document.formView.DNS_IP.disabled=en; } function resHandle(en, prog) { var num = 0; var frm = document.forms["formView"]["Video_Resolution" + prog]; var count = frm.length - 1; for (var j = count; j >= 0; j--) { frm.remove(j); } if (en == 0) num = 576; else num = 480; var y = document.createElement('option'); var mpgVidRes = new Array("704", "544", "528", "480", "352"); for (var i = 0; i < 5; i++) { y = document.createElement('option'); y.text = mpgVidRes[i] + "x" + num; y.value = mpgVidRes[i]; try { frm.add(y, null); // standards compliant } catch (ex) { frm.add(y); // IE only } } } function qamHandle(en) { if (Number(en) > 1) { if (Number(en) == 64) en = 0; else en = 1; } var frm = document.forms["formView"]["Qam_Bandwidth"]; frm.value = Number(en); } function OverChars(obj) { if (obj.name == "Network" && obj.id != "Web_Port") { var splits = obj.value.split("."); if (splits.length != 4) return true; for (var i = 0; i < 4; i++) if (Number(splits[i]) > 255 || Number(splits[i]) < 0 || splits[i] == '') return true; return false; } else { switch (obj.id) { case "Qam_Frequency": if (Number(obj.value) > 1000000 || Number(obj.value) < 57000) return true; break; case "Qam_Power_Level": if (Number(obj.value) > 56 || Number(obj.value) < 30) return true; break; case "TS_Id": case "Prog_Number": case "Prog_NumberB": case "Web_Port": if (Number(obj.value) > 65535 || Number(obj.value) < 1) return true; if(document.getElementById("Prog_Number").value == document.getElementById("Prog_NumberB").value) return true; break; case "Pmt_Pid_Number": case "Pcr_Pid_Number": case "Video_Pid_Number": case "Audio_Pid_Number": case "Pmt_Pid_NumberB": case "Pcr_Pid_NumberB": case "Video_Pid_NumberB": case "Audio_Pid_NumberB": if (!checkPids(obj)){ return true; } break; case "Video_Rate": case "Video_RateB": if (Number(obj.value) > 4000 || Number(obj.value) < 1000) return true; break; case "Brightness": case "Contrast": case "Saturation": case "BrightnessB": case "ContrastB": case "SaturationB": if (Number(obj.value) > 255 || Number(obj.value) < 0) return true; break; } } return false; } function checkPids(obj){ if (Number(obj.value) > 8190 || Number(obj.value) < 21){ return false; } var chrSufix=""; var isB=false; var pidsArr = ["Pmt_Pid_Number","Pcr_Pid_Number","Video_Pid_Number","Audio_Pid_Number"]; if(obj.id.indexOf("_NumberB")>-1){ chrSufix="B"; isB = true; } for(var i = 0 ; i '9' || obj.value.charAt(i) < '0') return true; } return false; } function IsEmpty(obj) { return (obj.value == ""); } function mark(obj) { obj.style.backgroundColor = "#FAAFBE"; } function unMark(obj) { obj.style.backgroundColor = ""; } function unMarkAll() { var frm = document.forms["formView"]; for (var i = 0; i < frm.elements.length; i++) { if (frm.elements[i].id != "viewMsg") frm.elements[i].style.backgroundColor = ""; } } function LockGroup(todo) { var obj = document.forms["formView"]; obj["Qam_Modulation"].disabled = todo; obj["Qam_Bandwidth"].disabled = todo; obj["Qam_Interleaver"].disabled = todo; obj["Video_Standard"].disabled = todo; obj["Audio_Codec"].disabled = todo; obj["Video_StandardB"].disabled = todo; obj["Audio_CodecB"].disabled = todo; obj["portNumber"].readonly = todo; obj["portNumberB"].readonly = todo; obj = document.forms["formInfo"]; obj["Serial_Number"].disabled = todo; obj["Mac_Address"].readonly = todo; } function LockAll(msg) { for (var i = 0; i < document.formView.elements.length; i++) document.formView.elements[i].disabled = true; for (var i = 0; i < document.formUpdate.elements.length; i++){ if(document.formUpdate.elements[i].type != "file"){ document.formUpdate.elements[i].disabled = true; } } var msgStr = (msg==null)? msgStr= "DVISn configuration is in progress." : msg; document.forms["formView"]["viewMsg"].value = msgStr; document.forms["formView"]["busyImg"].style.visibility = "visible"; } function UnLockAll() { for (var j = 0; j < document.forms["formView"].elements.length; j++) document.formView.elements[j].disabled = false; for (var i = 0; i < document.formUpdate.elements.length; i++){ document.formUpdate.elements[i].disabled = false; } var obj = document.forms["formView"]; if(isExtExsit =="0"){ obj["Prog_EnabledB"].checked = false; obj["Prog_EnabledB"].disabled = true; obj["Video_StandardB"].disabled = true; obj["Video_RateB"].disabled = true; obj["Video_ResolutionB"].disabled = true; obj["BrightnessB"].disabled = true; obj["ContrastB"].disabled = true; obj["SaturationB"].disabled = true; obj["Audio_CodecB"].disabled = true; obj["Audio_RateB"].disabled = true; obj["Prog_NumberB"].disabled = true; obj["Video_Pid_NumberB"].disabled = true; obj["Audio_Pid_NumberB"].disabled = true; obj["Pcr_Pid_NumberB"].disabled = true; obj["Pmt_Pid_NumberB"].disabled = true; obj["Vsync_Lock_EnableB"].disabled = true; } LockGroup(true); dhcpHandle(document.formView.DHCP_Enable.checked); document.forms["formView"]["busyImg"].style.visibility = "hidden"; } // file upload handlers function startUpload(){ LockAll("DVISn version upload is in progress."); document.forms["formUpdate"].action = uploadURL; return true; } function completeUpload(response){ //stop the progress bar event document.location.replace("uploadDone.html") }