function max(d,c){return d>c?d:c}function validateInt(){var a=document.frmInput.txtInput;switch(isInteger(a.value)){case true:alert(a.value+" is an integer");break;case false:alert(a.value+" is not an integer")}}function validateRange(){var b=document.frmInput.txtInput.value;var a=document.frmInput.txtA.value;var c=document.frmInput.txtB.value;switch(isIntegerInRange(b,a,c)){case true:alert(b+" is in range from "+a+" to "+c);break;case false:alert(b+" is not in range from "+a+" to "+c)}}function isIntegerInRange(f,d,c){if(isEmpty(f)){if(isIntegerInRange.arguments.length==1){return false}else{return(isIntegerInRange.arguments[1]==true)}}if(!isInteger(f,false)){return false}var e=parseInt(f);return((e>=d)&&(e<=c))}function isInteger(b){var a;if(isEmpty(b)){if(isInteger.arguments.length==1){return 0}else{return(isInteger.arguments[1]==true)}}for(a=0;a<b.length;a++){var d=b.charAt(a);if(!isDigit(d)){return false}}return true}function isEmpty(a){return((a==null)||(a.length==0))}function isDigit(a){return((a>="0")&&(a<="9"))}function clear_result(a){$("#total-size").empty();$("#min-bandwidth").empty();$("#min-cpu").empty();$("#min-ram").empty()}function outofrange_alert(e,d,c){if(!isIntegerInRange(e,d,c)){alert("Please give an integer between 1 to 64");clear_result()}}function validateSignedInt(){var a=document.frmInput2.txtInputSignedInt.value;switch(isSignedInteger(a)){case true:alert(a+" is a signed integer");break;case false:alert(a+" is not a signed integer")}}function isSignedInteger(c){if(isEmpty(c)){if(isSignedInteger.arguments.length==1){return false}else{return(isSignedInteger.arguments[1]==true)}}else{var b=0;var a=false;if(isSignedInteger.arguments.length>1){a=isSignedInteger.arguments[1]}if((c.charAt(0)=="-")||(c.charAt(0)=="+")){b=1}return(isInteger(c.substring(b,c.length),a))}}function validatePosInt(){var a=document.frmInput3.txtInputPosInt.value;switch(isPositiveInteger(a)){case true:alert(a+" is a positive integer");break;case false:alert(a+" is not a positive integer")}}function isPositiveInteger(b){var a=false;if(isPositiveInteger.arguments.length>1){a=isPositiveInteger.arguments[1]}return(isSignedInteger(b,a)&&((isEmpty(b)&&a)||(parseInt(b)>0)))}function notposint_alert(a){if(!isPositiveInteger(a)){alert("Please give a positive integer");clear_result()}}$(function(){var z="hybrid";var x,w;var h=[];var v=[];var g=[];var k=[];var v={nvr:["320x240","352x288","640x480","704x480","1 Mega","2 Mega","3 Mega","5 Mega"],"1000":["CIF","4CIF"],"2000":["CIF","4CIF"],"3000":["CIF","4CIF"],"4000":["CIF","4CIF"],"5000":["CIF","528x320","4CIF"],"6000":["CIF","4CIF"],"7000":["4CIF","CIF","QCIF"]};var d=[];var u="<select>"+jQuery.map(d,(function(B,j){return'<option value="'+B+'">'+B+"</option>"})).join("")+"</select>";var n=[[2200,"N/A","N/A"],[1400,"Intel Core I7-860","2 GB"],[1050,"Intel Core I5-750","2 GB"],[700,"Intel Core 2 Quad Q9400 or Intel Xeon W3505","2 GB"],[550,"Intel Core 2 Quad Q9400 or Intel Xeon W3505","2 GB"],[1,"Intel Core 2 Duo E5300 or Intel Xeon W3505","1 GB"]];var A=n;for(x=1;x<=30;x++){h[x-1]=30-x+1}for(x=1;x<=24;x++){g[x-1]=24-x+1}for(x=1;x<=10;x++){k[x-1]=100-x*10+10}var y="<select>"+jQuery.map(h,(function(B,j){return'<option value="'+B+'">'+B+"</option>"})).join("")+"</select>";var s="<select>"+jQuery.map(g,(function(B,j){return'<option value="'+B+'">'+B+"</option>"})).join("")+"</select>";var p="<select>"+jQuery.map(k,(function(B,j){return'<option value="'+B+'">'+B+"%</option>"})).join("")+"</select>";var c={};for(x in v){c[x]="<select>"+jQuery.map(v[x],(function(B,j){return'<option value="'+B+'">'+B+"</option>"})).join("")+"</select>"}var r=function(){z=$("select[name=solution-type]").val();$("#solution-dvr").hide();$("#solution-nvr").hide();$("#solution-nvrmini").hide();$("#solution-remote").hide();if(z=="nvr"){$("#solution-nvr").show()}else{if(z=="dvr"){$("#solution-dvr").show()}else{if(z=="nvrmini"){$("#solution-nvrmini").show()}else{if(z=="remote"){$("#solution-remote").show()}else{$("#solution-dvr").show();$("#solution-nvr").show()}}}}};var f=function(){$("input[type=text]").unbind("kekeypress").keypress(function(i){if(i.which==13){e()}});$("input[type=checkbox]").unbind("click").click(e);$("select[name!=solution-type]").unbind("change").change(e)};var q=function(){$("#dvr-rows table").html("<tr><td>Number of analog cams</td> <td>FPS</td> <td>Res</td> <td>Audio</td> <td>Days</td> <td>Hours</td> <td>Motion</td></tr>")};var a=function(){var i=c[$("select[name=dvr-card]").val()];$("#dvr-rows table").append('<tr> <td> <input type="text" value="1" onchange="outofrange_alert($(this).val(), 1, 64);" /> </td> <td> '+y+"</td> <td> "+i+'</td> <td> <input type="checkbox" /></td> <td> <input type="text" value="1" onchange="notposint_alert($(this).val());" /> </td> <td> '+s+"</td> <td> "+p+'</td> <td> <a style="cursor:pointer; text-decoration: underline;" onclick="$(this).parent().parent().remove();"><img width=25 src="delete-icon.png" /></a> </td></tr>');f()};var o=function(){var i=c.nvr;$("#nvr-rows table").append('<tr> <td> <input type="text" value="" /> </td> <td> <input type="text" value="1" onchange="outofrange_alert($(this).val(), 1, 64);" /> </td> <td> <select><option selected>mjpeg</option><option>mpeg4</option><option>h.264</option></select> </td> <td> '+y+"</td> <td> "+i+'</td> <td> <input type="checkbox" /></td> <td> <input type="text" value="1" onchange="notposint_alert($(this).val());" /> </td> <td> '+s+"</td> <td> "+p+'</td> <td> <a style="cursor:pointer; text-decoration: underline;" onclick="$(this).parent().parent().remove();"><img width=25 src="delete-icon.png" /></a> </td></tr>');f()};var b=function(){var i=c.nvr;$("#nvrmini-rows table").append('<tr> <td> <input type="text" value="" /> </td> <td> <input type="text" value="1" onchange="outofrange_alert($(this).val(), 1, 64);" /> </td> <td> <select><option selected>mjpeg</option><option>mpeg4</option><option>h.264</option></select> </td> <td> '+y+"</td> <td> "+i+'</td> <td> <input type="checkbox" /></td> <td> <input type="text" value="1" onchange="notposint_alert($(this).val());" /> </td> <td> '+s+"</td> <td> "+p+'</td> <td> <a style="cursor:pointer; text-decoration: underline;" onclick="$(this).parent().parent().remove();"><img width=25 src="delete-icon.png" /></a> </td></tr>');f()};var t=function(F,B,E){var C;var D=B?A:n;var j;if(E<16){j="1 GB"}else{if(E<32){j="2 GB"}else{j="3 GB"}}for(C=0;C<D.length;C++){if(F>=D[C][0]){return[D[C][1],max(D[C][2],j)]}}};var m={nvr:{"320x240":1,"352x288":1.066667,"640x480":3,"704x480":3.066667,"1 Mega":9,"2 Mega":15.625,"3 Mega":26.66667,"5 Mega":43.33333},"1000":{CIF:1,"4CIF":1.716},"2000":{CIF:1,"4CIF":1.716},"3000":{CIF:1,"4CIF":1.716},"4000":{CIF:1,"4CIF":1.716},"5000":{CIF:1,"528x320":1.57666667,"4CIF":3.15333333},"6000":{QCIF:1,CIF:3.217012,"4CIF":7.96074155},"7000":{QCIF:1,CIF:3.217012,"4CIF":7.96074155}};var l=function(){var B=$("select[name=dvr-card]").val();var D=0;var j=[];var i=0;if(B=="5000"){$("#dvr-rows table tr:gt(0)").each(function(E,G){var H={};var F=1;j[E]=[];$(this).children().each(function(J,I){if(J<9){j[E].push($(I).children().val())}});H.num_cams=j[E][0];H.resolution=j[E][2];if(H.resolution=="4CIF"){D+=parseInt(H.num_cams)}i+=parseInt(H.num_cams)});if(D>4){alert("Warning: The number of channels in D1 resolution can't exceed 4 on an SCB-5000 card. The result is invalid.")}if(i>48){alert("Warning: The maximum channels on 5000 is 48.")}}if(B=="6000"){var C=false;$("#dvr-rows table tr:gt(0)").each(function(E,H){var J={};var G=1;j[E]=[];$(this).children().each(function(L,K){if(L<9){j[E].push($(K).children().val())}});var I=j[E][1];var F=j[E][2];if(I>=8&&F=="4CIF"){C=true}});if(C){alert("FPS can't exceed 7.5 when you use 6000 in 4CIF resolution")}}$("#nvr-rows table tr:gt(0)").each(function(E,G){var H={};var F=1;j[E]=[];$(this).children().each(function(J,I){if(J<9){j[E].push($(I).children().val())}});H.video_format=j[E][2];H.resolution=j[E][4];if((H.video_format=="mpeg4"&&(H.resolution=="2 Mega"||H.resolution=="3 Mega"||H.resolution=="5 Mega"))||(H.video_format=="h.264"&&(H.resolution=="352x288"||H.resolution=="704x480"))){alert("WARNING: The result of resolution "+H.resolution+" and video format "+H.video_format+" is linearly regressed, so it may not be accurate.")}});(function(){var G=$("select[name=nvrmini-model]").val();var F=0;$("#nvrmini-rows table tr:gt(0)").each(function(H,I){$(this).children().each(function(K,J){if(K==1){F+=parseInt($(J).children().val())}})});var E="ERROR: You have added too many cameras to this NVRmini model. The answer is not correct.";if((G=="nv2020"&&F>4)||(G=="nv2040"&&F>4)||(G=="nv4080"&&F>8)||(G=="nv4160"&&F>16)){alert(E);$("#work-on-nvrmini").text("NO")}})();return true};var e=function(){var H={nvr:{mpeg4:{"320x240":4,"352x288":5,"640x480":11,"704x480":12,"1 Mega":65,"2 Mega":130,"3 Mega":196,"5 Mega":328},mjpeg:{"320x240":15,"352x288":16,"640x480":45,"704x480":46,"1 Mega":135,"2 Mega":250,"3 Mega":400,"5 Mega":650},"h.264":{"320x240":2,"352x288":2.5,"640x480":7,"704x480":8.14,"1 Mega":45,"2 Mega":83,"3 Mega":102,"5 Mega":134}},nvrmini:{mpeg4:{"320x240":4,"352x288":5,"640x480":11,"704x480":12,"1 Mega":65,"2 Mega":130,"3 Mega":196,"5 Mega":328},mjpeg:{"320x240":15,"352x288":16,"640x480":45,"704x480":46,"1 Mega":135,"2 Mega":250,"3 Mega":400,"5 Mega":650},"h.264":{"320x240":2,"352x288":2.5,"640x480":7,"704x480":8.14,"1 Mega":45,"2 Mega":83,"3 Mega":102,"5 Mega":134}},"1000":{CIF:"2.5","4CIF":"4.29"},"2000":{CIF:"2.5","4CIF":"4.29"},"3000":{CIF:"2.5","4CIF":"4.29"},"4000":{CIF:"2.5","4CIF":"4.29"},"5000":{CIF:"1.5","528x320":2.365,"4CIF":"4.73"},"6000":{CIF:"2.95","4CIF":"7.3"},"7000":{QCIF:"0.917",CIF:"2.95","4CIF":"7.3"}};var O={nvr:{},dvr:{},nvrmini:{}};var j=$("select[name=dvr-card]").val();var G=$("select[name=nvrmini-model]").val();var F=0;var E=0;var I=0;var C=0;var K=0;var i=function(U,S){var P=[];var V=0;var W=0;var R=0;var Q=0;var T=100;$(S+" table tr:gt(0)").each(function(X,ab){var ac={};var aa=1;P[X]=[];var Z=0;var Y=0;$(this).children().each(function(ae,ad){if(ae<9){if($(ad).children().attr("type")=="checkbox"){P[X].push($(ad).children().is(":checked"))}else{P[X].push($(ad).children().val())}}});if(U=="nvr"||U=="nvrmini"){ac.num_cams=P[X][1];ac.frame_size=H[U][P[X][2]][P[X][4]];ac.fps=P[X][3];ac.hours=P[X][7];ac.days=P[X][6];ac.audio=P[X][5];T=P[X][8];aa=m.nvr[P[X][4]];if(P[X][4].match(/Mega/)){E+=parseInt(ac.num_cams)}}else{ac.num_cams=P[X][0];ac.frame_size=H[j][P[X][2]];ac.fps=P[X][1];ac.hours=P[X][5];ac.days=P[X][4];ac.audio=P[X][3];T=P[X][6];aa=m[j][P[X][2]]}F+=parseInt(ac.num_cams);Z+=ac.num_cams*ac.frame_size*ac.fps*3600*ac.hours*ac.days/(1024*1024);if(ac.audio){Z+=48*(3600*ac.hours*ac.days)/(1024*1024)}Q=ac.hours*ac.days;C+=ac.hours*ac.days;V=Z*8/(Q||1)/3600*1024;K+=V;Z=Z*T/100;R+=Z;if(U=="nvr"||j=="1000"||j=="2000"||j=="3000"||j=="4000"){W+=ac.num_cams*parseInt(ac.fps)*aa}else{W+=ac.num_cams*parseInt(ac.fps)}});V=R*8/(Q||1)/3600*1024*1024;O[U]["total_size"]=R;O[U]["min_bandwidth"]=V;I+=R;return W};if(!l()){return}var D=0;var N=0;var B=0;var M=0;var J=0;if(z=="hybrid"){D=i("nvr","#nvr-rows");N=i("dvr","#dvr-rows")}else{if(z=="nvr"){D=i("nvr","#nvr-rows")}else{if(z=="dvr"){N=i("dvr","#dvr-rows")}else{if(z=="nvrmini"){B=i("nvrmini","#nvrmini-rows")}}}}if(j==5000){N/=4}M=D+N+B;if(((O.nvr.total_size||0)+(O.dvr.total_size||0)+(O.nvrmini.total_size||0))){$("#total-size").html(((O.nvr.total_size||0)+(O.nvrmini.total_size||0)+(O.dvr.total_size||0))+" GB");$("#min-bandwidth").html(K+" Mbps");var L=t(M,((j=="7000"||j=="6000")&&N?true:false),F);$("#min-cpu").html(L[0]);$("#min-ram").html(L[1]);if(z=="nvrmini"){if((G=="nv2020"&&K>20)||(G=="nv2040"&&K>20)||(G=="nv4080"&&K>30)||(G=="nv4160"&&K>22)){$("#work-on-nvrmini").text("NO")}else{$("#work-on-nvrmini").text("YES")}}}else{$("#total-size").empty();$("#min-bandwidth").empty();$("#min-cpu").empty();$("#min-ram").empty()}if(z=="nvrmini"){if($("#work-on-nvrmini").text()=="NO"){alert("NVRmini bandwidth limits\n* NV2020 has a maximum bandwidth limit of 20 Mbps.\n* NV2040 has a maximum bandwidth limit of 20 Mbps.\n* NV4080 has a maximum bandwidth limit of 30 Mbps.\n* NV4016 has a maximum bandwidth limit of 22 Mbps.")}}else{if(K>80||F>32||E>16){alert("The scale of your planned system is relatively large. Instead of only using the calculator, we recommend you send your project requirements to us. We will offer you professional consulting for your project. The email address for tech support is service@nuuo.com")}}};$("select[name=solution-type]").change(r);$("select[name=dvr-card]").change(q);$("input[name=add-dvr]").click(a);$("input[name=add-nvr]").click(o);$("input[name=add-nvrmini]").click(b);$("input[name=calculate]").click(e);$("input[name=print]").click(function(){e();window.print()});$("select[name=solution-type]").val("hybrid")});