/* AJAX */
var request = null;
function createAJAXRequest() {
     try {
       request = new XMLHttpRequest();
     } catch (trymicrosoft) {
       try {
         request = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (othermicrosoft) {
         try {
           request = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (failed) {
           request = null;
         }
       }
     }
}

function abort_request() {
	if (request) {
		 request.abort();
	}
}

function add_event(elem, evtType, func, where) {
	if (elem.addEventListener) {
		 elem.addEventListener(evtType, func, false);
	} else if (elem.attachEvent) {
		elem.attachEvent("on" + evtType, func);
	} else {
		elem["on" + evtType] = func;
	}
}		

function debug(msg) {
	if (navigator.userAgent == "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 Creative ZENcast v1.04.06") {
				 console.debug(msg);
	} else {
	       /*do nothing*/
	}
}

function debugalert(msg) {
	if (navigator.userAgent == "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 Creative ZENcast v1.04.06") {
				 console.debug(msg);
				 /*alert(msg);*/
	} else {
				/* alert(msg);*/
	}
}

/* Text/DOM Functions */
function replaceText(el, text) {
  if (el != null) {
    clearText(el);
    var newNode = document.createTextNode(text);
    el.appendChild(newNode);
  }
}

function clearText(el) {
  if (el != null) {
    if (el.childNodes) {
      for (var i = 0; i < el.childNodes.length; i++) {
        var childNode = el.childNodes[i];
        el.removeChild(childNode);
      }
    }
  }
}

function getText(el) {
  var text = "";
  if (el != null) {
    if (el.childNodes) {
      for (var i = 0; i < el.childNodes.length; i++) {
        var childNode = el.childNodes[i];
        if (childNode.nodeValue != null) {
          text = text + childNode.nodeValue;
        }
      }
    }
  }
  return text;
}


/* Spin Wait */
function start_wait(where) {
  var img_span = document.createElement("span");
		img_span.id = 'spin_wait';
	var space = document.createTextNode(" ");
			img_span.appendChild(space);
	var img = document.createElement('img');
	  img.src = '/images/spin_wait.gif';
	  img.alt = 'Processing...';
	  img_span.appendChild(img);
	element.appendChild(img_span); 
	/* Wait ten seconds (10000), then call the wait error check.*/
	window.setTimeout("wait_error_timer()", 10000);
}

function clear_wait() {
	if (document.getElementById("spin_wait")) {
		 var element = document.getElementById("spin_wait") 
		 while (0 < element.childNodes.length) {
		 		debugalert(element.childNodes.length);
        var childNode = element.childNodes[0];
				debugalert("Clearing wait: " + childNode);
				element.removeChild(childNode);
			}
		var parent_el = element.parentNode;
		debug(parent_el);
		parent_el.removeChild(element);
	}
}

function wait_error_timer(start_time) {
	if (request.readyState != 4) {	// while we're still waiting for a response
		error("Your request has been submitted, but we haven't received a response yet.  Your changes may have been made.  You can wait a few more seconds, or reload the page to see if your changes have been saved.", "tip");
	}
}

/* Error Handlers */
function error(msg, type) {
	var error_msg = document.createElement("h3");
	error_msg.className = type;
	var error_txt = document.createTextNode(msg);
	error_msg.appendChild(error_txt);
	document.getElementById("ajax").appendChild(error_msg); 
}

function trigger_error(msg, type) {
	var error_msg = document.createElement("h3");
	error_msg.className = type;
	var error_txt = document.createTextNode(msg);
	error_msg.appendChild(error_txt);
	document.getElementById("ajax").appendChild(error_msg); 
}


function clear_error() {
	if (document.getElementById("ajax")) {
		 var element = document.getElementById("ajax") 
		 while (0 < element.childNodes.length) {
		 		debugalert(element.childNodes.length);
        var childNode = element.childNodes[0];
				debugalert("Clearing error: " + childNode);
				element.removeChild(childNode);
			}
	}
}

/* cookie functions */
function createCookie(name, value, days)
{
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
  return null;
}

function eraseCookie(name)
{
  createCookie(name, "", -1);
}

