var addressBook = {

  myConn:      false,
  body:        false,
  control:     false,
  target:      false,
  loader:      false,
  init:        function( controlId, size, fwidth, fheight, mount, fovx, fovxmm, fovxin, fovy, fovymm, fovyin, wd, wdmm, wdin, lss, targetId ){
   // alert('test');
     
    
    /*if( !document.getElementById ||
        !document.getElementsByTagName ||
        !document.getElementById( controlId ) ||
        !document.getElementById( size ) ||
        !document.getElementById( mount ) ||
        !document.getElementById( targetId ) ) return;*/


    addressBook.myConn = new XHConn();
    if( !addressBook.myConn ) return;
    
    addressBook.body    = document.getElementsByTagName( 'body' )[0];
    addressBook.control = document.getElementById( controlId );
	addressBook.target  = document.getElementById( targetId );
	//alert( addressBook.target.id ); 
    
    //THE SIX FORM FIELDS
    addressBook.size          = document.getElementById( size );
    addressBook.fwidth        = document.getElementById( fwidth );
    addressBook.fheight       = document.getElementById( fheight );
	addressBook.mount         = document.getElementById( mount );
    addressBook.fovx          = document.getElementById( fovx );
    addressBook.fovy          = document.getElementById( fovy );
    addressBook.wd            = document.getElementById( wd );
	addressBook.lss           = document.getElementById( lss );
	
    function IsNumeric(sText, field)//Function to check for numbers and whitespace
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
      
    if(!IsNumber || sText.length==0){
	    IsNumber = false;
	    addressBook.target.innerHTML = "<div class=\"warning\">Enter only numbers with no spaces into the <font color=\"#880000\"><u>"+field+"</u></font> field.</div>";
	    //alert("Enter only numbers with no whitespace into the "+field+" field."); 
    } 
      
      
   return IsNumber;
   
}//end of IsNumeric Function

    
                    
    
    addressBook.addEvent( addressBook.control,
                          'click',
                          function(){
                          //alert('test3');
                          
						    addressBook.fovxtype = document.selectform.fovxmm.checked ? 'mm' : 'in';
						   // alert('test4');
						    addressBook.fovytype = document.selectform.fovymm.checked ? 'mm' : 'in';
						    
						    addressBook.wdtype   = document.selectform.wdmm.checked ? 'mm' : 'in';
						  
							
							//alert(addressBook.wdtype + "  -  " + addressBook.fovxtype + "  -  " + addressBook.fovytype);
    						//alert(addressBook.fovx.value + "  -  " + addressBook.fovy.value + "  -  " + addressBook.wd.value);
    
   
							 if( addressBook.size.value != '' ){
							 	if( IsNumeric( addressBook.wd.value, 'Working Distance' ) && IsNumeric( addressBook.fovx.value, 'Field of View X-axis' ) && IsNumeric( addressBook.fovy.value, 'Field of View Y-axis' ) )
							 	{
							 		if( addressBook.lss.value > 42 || addressBook.fwidth.value > 42 ||  addressBook.fheight.value > 42 ){
							 		 //alert("Please enter a value less than 42mm for linescan cameras.");
							 		 	addressBook.target.innerHTML = "<div class=\"warning\">Please enter a value less than  <font color=\"#880000\"><i>42mm</i></font> for <font color=\"#880000\"><i>linescan</i></font> and <font color=\"#880000\"><i>non-standard</i></font> sensor sizes.</div>";
							 		 
							 		}

							 		else{
							 		    addressBook.getAddress( addressBook.size.value,
						                              addressBook.fwidth.value,
						                              addressBook.fheight.value,
                              						  addressBook.mount.value,
                              						  addressBook.fovx.value,
                              						  addressBook.fovxtype,
                              						  addressBook.fovy.value,
                              						  addressBook.fovytype,
                              						  addressBook.wd.value,
                              						  addressBook.wdtype,
                              						  addressBook.lss.value);
                              			}
							 	}
							 	else{
                          			//addressBook.target.innerHTML = 'ERROR!';
                              	}//end of isnumeric else
                            } else {
                             // alert('test');
                              addressBook.target.innerHTML = '';
                            }
                          } );
                          
                        
                          
                         
  },
  getAddress:  function( size, fwidth, fheight, mount, fovx, fovxtype, fovy, fovytype, wd, wdtype, lss){
    addressBook.buildLoader();
    var fnWhenDone = function(oXML) {
      addressBook.killLoader();
      addressBook.target.innerHTML = oXML.responseText;
    };
    addressBook.myConn.connect("lenses3.php", "POST", "size="+size+"&fwidth="+fwidth+"&fheight="+fheight+"&mount="+mount+"&fovx="+fovx+"&fovxtype="+fovxtype+"&fovy="+fovy+"&fovytype="+fovytype+"&wd="+wd+"&wdtype="+wdtype+"&lss="+lss, fnWhenDone);
  },
  buildLoader: function(){
    addressBook.loader = document.createElement( 'div' );
    addressBook.loader.setAttribute( 'id', 'loading' );
    addressBook.loader.style.position   = 'absolute';
    addressBook.loader.style.top        = '340px';
    addressBook.loader.style.left       = '50%';
    addressBook.loader.style.width      = '300px';
    addressBook.loader.style.lineHeight = '60px';
    addressBook.loader.style.margin     = '-50px 0 0 -150px';
    addressBook.loader.style.textAlign  = 'center';
    addressBook.loader.style.border     = '1px solid #870108';
    addressBook.loader.style.background = '#fff';
    addressBook.loader.appendChild( document.createTextNode( 'Finding Lenses, One Moment Please...\u2026' ) );
    addressBook.body.appendChild( addressBook.loader );
  },
  killLoader:  function(){
    addressBook.body.removeChild( addressBook.loader );
  },
  addEvent: function( obj, type, fn ){  // the add event function
    if (obj.addEventListener) obj.addEventListener( type, fn, false );
    else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() {
        obj["e"+type+fn]( window.event );
      };
      obj.attachEvent( "on"+type, obj[type+fn] );
    }
  }
};
addressBook.addEvent( window, 'load', function(){

addressBook.init( 'find',
                  'size',
                  'fwidth',
                  'fheight',
                  'mount',
                  'fovx',
                  'fovxmm',
                  'fovxin',
                  'fovy',
                  'fovymm',
                  'fovyin',
                  'wd',
                  'wdmm',
                  'wdin',
                  'lss',
                  'results' );
                  
           }
               
                  
 );

                                      
                  