function AJAXInteraction(url, callback) {

    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      // readyState of 4 signifies request is complete
      if (req.readyState == 4) {
        // status of 200 signifies sucessful HTTP call
        if (req.status == 200) {
          if (callback) callback(req.responseXML);
        }
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
}

/*
function validateSymbol() {
    var target = document.getElementById("Symbol");
    if((target.value).length >= 3){
     var url = "ValidationServlet?action=symbolValidate&id=" + encodeURIComponent(target.value);    
     var target = document.getElementById("Symbol");
     var ajax = new AJAXInteraction(url, validateSymbolCallback);
     ajax.doGet();
    }else{
        var mdiv = document.getElementById("SymbolMessage");
       // set the style on the div to invalid
       mdiv.innerHTML = "";
    }
}
///////////////
function validateSymbolCallback(responseXML) {
   var msg = responseXML.getElementsByTagName("valid")[0].firstChild.nodeValue;
   if (msg == "false"){
       var mdiv = document.getElementById("SymbolMessage");
       // set the style on the div to invalid
       mdiv.className = "invalidCode";
       mdiv.innerHTML = "Not a valid ASX Symbol";
       var submitBtn = document.getElementById("quoteBtn");
       submitBtn.disabled = true;
    } else {
       var mdiv = document.getElementById("SymbolMessage");
       // set the style on the div to valid
       mdiv.className = "validCode";
       mdiv.innerHTML = msg ; //"";
       var submitBtn = document.getElementById("quoteBtn");
       submitBtn.disabled = false;
    }  
  }
  */
  function validateSymbol(e) {
    
        
    var iKeyCode=0;
      if (!e) {
    var e = window.event;
      }
      if (e.keyCode) {
    iKeyCode = e.keyCode;
     } 
    // alert(iKeyCode);
    if(iKeyCode == 40){
        if (document.getElementById("sltSymbol")) {
            if(document.getElementById("sltSymbol").length > 0){
                //alert(iKeyCode);
                document.getElementById("sltSymbol").selectedIndex=0;
                document.getElementById("sltSymbol").focus();
                return;
            }
        }
    }   
    
    var target = document.getElementById("Symbol");
    if((target.value).length >= 1){
        target.value = target.value.toUpperCase();
        var url = "ValidationServlet?action=symbolValidate&id=" + encodeURIComponent(target.value);    
        var ajax = new AJAXInteraction(url, validateSymbolCallback);
        ajax.doGet();
    }else{
	if (document.getElementById("sltSymbol")) {
    var mdiv = document.getElementById("SymbolMessage");
    document.getElementById("sltSymbol").size=0;
    document.getElementById("sltSymbol").length=0;
    document.getElementById("sltSymbol").style.visibility = "hidden";
    
    // set the style on the div to invalid
    //mdiv.innerHTML = "";
	}    
}
}

function validateSymbolCallback(responseXML) {
    var codes = new Array();
    var msg = responseXML.getElementsByTagName("valid")[0].firstChild.nodeValue;
    if (msg == "false"){
        if (document.getElementById("sltSymbol")) {
        var mdiv = document.getElementById("SymbolMessage");
        // set the style on the div to invalid
        mdiv.className = "invalidCode";
        document.getElementById("sltSymbol").size=0;
        document.getElementById("sltSymbol").length=0;
        document.getElementById("sltSymbol").style.visibility = "hidden";
        //    mdiv.innerHTML = "Not in ASX300. <select  name='sltSymbol' id='sltSymbol' onchange='putSymbol()' visible='false' ><option></option></select>";
        // var submitBtn = document.getElementById("quoteBtn");
        // submitBtn.disabled = true;
    }
    }else {
    var mdiv = document.getElementById("SymbolMessage");
    // set the style on the div to valid
    mdiv.className = "validCode";
    mdiv.innerHTML = "<select  name='sltSymbol' id='sltSymbol' onkeyup='focusSymbol(event)' onclick='focusSymbol(event)' style='font-size: 12px; border:0; width:31mm'><option></option></select>";
    codes = msg.split("/n");
    document.getElementById("sltSymbol").length=0;
    for (i= 0 ; i < codes.length-1; i++){
        // mdiv.innerHTML = codes[i]; //msg ; 
        var opt = document.createElement("option");
        
        // Add an Option object to Drop Down/List Box
        document.getElementById("sltSymbol").options.add(opt);
        
        // Assign text and value to Option object
        opt.text = codes[i];
        opt.value = codes[i];
        
    }
    
    document.getElementById("sltSymbol").size=4;
    //   var submitBtn = document.getElementById("quoteBtn");
    //  submitBtn.disabled = false;
}  
}


function putSymbol(){
    
    document.getElementById("Symbol").value = document.getElementById('sltSymbol').value;
    
}

function focusSymbol(e){
    
    var inKeyCode=0;
    if(!e) var e=window.event;
   
    var rows = document.getElementById('sltSymbol').length;
    document.getElementById("Symbol").value = document.getElementById('sltSymbol').value
    //alert(rows);
    inKeyCode = e.keyCode;
    // alert(inKeyCode);
    if(inKeyCode == 13){
     //   document.getElementById("Symbol").value = document.getElementById('sltSymbol').value;
        submitForm();
       
        //document.getElementById("Symbol").focus(); 
    }
    else if(inKeyCode == 38 && document.getElementById('sltSymbol').selectedIndex == 0){
        document.getElementById("Symbol").focus(); 
    } 
    // else if(inKeyCode == 40 && document.getElementById('sltSymbol').selectedIndex == rows-1){
    //     document.getElementById("Symbol").focus(); 
    // } 
    // document.getElementById("Symbol").focus(); 
    
}

function submitForm(){

 var target = document.getElementById("Symbol");
    if((target.value).length < 3){
        alert("Please type a proper security code.");
        document.getElementById("Symbol").focus();
        return false;
        }
    else  
      document.forms["SymbolForm"].submit();
}
//////////////////////