/*
    This is the JavaScript file for the AJAX Suggest Tutorial
    You may use this code in your own projects as long as this 
    copyright is left    in place.  All code is provided AS-IS.
    This code is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    For the rest of the code visit http://www.DynamicAJAX.com
    
    Copyright 2006 Ryan Smith / 345 Technical / 345 Group.    
*/
var mystr = "";
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if(window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
    }
}
//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();
//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest() {
    if (searchReq.readyState == 4 || searchReq.readyState == 0) {
        var str = escape(document.getElementById('txtSearch').value);
    //alert(str);
        searchReq.open("GET", '/english/service/dld_search_suggest.php?search=' + str, true);
        searchReq.onreadystatechange = handleSearchSuggest; 
        searchReq.send(null);
    }        
}
//Called when the AJAX response is returned.
function handleSearchSuggest() {
    if (searchReq.readyState == 4) {
        var ss = document.getElementById('search_suggest')
    ss.innerHTML = '';
//      ss.innerHTML = '<div name="default_div" id="default_div" class="default_div"></div>';
// check if os-selectbox is there
    var os_control = document.getElementsByName('operatingsystem_id');
    var os_control_length = os_control.length;
    //alert(os_control_length);
    
        var str = searchReq.responseText.split("\n");
//    alert(str.length);
    if (str.length > 1)
    {
    document.getElementById('search_message').innerHTML = 'Choose your product...';
    document.getElementById('search_suggest').style.visibility = 'visible';
    //hide select-boxes because of bloody IE6
    document.getElementById('product_id').style.visibility = 'hidden';
    if (os_control_length > 0) document.getElementById('operatingsystem_id').style.visibility = 'hidden';
    document.getElementById('filelanguage_id').style.visibility = 'hidden';    
    
    } else {
//    alert('No match...');
    document.getElementById('search_message').innerHTML = '<font color="red">Product not found</font>';
    document.getElementById('search_suggest').style.visibility = 'hidden';
    //make select-boxes visible because of bloody IE6
    document.getElementById('product_id').style.visibility = 'visible';
    if (os_control_length > 0) document.getElementById('operatingsystem_id').style.visibility = 'visible';
    document.getElementById('filelanguage_id').style.visibility = 'visible';
    }
    
    
        for(i=0; i < str.length - 1; i++) {
            //Build our element string.  This is cleaner using the DOM, but
            //IE doesn't support dynamically added attributes.
      mystr = str[i].split(":::");
     
            var suggest = '<div name="mydiv" id="mydiv" onmouseover="javascript:suggestOver(this);" ';
            suggest += 'onmouseout="javascript:suggestOut(this);" ';
            suggest += 'onclick="javascript:setSearch(\''+mystr[0]+'\',\''+mystr[1]+'\');" ';
      suggest += 'class="out"><div id="id_div_'+i+'" style="display:none;">'+mystr[0]+'</div>' + mystr[1] +'</div>';
//            suggest += 'class="suggest_link">' + mystr[1] + '</div>';
            ss.innerHTML += suggest;
        }
    }
}

//Mouse over function
function suggestOver(div_value) {
  clearcss('mydiv');
    div_value.className = 'over';
  div_value.style.color = "#ffffff";
}
//Mouse out function
function suggestOut(div_value) {
  clearcss('mydiv');
    div_value.className = 'out';
  div_value.style.color = "";  
}
function clearcss(divs)
{
var elemente = document.getElementsByName(divs);
var Anzahl = elemente.length;
for(i="0"; i < Anzahl; i++)
{
  elemente[i].style.color = "";
  elemente[i].className = "out";
}
}

function runSearch(ev, divs) 
{

var nextelement = "";
var prevelement = "";
var aktiv = "";
var elemente = document.getElementsByName(divs);
var Anzahl = elemente.length;
var elementmax = Anzahl - 1;
var colorHigh = "#ffffff";
var b_divsExist = false;
//alert(Anzahl);
if(Anzahl > "0") 
{
b_divsExist = true;
}

for(i="0"; i < Anzahl; i++)
{
  if (elemente[i].style.color != "")
  {  
    aktiv = i; 
  } 
} 
keys=((ev.which)||(ev.keyCode));
switch(keys) {
//no functions:
 case 16: break; //shift
 case 17: break; //crtl
 case 18: break; //alt
 case 33: break; //page up
 case 34: break; //page down
 case 39: break; //arrow right
 case 37: break; //arrow left
// TAB-key
 case 9:
    if(aktiv >= "0" && aktiv <= elementmax)
      { 
        var id_div = document.getElementById('id_div_'+aktiv);
        setSearch(id_div.innerHTML, '...');
      }  
   break;
 case 13:
// enter-key 
    if(aktiv >= "0" && aktiv <= elementmax)
      { 
        var id_div = document.getElementById('id_div_'+aktiv);
        setSearch(id_div.innerHTML, '...');
      } else {
      //do nothing
      }  
   break;   
 case 38:
   //alert('up arrow');
   if(aktiv >= "0" && aktiv <= elementmax)
   {
      prevelement = aktiv - 1;
      if (prevelement == "01") prevelement = 1;
      if (prevelement == "-1") prevelement = elementmax;
      elemente[aktiv].style.color = "";
      elemente[aktiv].className = "out";
      elemente[prevelement].style.color = colorHigh;
      elemente[prevelement].className = "over";
      //elemente[prevelement].scrollIntoView(true);
   } else {
      if(b_divsExist)
      {
        elemente[0].style.color = colorHigh;
        elemente[0].className = "over";
        //elemente[0].scrollIntoView(false);
      }
   }
   break;
 case 40:
   //alert('down arrow ' + aktiv);
   if(aktiv >= "0" && aktiv <= elementmax)
   {
      nextelement = aktiv + 1;
      if (nextelement == "01") nextelement = 1;
      if (nextelement == Anzahl) nextelement = 0;
      elemente[aktiv].style.color = "";
      elemente[aktiv].className = "out";
      elemente[nextelement].style.color = colorHigh;
      elemente[nextelement].className = "over";
      elemente[nextelement].scrollIntoView(false);
   } else {
      if(b_divsExist)
      {
        elemente[0].style.color = colorHigh;
        elemente[0].className = "over";
        //elemente[0].scrollIntoView(false);
      }
   }
      
   break;
   default:
    window.setTimeout("searchSuggest()",1000); 
    document.getElementById('search_suggest').style.visibility = 'visible';
    document.getElementById('search_suggest').innerHTML = '<div name="default_div" id="default_div" class="default_div"></div>';
    document.getElementById('search_message').innerHTML = 'Searching...';
   break;
  }
}

//Click function
function setSearch(value1, value2) {
    document.getElementById('txtSearch').value = '...';
  document.getElementById('search_id').value = value1;
  document.getElementById('search_suggest').style.visibility = 'hidden';
    document.getElementById('search_suggest').innerHTML = '';
  document.productselection.submit();
}
