//-----------------------------------------------------
// Shared JavaScript functions for CSS activities


// set a CSS property on an element
function setCSSProperty(id, id_property, id_value) {
  var elementRef = getElement(id);
  if( (elementRef != null) && (elementRef.style != null) ) { 
    elementRef.style[ id_property ] = id_value;
  }
}
	
// Applies classes to objects
//  a  = action to be done (swap,add,remove,check)
//  o  = object to have the action done on
//  c1 = first class used for all options
//  c2 = second class only used for swap 
function jscss(a,o,c1,c2)
{
  switch (a){
    case 'swap':
      o.className=!jscss('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
    break;
    case 'add':
      if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
    break;
    case 'remove':
      var rep=o.className.match(' '+c1)?' '+c1:c1;
      o.className=o.className.replace(rep,'');
    break;
    case 'check':
      return new RegExp('\\b'+c1+'\\b').test(o.className)
    break;
  }
}	
	
// get an element reference	
function getElement(id) {
  var reference = null;
  if(typeof(id) == "object") {
    reference = id;
  } else {
    reference = document.getElementById(id);
  }
  return reference;
}

// construct an XML HTTML request object for various web browsers
function getXMLObject() {
  obj = null;
  if(window.XMLHttpRequest) {
    obj = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    obj = new ActiveXObject("Microsoft.XMLHTTP");
  } 
  return obj;
}

// global variables for the next few functions
var request;
var request_element;

// send a HTTP request
function sendRequest(url,type) {
  request = getXMLObject();
  if(type == 'fillElement') {
    request.onreadystatechange=fillElementHandler;
  } else if(type == 'translateSaved') {
    request.onreadystatechange=translation_SavedHandler;
  } else if(type == 'editorial') {
    request.onreadystatechange=editorial_Handler;
  } else if(type == 'getTranslation') {
    request.onreadystatechange=getTranslationHandler;
  } else if(type == 'catSummary') {
    request.onreadystatechange=catSummaryHandler;
  }
  now = new Date();
  request.open("POST",url);
  request.send(null); //now.getTime());
}  

// send a HTTP POST request
function sendPostRequest(url,type,data)
{
  request = getXMLObject();
  if (type == 'translationSave') {
    request.onreadystatechange=translationSaveHandler;
  } else if (type == 'filterSave') {
    request.onreadystatechange=filterSaveHandler;
  }
  
  request.open("POST",url);
  request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  request.setRequestHeader("Content-length", data.length);
  request.setRequestHeader("Connection", "close");
  request.send(data);
}

// fill a DIV with HTML content from a URL
function fillElement(id,url) {
  request_element = getElement(id);
  sendRequest(url,'fillElement');
}

// event handler to set the HTML content
function fillElementHandler() {
  if (request.readyState == 4) {
    if(request.status==200) {
      request_element.innerHTML = request.responseText;
      setCSSProperty(request_element,"display","block");
    } else {
      alert(request.status);
//      setCSSProperty(request_element,"display","none");
    }
  }
}
  

