function show_path(path1) { var path_div = document.getElementById('top_path'); if(path_div) path_div.innerHTML = path1; } function get_path(page_url, page_ext) { var iframeNode = document.createElement("iframe"); iframeNode.frameBorder = 0; iframeNode.scrolling = "no"; iframeNode.style.border = '0px'; iframeNode.style.width = '0px'; iframeNode.style.Height = '0px'; iframeNode.src = "/path.shtml?url="+page_url; if (arguments.length > 1 && (page_ext != null && page_ext != "")) iframeNode.src = iframeNode.src+"&ext="+page_ext; var parentNode = document.getElementById('top_path'); parentNode.appendChild(iframeNode); } function og_ExitWizard(act) { if(confirm("Quit setup wizard and discard settings ?")){ if(act == 'logout') window.location.href="wizard_exit.shtml?act=logout"; else window.location.href="wizard_exit.shtml"; } } function ShowWizard(name){ window.open(name,"Wizard","width=460,height=360") } function ExitWizard(){ if (confirm("Quit setup wizard and discard settings ?")) window.close() } //parameter pass by value; function Validate_IP1(ipaddr) { var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; if (re.test(ipaddr)) { var parts = ipaddr.split("."); if (parseInt(parseFloat(parts[0])) == 0) { return false; } for (var i=0; i 255) { return false; } } return true; } else { return false; } } function Validate_SSID(ssid){ var re = /^(\w|-)+$/; if (!re.test(ssid)) { alert("SSID contains invalid character."); return false; } return true; } function Validate_Server(host, blank) { if(trim(host.value) == "" && blank == "0") { alert("The server address must fill in."); host.focus(); host.select(); return false; } if(trim(host.value) == "" && blank == "1") { host.focus(); host.select(); return true; } if (trim(host.value) == "1.1.1.1") { alert("Can't use reserved IP address."); host.focus(); host.select(); return false; } return true; } function Validate_Port(port, blank) { if(trim(port.value) == "" && blank == "0") { alert("Not a valid port number."); port.focus(); port.select(); return false; } if(trim(port.value) == "" && blank == "1") { port.focus(); port.select(); return true; } if (!Check_Number(port.value) || port.value > 65535) { alert("Not a valid port number."); port.focus(); port.select(); return false; } return true; } /* INPUT: 1.ip(object) 2.blank(string) [1:allow empty][0:not allow empty] OUTPUT: true:OK false:error */ function Validate_IP(ip, blank) { var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; if(trim(ip.value) == "" && blank == "0") { alert("IP must fill in."); ip.focus(); ip.select(); return false; } if(trim(ip.value) == "" && blank == "1") { return true; } if(trim(ip.value) == "1.1.1.1") { alert("Can't use reserved IP address."); ip.focus(); ip.select(); return false; } if(trim(ip.value) == "255.255.255.255") { alert("Can't use reserved IP address."); ip.focus(); ip.select(); return false; } if (re.test(ip.value)) { var parts = ip.value.split("."); if (parseInt(parseFloat(parts[0])) == 0) { alert("Not a valid IP address."); ip.focus(); ip.select(); return false; } for (var i=0; i 255) { alert("Not a valid IP address."); ip.focus(); ip.select(); return false; } } return true; } else { alert("Not a valid IP address."); ip.focus(); ip.select(); return false; } } function iptonum(ip) { dummy = ip.split("."); retval = dummy[0]; for(i=1;i<=3;i++) { temp = dummy[i]; retval = 256 * retval + parseInt(temp); } return retval; } function numtoip(num) { ip = new Array(0,0,0,0); for(i=3;i>=0;i--) { ip[i] = num%256; if( ip[i]<0 ) ip[i] += 256; num = (num-ip[i]) / 256; } return ip[0]+"."+ip[1]+"."+ip[2]+"."+ip[3]; } function validate_subnet(ip,network,netmask) { if(trim(ip)=="" || trim(network)=="" || trim(netmask)=="") {return false;} var ipnum = iptonum(ip); var networknum = iptonum(network); var netmasknum = iptonum(netmask); if((ipnum & netmasknum)==(networknum & netmasknum)) { return true; } else { return false; } } function validate_subnet_ip(ip,network,netmask) { if(trim(ip)=="" || trim(network)=="" || trim(netmask)=="") {return false;} var ipnum = iptonum(ip); var networknum = iptonum(network); var netmasknum = iptonum(netmask); if((ipnum & netmasknum)==(networknum & netmasknum)) { if ((ipnum & 0xFFFFFFFF) == (networknum & netmasknum) || (ipnum & 0xFFFFFFFF) == (networknum | (~ netmasknum)) ){ return false; } return true; } else { return false; } } function Validate_Zero_IP(ip) { part = ip.split("/"); if ( part[0] == "0.0.0.0" ) if ( part[1] != "0.0.0.0" ) return true; if ( part[0] != "0.0.0.0" ) if ( ( part[1] == "0.0.0.0" ) || (part[1] == "0" ) ) return true; return false; } function Validate_Segment(ip) { part = ip.split("/"); if ( part[1] == "255.255.255.255" ) return false; return true; } /** * validate DHCP range * * @param ip LAN IP address * @param start start IP address of DHCP range * @param end end IP address of DHCP range * @return false if ip falls between start and end or start > end, true * otherwise */ function validate_dhcp_range(ip, start, end) { tip = iptonum(ip); tstart = iptonum(start); tend = iptonum(end); if ((tip >= tstart && tip <= tend) || (tstart > tend)) { return false; } else { return true; } } function Check_Number(num) { if(isNaN(num)) { return false; } else if (num <= 0) { return false; } else if (num - parseInt(num,10) != 0) { return false; } else { return true; } } function Check_Number_NoZero(num) { if(isNaN(num)) { return false; } else if (num < 0) { return false; } else if (num - parseInt(num,10) != 0) { return false; } else { return true; } } /** * reformat the input mac to the formal format. * @param: mac the string of MAC Address * @return: the formmated string of MAC Address */ function formatMac(mac) { if ( -1 != mac.indexOf('-',2)){ // if match '-' mac = mac.replace(/\-/g,':'); }else if ( -1 == mac.indexOf(':',2)){ // if all numgers mac = mac.substr(0,2)+":"+mac.substr(2,2)+":"+mac.substr(4,2)+":"+mac.substr(6,2)+":"+mac.substr(8,2)+":"+mac.substr(10,2); } return mac.toUpperCase(); } /** * We accept three formats of the MAC Address: * 1. XX:XX:XX:XX:XX:XX * 2. OO-OO-OO-OO-OO-OO * 3. nnnnnnnnnnnn * @param mac: the controller name of the MAC Address * @return: if the content is valid, return true and reformmat the string to the type 1. * Otherwise, return false, alert and focus the controller. */ function Validate_Mac1(mac) { var re0 = /^[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}$/; var re1 = /^[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}-[0-9A-Fa-f]{2}$/; var re2 = /^[0-9A-Fa-f]{12}$/; if(!re0.test(mac.value) && !re1.test(mac.value) && !re2.test(mac.value)) { return false; } // reformat the string of the MAC Address after the content is valid. mac.value = formatMac(mac.value); return true; } function Validate_Mac(mac) { if (!Validate_Mac1(mac)) { alert("Not a valid MAC address."); mac.focus(); mac.select(); return false; } return true; } function Validate_IP_Segment(ip) { var re = new RegExp("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,3}$"); var re1 = new RegExp("^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$"); if(re.test(ip)) { part = ip.split("."); part1 = part[3].split("/"); if(part[0] <= 255 && part[1] <=255 && part[2] <= 255 && part1[0] <= 255 && part1[1] <= 32) { return true; } else { return false; } } else if(re1.test(ip)) { part = ip.split("/"); part1 = part[0].split("."); part2 = part[1].split("."); if(part1[0] <= 255 && part1[1] <=255 && part1[2] <= 255 && part1[3] <= 255 && part2[0] <= 255 && part2[1] <=255 && part2[2] <= 255 && part2[3] <= 255) { return true; } else { return false; } } return false; } function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i 2) { if ((img = MM_findObj(args[2])) != null && !img.MM_init) { img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src; if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array(); nbArr[nbArr.length] = img; for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) { if (!img.MM_up) img.MM_up = img.src; img.src = img.MM_dn = args[i+1]; nbArr[nbArr.length] = img; } } } else if (event == "over") { document.MM_nbOver = nbArr = new Array(); for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) { if (!img.MM_up) img.MM_up = img.src; img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up); nbArr[nbArr.length] = img; } } else if (event == "out" ) { for (i=0; i < document.MM_nbOver.length; i++) { img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; } } else if (event == "down") { nbArr = document[grpName]; if (nbArr) for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; } document[grpName] = nbArr = new Array(); for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) { if (!img.MM_up) img.MM_up = img.src; img.src = (args[i+1])? args[i+1] : img.MM_up; nbArr[nbArr.length] = img; } } } function trim(inputString) { if (typeof inputString != "string") { return inputString; } var retValue = inputString; var ch = retValue.substring(0, 1); while (ch == " ") { // Check for spaces at the beginning of the string retValue = retValue.substring(1, retValue.length); ch = retValue.substring(0, 1); } ch = retValue.substring(retValue.length-1, retValue.length); while (ch == " ") { // Check for spaces at the end of the string retValue = retValue.substring(0, retValue.length-1); ch = retValue.substring(retValue.length-1, retValue.length); } while (retValue.indexOf(" ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ")+1, retValue.length); } return retValue; // Return the trimmed string back to the user } function isValidEmail(emailAddress) { var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ if(!re.test(emailAddress.value)) { alert("Not a valid Email address."); emailAddress.focus(); emailAddress.select(); return false; } return true; } function ValidateSysName(str) { chkStr = new String(str.value); var len = chkStr.length; var i = 0; var re = /^[ a-zA-Z0-9\._-]+$/; for (i=0 ; i < len ; i++) { if (chkStr.charCodeAt(i) <=127) if ( ! re.test(chkStr.charAt(i)) ) return false; } return true; } function validate_domain(domain, type) { var spcchr = "\\(\\)<>@,;:#$?!`~%&'/*=^{}|_+\\\\\\\"\\.\\[\\]"; var valchr = "\[^\\s" + spcchr + "\]"; var regip1 = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/; var regip2 = /^[0-9\.]+$/; var regdn1 = new RegExp("^" + valchr + "+(\\." + valchr + "+)+$"); var regdn2 = new RegExp("^" + valchr + "+(\\." + valchr + "+)*$"); var regdn3 = new RegExp("^[\\.]{0,1}" + valchr + "+(\\." + valchr + "+)*$"); var regdn4 = new RegExp("^" + valchr + "+(\\." + valchr + "+)*[\\.]{0,1}$"); var regdn5 = new RegExp("^[\\.]{0,1}" + valchr + "+(\\." + valchr + "+)*[\\.]{0,1}$"); if (domain.length >= 256) return false; // extended domain style if (!regdn5.test(domain)) return false; // IP only if (type == "1") { if (!regip1.test(domain)) return false; } // reject IP style if (type == "2" || type == "4" || type == "6" || type == "8" || type == "10") { if ( regip2.test(domain)) return false; } // host if (type == "2" || type == "3") { if (!regdn1.test(domain)) return false; } // domain if (type == "4" || type == "5") { if (!regdn2.test(domain)) return false; } // L-extended domain if (type == "6" || type == "7") { if (!regdn3.test(domain)) return false; } // R-extended domain if (type == "8" || type == "9") { if (!regdn4.test(domain)) return false; } return true; } function ValidateUniCode(str) { chkString = new String(str.value); var l = chkString.length; var i =0; var re = /^[a-zA-Z0-9\.,_-]+$/; for (i=0 ; i < l ; i++) { if (chkString.charCodeAt(i) <=127) if ( ! re.test(chkString.charAt(i)) ) return false; } return true; } function ValidateLDAP(str) { chkString = new String(str.value); var re = /^[ -~]+$/; if(!re.test(chkString)) return false; return true; } /* * Validate if the string is a valid password. A valid password is a string with * length no longer than 20 characters and contain only alphanumeric, dash and * dot characters. * * @param str the inputted string * @param allow_empty if empty string is valid; assumed false if not given * @return true if str is valid; false otherwise */ function ValidatePassword(str, allow_empty) { var regexp=/^[\w-.]{1,20}$/; var allow_empty = (allow_empty === undefined) ? false : allow_empty; if (allow_empty && str == "") { return true; } return regexp.test(str); } function ValidateLocalUsername(str) { var regexp=/^[\w-.]{1,40}$/; return regexp.test(str); } function ValidateLocalPassword(str) { var regexp=/^[\w-.]{1,20}$/; return regexp.test(str); } function maskbit2str(length) { switch(length) { case 0: return "0.0.0.0"; break; case 1: return "128.0.0.0"; break; case 2: return "192.0.0.0"; break; case 3: return "224.0.0.0"; break; case 4: return "240.0.0.0"; break; case 5: return "248.0.0.0"; break; case 6: return "252.0.0.0"; break; case 7: return "254.0.0.0"; break; case 8: return "255.0.0.0"; break; case 9: return "255.128.0.0"; break; case 10: return "255.192.0.0"; break; case 11: return "255.224.0.0"; break; case 12: return "255.240.0.0"; break; case 13: return "255.248.0.0"; break; case 14: return "255.252.0.0"; break; case 15: return "255.254.0.0"; break; case 16: return "255.255.0.0"; break; case 17: return "255.255.128.0"; break; case 18: return "255.255.192.0"; break; case 19: return "255.255.224.0"; break; case 20: return "255.255.240.0"; break; case 21: return "255.255.248.0"; break; case 22: return "255.255.252.0"; break; case 23: return "255.255.254.0"; break; case 24: return "255.255.255.0"; break; case 25: return "255.255.255.128"; break; case 26: return "255.255.255.192"; break; case 27: return "255.255.255.224"; break; case 28: return "255.255.255.240"; break; case 29: return "255.255.255.248"; break; case 30: return "255.255.255.252"; break; case 31: return "255.255.255.254"; break; case 32: return "255.255.255.255"; break; } } /** * Check the inputs of type file in a form contain non-empty value. * * @param form the form to be checked * @param msg the message to show if fail to pass the check * @return true if all file inputs contain non-empty value, false otherwise */ function checkUploadForm(form, mesg) { for (var i=0; i 255) { return false; } for (j=0; j<8; j++) { if (parseInt(parts[i], 10) & (0x80 >> j)) { if (bitZero == true) { return false; } } else { bitZero = true; } } } return true; } /** * Find the string is in the array or not * @param stringToSearch: the string to find * @param arrayToSearch: the array of finding * @return: true if finded, false otherwise. */ function in_array(stringToSearch, arrayToSearch) { for (s = 0; s