
var jg_arr=Array();var jg,jg_div;var dec;var border_x=10;var border_y=10;var stroke=2;var stroke_offset=1;var label_width=40;var label_height=25;var offset_x;var offset_y;var sign_x=1;var sign_y=-1;var max_width;var max_height;var adjust_container;var green=Array("#BBFFBB","#44FF44");var red=Array("#FFBBBB","#FF4444");var black="#000000";var grey="#444444";var display_final;var dim1_final,dim2_final,dim3_final;function draw_outline(id,form,dim1,dim2,dim3,mag_dim,p_adjust_container)
{jg=jg_arr[id];jg_div=jg.cnv.parentNode;jg_div.style.display="block";jg.clear();max_width=parseInt(jg_div.style.width)-2*border_x-label_width;max_height=parseInt(jg_div.style.height)-2*border_y-label_height;adjust_container=p_adjust_container;offset_x=border_x;offset_y=max_height+border_y;if(max_width<200){jg.setFont("Verdana, Arial, Helvetica, sans-serif","8pt","");}
display_final=1;dim1_final=1;dim2_final=1;dim3_final=1;if(form=="block"){if(isNaN(dim1)||dim1<=0){dim1=40;dim1_final=0;}
if(isNaN(dim2)||dim2<=0){dim2=30;dim2_final=0;}
if(isNaN(dim3)||dim3<=0){dim3=20;dim3_final=0;}
if(isNaN(mag_dim)||mag_dim<1||mag_dim>3)mag_dim=3;display_final=(dim1_final&&dim2_final&&dim3_final);draw_block(dim1,dim2,dim3,mag_dim);}else if(form=="cube"){if(isNaN(dim1)||dim1<=0){display_final=0;dim1_final=0;dim2_final=0;dim3_final=0;dim1=10;}
draw_block(dim1,dim1,dim1,3);}else if(form=="disc"){if(isNaN(dim1)||dim1<=0){dim1=20;dim1_final=0;}
if(isNaN(dim2)||dim2<=0){dim2=10;dim2_final=0;}
if(isNaN(mag_dim)||mag_dim<1||mag_dim>2)mag_dim=2;display_final=(dim1_final&&dim2_final);draw_disc(dim1,dim2,mag_dim);}else if(form=="ring"){if(isNaN(dim1)||dim1<=0){dim1=20;dim1_final=0;}
if(isNaN(dim2)||dim2<=0){dim2=dim1/2;dim2_final=0;}
if(dim2>=dim1){dim2=0;dim2_final=0;}
if(isNaN(dim3)||dim3<=0){dim3=10;dim3_final=0;}
if(isNaN(mag_dim)||mag_dim<1||mag_dim>3)mag_dim=3;display_final=(dim1_final&&dim2_final&&dim3_final);if(mag_dim==3)mag_dim=2;var temp=dim2;dim2=dim3;dim3=temp;temp=dim2_final;dim2_final=dim3_final;dim3_final=temp;draw_disc(dim1,dim2,mag_dim,dim3);}else if(form=="sphere"){if(isNaN(dim1)||dim1<=0){display_final=0;dim1_final=0;dim1=10;}
draw_sphere(dim1);}}
function update_outline(id,input_field)
{var form=document.forms["update_form"].elements['form'].value;var dim1=document.forms["update_form"].elements['dim1'].value;dim1=dim1.replace(/,/,".");dim1=parseFloat(dim1);if(form=="block"||form=="disc"||form=="ring"){var dim2=document.forms["update_form"].elements['dim2'].value;dim2=dim2.replace(/,/,".");dim2=parseFloat(dim2);}
if(form=="block"||form=="ring"){var dim3=document.forms["update_form"].elements['dim3'].value;dim3=dim3.replace(/,/,".");dim3=parseFloat(dim3);}
if(form=="block"||form=="cube"||form=="disc"||form=="ring"){var mag_dim=1;for(var i=1;i<=3;i++){if(typeof document.forms["update_form"].elements["mag_dim_"+i]!="undefined"){if(document.forms["update_form"].elements["mag_dim_"+i].checked){mag_dim=i;break;}}}}
jg_arr[id].cnv.parentNode.style.display="block";var fields=new Array('dim1','dim2','dim3','mag_dim');for(var f=0;f<fields.length;f++){if(document.getElementById(fields[f])!=null){document.getElementById(fields[f]).style.backgroundColor="";}}
var msg_arr=check_dimension_limits(form,dim1,dim2,dim3,mag_dim);if(msg_arr.length>0){var alert_msg="";for(var i=0;i<msg_arr.length;i++){fields_arr=msg_arr[i][0].split(',');for(var k=0;k<fields_arr.length;k++){document.getElementById(fields_arr[k]).style.backgroundColor="#FFFF66";eval(fields_arr[k]+' = ""');if(typeof input_field!="undefined"&&input_field.name==fields_arr[k]){if(input_field.type=='text'){window.setTimeout("set_focus('update_form', '"+input_field.name+"')",1);}
alert_msg=msg_arr[i][1];}}}
if(alert_msg!="")alert(alert_msg.charRefToUnicode());}
check_strength_limits(form,dim1,dim2,dim3,mag_dim);draw_outline(id,form,dim1,dim2,dim3,mag_dim);}
function check_strength_limits(form,dim1,dim2,dim3,mag_dim)
{if(isNaN(dim1))dim1=0;if(isNaN(dim2)&&(form=="block"||form=="disc"||form=="ring"))dim2=0;if(isNaN(dim3)&&(form=="block"||form=="ring"))dim3=0;if(isNaN(mag_dim)&&(form=="block"||form=="disc"||form=="ring"))mag_dim=0;var max_ep=get_max_ep(form,dim1,dim2,dim3,mag_dim);var i;var strength_radio_arr=document.getElementsByName("strength");var checked_code;for(i=0;i<strength_radio_arr.length;i++){if(strength_radio_arr[i].checked){checked_code=strength_radio_arr[i].value.replace(/[0-9]/g,"");}}
var max_ep_element;document.getElementById("disabled_buttons_text").style.display="none";for(i=0;i<strength_radio_arr.length;i++){var ep=parseInt(strength_radio_arr[i].value.replace(/[A-Z]/g,""));if(ep>max_ep){strength_radio_arr[i].disabled=true;document.getElementById("disabled_buttons_text").style.display="block";if(strength_radio_arr[i].checked){strength_radio_arr[i].checked=false;max_ep_element.checked=true;}}else{strength_radio_arr[i].disabled=false;}
if(!strength_radio_arr[i].disabled&&strength_radio_arr[i].value.replace(/[0-9]/g,"")==checked_code){max_ep_element=strength_radio_arr[i];}}}
function draw_sphere(diameter)
{var factor_width=max_width/diameter;var factor_height=max_height/diameter;var factor=Math.min(factor_width,factor_height);var d=factor*diameter;var d2y=d/2;if(adjust_container){var adj_height=max_height-d;offset_y-=adj_height;var new_height=parseInt(jg_div.style.height)-adj_height;jg_div.style.height=new_height.toString()+"px";}
jg.setColor(green[display_final]);jg.fillArc(tx(0),ty(d),d,d,180,0);jg.setColor(red[display_final]);jg.fillEllipse(tx(0),ty(d/2+d2y/2),d,d2y);jg.setColor(red[display_final]);jg.fillArc(tx(0),ty(d),d,d,0,180);jg.setColor(black);jg.setStroke(stroke);jg.drawEllipse(tx(-1),ty(d),d-1,d-1);if(dim1_final){jg.setColor(black);drawArrow(0,-10,d);var label_x,label_width;var char_height=18;label_x=tx(0);label_y=ty(-12);var text_width=(diameter.toString().length+2)*10;if(d>text_width){label_width=d;jg.drawStringRect(format_dim(diameter),label_x,label_y,label_width,"center");}else{jg.drawString(format_dim(diameter),label_x,label_y);}}
jg.paint();}
function draw_disc(diameter,height,mag_dim,hole)
{var factor_width=max_width/diameter;var factor_height=max_height/(height+diameter/2);var factor=Math.min(factor_width,factor_height);var d=Math.floor(factor*diameter);var h=Math.floor(factor*height/1.5);var dx=d;var dy=Math.floor(d/2);if(adjust_container){var adj_height=max_height-h-dy;offset_y-=adj_height;var new_height=parseInt(jg_div.style.height)-adj_height;jg_div.style.height=new_height.toString()+"px";}
if(mag_dim==2){jg.setColor(green[display_final]);jg.fillEllipse(tx(0),ty(dy),dx,dy);jg.setColor(black);jg.setStroke(stroke);jg.drawEllipse(tx(0)-stroke_offset,ty(dy)-stroke_offset,dx-stroke_offset,dy);jg.setColor(green[display_final]);jg.fillRect(tx(0),ty(dy/2+h/2),d,h/2);jg.setColor(red[display_final]);jg.fillEllipse(tx(0),ty(dy+h/2),dx,dy);jg.setColor(red[display_final]);jg.fillRect(tx(0),ty(dy/2+h),d,h/2);jg.setColor(black);jg.setStroke(stroke);jg.drawLine(tx(0)-stroke_offset,ty(dy/2)-stroke_offset,tx(0)-stroke_offset,ty(dy/2+h));jg.drawLine(tx(d)-stroke_offset,ty(dy/2)-stroke_offset,tx(d)-stroke_offset,ty(dy/2+h));jg.setColor(red[display_final]);jg.fillEllipse(tx(0),ty(dy+h),dx,dy);jg.setColor(black);jg.setStroke(stroke);jg.drawEllipse(tx(0)-stroke_offset,ty(dy+h)-stroke_offset,dx-stroke_offset,dy);}else if(mag_dim==1){jg.setColor(red[display_final]);jg.fillEllipse(tx(0),ty(dy),dx,dy);jg.setColor(black);jg.setStroke(stroke);jg.drawEllipse(tx(0)-stroke_offset,ty(dy)-stroke_offset,dx-stroke_offset,dy);jg.setColor(red[display_final]);jg.fillRect(tx(0),ty(dy/2+h),d,h);jg.setColor(green[display_final]);jg.fillArc(tx(0)-1,ty(dy),dx,dy,240,120);var x1=0.25*d;var y1=0.114/2*dy;var x2=d/2;var y2=dy/2;var x3=x1;var y3=(1-(0.114/2))*dy;jg.fillPolygon(Array(tx(x1),tx(x2),tx(x3)),Array(ty(y1),ty(y2),ty(y3)));jg.setColor(green[display_final]);jg.fillRect(tx(x1),ty(dy/2+h),d-x1,h);jg.setColor(black);jg.setStroke(stroke);jg.drawLine(tx(0)-stroke_offset,ty(dy/2)-stroke_offset,tx(0)-stroke_offset,ty(dy/2+h));jg.drawLine(tx(d)-stroke_offset,ty(dy/2)-stroke_offset,tx(d)-stroke_offset,ty(dy/2+h));jg.setColor(green[display_final]);jg.fillEllipse(tx(0),ty(dy+h),dx,dy);jg.setColor(red[display_final]);jg.fillArc(tx(0),ty(dy+h),dx,dy,60,240);jg.setColor(black);jg.setStroke(stroke);jg.drawEllipse(tx(0)-stroke_offset,ty(dy+h)-stroke_offset,dx-stroke_offset,dy-stroke_offset);}
if(isNaN(hole)==false){hole_dx=factor*hole;hole_dy=factor*hole/2;jg.setColor(grey);jg.fillEllipse(tx((d-hole_dx)/2),ty(h+hole_dy+(dy-hole_dy)/2),hole_dx,hole_dy);jg.setColor(black);jg.setStroke(stroke);jg.drawEllipse(tx((d-hole_dx)/2),ty(h+hole_dy+(dy-hole_dy)/2),hole_dx-2,hole_dy-2);}
if(dim1_final){jg.setColor(black);drawArrow(0,-10,d);var label_x,label_y,label_width;var char_height=18;label_x=tx(0);label_y=ty(-12);var text_width=(diameter.toString().length+2)*10;if(d>text_width){label_width=d;jg.drawStringRect(format_dim(diameter),label_x,label_y,label_width,"center");}else{jg.drawString(format_dim(diameter),label_x,label_y);}}
if(dim2_final){label_x=tx(d+5);label_y=ty(dy/2+h/2-5)-char_height/2;jg.drawString(format_dim(height),label_x,label_y);}
jg.paint();}
function draw_block(dim1,dim2,dim3,mag_dim)
{var label_width=50;var label_height=50;var factor_width=(max_width)/(dim1+dim2/2);var factor_height=(max_height)/(dim3+dim2/2);var factor=Math.min(factor_width,factor_height);s1=Math.floor(factor*dim1);s2=Math.floor(factor*dim2);s3=Math.floor(factor*dim3);var s2x=Math.floor(s2/3);var s2y=Math.floor(s2/3);if(adjust_container){var adj_height=max_height-s3-s2y;offset_y-=adj_height;var new_height=parseInt(jg_div.style.height)-adj_height;jg_div.style.height=new_height.toString()+"px";}
var color_split_front_side,color_split_right_side,color_split_top_side;if(mag_dim==1){color_split_front_side=4;color_split_right_side=2;color_split_top_side=4;}else if(mag_dim==2){color_split_front_side=1;color_split_right_side=4;color_split_top_side=3;}else if(mag_dim==3){color_split_front_side=3;color_split_right_side=3;color_split_top_side=2;}
var xPoints,yPoints;var polygon=new Array(4);polygon[0]=new Array(0,0);polygon[1]=new Array(s1,0);polygon[2]=new Array(s1,s3);polygon[3]=new Array(0,s3);draw_block_side(polygon,color_split_front_side);polygon[0]=new Array(s1,0);polygon[1]=new Array(s1+s2x,s2y);polygon[2]=new Array(s1+s2x,s2y+s3);polygon[3]=new Array(s1,s3);draw_block_side(polygon,color_split_right_side);polygon[0]=new Array(0,s3);polygon[1]=new Array(s1,s3);polygon[2]=new Array(s1+s2x,s2y+s3);polygon[3]=new Array(s2x,s3+s2y);draw_block_side(polygon,color_split_top_side);var label_x,label_y,label_width;var char_height=18;if(dim1_final){label_x=tx(0);label_y=ty(-3);var text_width=(dim1.toString().length+2)*10;if(s1>text_width){label_width=s1;jg.drawStringRect(format_dim(dim1),label_x,label_y,label_width,"center");}else{jg.drawString(format_dim(dim1),label_x,label_y);}}
if(dim2_final){label_x=tx(s1+s2x/2+8);label_y=ty(s2y/2-5)-char_height/2;jg.drawString(format_dim(dim2),label_x,label_y);}
if(dim3_final){label_x=tx(s1+s2x+5);label_y=ty(s2y+s3/2)-char_height/2;jg.drawString(format_dim(dim3),label_x,label_y);}
jg.paint();}
function draw_block_side(polygon,color_split)
{var p,xy_arr;if(color_split==1||color_split==2){if(color_split==1){jg.setColor(green[display_final]);}else{jg.setColor(red[display_final]);}
p=new Array(polygon[0],polygon[1],polygon[2],polygon[3]);xy_arr=get_polygon_xy_arr(p);jg.fillPolygon(xy_arr[0],xy_arr[1]);}else{if(color_split==4){var temp=polygon[0];polygon[0]=polygon[3];polygon[3]=polygon[2];polygon[2]=polygon[1];polygon[1]=temp;}
var center03=new Array(polygon[3][0]-(polygon[3][0]-polygon[0][0])/2,polygon[3][1]-(polygon[3][1]-polygon[0][1])/2);var center12=new Array(polygon[2][0]-(polygon[2][0]-polygon[1][0])/2,polygon[2][1]-(polygon[2][1]-polygon[1][1])/2);jg.setColor(green[display_final]);p=new Array(polygon[0],polygon[1],center12,center03);xy_arr=get_polygon_xy_arr(p);jg.fillPolygon(xy_arr[0],xy_arr[1]);jg.setColor(red[display_final]);p=new Array(center03,center12,polygon[2],polygon[3]);xy_arr=get_polygon_xy_arr(p);jg.fillPolygon(xy_arr[0],xy_arr[1]);}
jg.setColor(black);xy_arr=get_polygon_xy_arr(polygon);jg.setStroke(stroke);jg.drawPolygon(xy_arr[0],xy_arr[1]);}
function drawArrow(x,y,width){jg.setStroke(1);var ah_length=5;var ah_height=2;jg.drawLine(tx(x),ty(y),tx(width),ty(y));jg.drawLine(tx(x),ty(y),tx(x)+ah_length,ty(y)+ah_height);jg.drawLine(tx(x),ty(y),tx(x)+ah_length,ty(y)-ah_height);jg.drawLine(tx(width),ty(y),tx(width)-ah_length,ty(y)+ah_height);jg.drawLine(tx(width),ty(y),tx(width)-ah_length,ty(y)-ah_height);}
function get_polygon_xy_arr(polygon)
{var xPoints=Array();var yPoints=Array();for(var i=0;i<polygon.length;++i){xPoints[i]=tx(polygon[i][0]);yPoints[i]=ty(polygon[i][1]);}
return new Array(xPoints,yPoints);}
function tx(x)
{return offset_x+sign_x*x;}
function ty(y)
{return offset_y+sign_y*y;}
function dim_arr_sort(a,b)
{return b[0]-a[0];}
function format_dim(dim)
{var t=dim.toString();if(dec==",")t=t.replace(/\./,",");return t+" mm";}
function set_focus(form,field)
{document.forms[form].elements[field].focus();document.forms[form].elements[field].select();}
String.prototype.charRefToUnicode=function()
{return this.replace(/&#(([0-9]{1,7})|(x[0-9a-f]{1,6}));?/gi,function(match,p1,p2,p3,offset,s){return String.fromCharCode(p2||("0"+p3));});}