window.onload = init;

function init() {
	prepareForm("yahoosearch","container","search.php");
}

function prepareForm(formId,canvasId,file) {
  if (!document.getElementById) return false;
  if (!document.getElementById(formId)) return false;
  document.getElementById(formId).onsubmit = function() {
    var data = "";
    for (var i=0; i<this.elements.length; i++) {
      data+= this.elements[i].name;
      data+= "=";
      data+= escape(this.elements[i].value);
      data+= "&";
    }
    return (!sendData(data,file,canvasId));
  };
}

function sendData(data,file,canvasId) {
  var request = getHTTPObject();
  if (request) {
    displayLoading(canvasId);
    request.onreadystatechange = function() {
      parseResponse(request,canvasId);
    };
    request.open( "POST", file, true );
    request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    request.send(data);
    return true;
  } else {
    return false;
  }
}

function parseResponse(request,canvasId) {
  if (request.readyState == 4) {
    if (request.status == 200) {
      var canvas = document.getElementById(canvasId)
      canvas.innerHTML = request.responseText;
      fadeUp(canvas,255,255,204);
      init();
    }
  }
}

function displayLoading(canvasId) {
  var canvas = document.getElementById(canvasId);
  emptyElement(canvas);
  var image = document.createElement("img");
  image.setAttribute("alt","loading...");
  image.setAttribute("src","../../images/loading.gif");
  canvas.appendChild(image);
}

function emptyElement(element) {
  while (element.hasChildNodes()) {
    element.removeChild(element.lastChild);
  }
}

function fadeUp(element,red,green,blue) {
  if (element.fade) { clearTimeout(element.fade); }
  if (red == 255 && green == 255 && blue == 255) {
    element.style.backgroundColor = "transparent";
    return;
  }
  var newred = red + Math.ceil((255 - red)/10);
  var newgreen = green + Math.ceil((255 - green)/10);
  var newblue = blue + Math.ceil((255 - blue)/10);
  element.style.backgroundColor = "rgb("+newred+","+newgreen+","+newblue+")";
  element.fade = setTimeout(function() { fadeUp(element,newred,newgreen,newblue); },80);
}


function getHTTPObject() {
  var xhr = false;
  if (window.ActiveXObject) {
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xhr = false;
      }
    }
  } else if (window.XMLHttpRequest) {
    try {
      xhr = new XMLHttpRequest();
    } catch(e) {
      xhr = false;
    }
  }
  return xhr;
}