/*************************************
* PCS - JavaScript function library.
* Cause never trust any foreign code.
*
* @author Marius Großer 2004
**************************************/

function PCS_findObj(s_id, d) {
  var o_doc = (d ? d : document);
  if(o_doc[s_id])
    return o_doc[s_id];
  if(o_doc.all && o_doc.all[s_id])
    return o_doc.all[s_id];
  if(o_doc.getElementById)
    return o_doc.getElementById(s_id);
  return null;
}

function PCS_showLayerOf(id, a_id) {
  var o_show = PCS_findObj(id,null);
  if(!o_show)
    return;
  if(o_show.style)
    o_show = o_show.style;
  o_show.visibility = 'visible';
  o_show.zIndex = 20;
  for(i=0;i<a_id.length;i++) {
    if(a_id[i]==id)
      continue;
    var o_hide = PCS_findObj(a_id[i],null);
    if(!o_hide)
      continue;
    if(o_hide.style)
      o_hide = o_hide.style;
    o_hide.visibility = 'hidden';
    o_hide.zIndex = 10;
  }
}

function PCS_preloadImages() {
  var o_doc  = document,
      a_args = PCS_preloadImages.arguments,
      i, a_plimgs, a_elt, o_img;
  // init preload array if not already done
  if(!o_doc.PCS_a_plimgs)
    o_doc.PCS_a_plimgs = new Array;
  a_plimgs = o_doc.PCS_a_plimgs;
  // build img objs and add to preload array
  for(i = 0; i <a_args.length; i++) {
    if(PCS_getPreloadedImg(a_args[i]))
      continue;
    o_img = new Image;
    o_img.src = a_args[i];
    a_elt = new Array;
    a_elt[0] = o_img.src;
    a_elt[1] = o_img;
    a_plimgs[a_plimgs.length] = a_elt;
  }
}

function PCS_getPreloadedImg(s_src) {
  var o_doc = document,
      a_plimgs, a_elt, i;
  if(!o_doc.PCS_plimgs) {
    o_doc.PCS_plimgs = new Array;
    return null;
  }
  a_plimgs = o_doc.PCS_plimgs;
  for(i=0;i<a_plimgs.length;i++) {
    a_elt = a_plimgs[i];
    if(a_elt[0]==s_src)
      return a_elt[1];
  }
  return null;
}

function PCS_swapImage(s_id, s_src) {
  var o_img   = PCS_findObj(s_id),
      o_plimg = PCS_getPreloadedImg(s_src);
  if(!o_img || !s_src)
    return;
  if(!o_img.oSrc)
    o_img.oSrc = o_img.src;
  o_img.src = o_plimg ? o_plimg.src : s_src;
}

function PCS_restoreSwapImage(s_id) {
  var o_img = PCS_findObj(s_id);
  if(!o_img)
    return;
  if(o_img.oSrc)
    o_img.src = o_img.oSrc;
}

function PCS_swapLayer(s_show_id, s_hide_id) {
  var o_show = PCS_findObj(s_show_id),
      o_hide = PCS_findObj(s_hide_id);
  if(!o_show || !o_hide)
    return;
  if(o_show.style)
    o_show = o_show.style;
  if(o_hide.style)
    o_hide = o_hide.style;
  o_show.visibility = 'visible';
  o_hide.visibility = 'hidden';
}

function PCS_isVisible(m_elt) {
  var o_elt = typeof(m_elt) == 'object'
    ? m_elt : PCS_findObj(m_elt);
  if(!o_elt)
    return false;
  if(o_elt.style)
    o_elt = o_elt.style;
  return o_elt.visibility == 'visible';
}

function PCS_swapBgColor(o_elt, s_color, i_prnt) {
  var o_prnt = null;
  if(!o_elt || !s_color)
    return;
  if(i_prnt) {
    o_prnt = PCS_getParent(o_elt);
    if(o_prnt)
      o_elt = o_prnt;
  }
  if(o_elt.style)
    o_elt = o_elt.style;
  if(!o_elt.oBackgroundColor)
    o_elt.oBackgroundColor = o_elt.backgroundColor;
  o_elt.backgroundColor = s_color;
}

function PCS_restoreBgColor(o_elt, i_prnt) {
  var o_prnt = null;
  if(!o_elt)
    return;
  if(i_prnt) {
    o_prnt = PCS_getParent(o_elt);
    if(o_prnt)
      o_elt = o_prnt;
  }
  if(o_elt.style)
    o_elt = o_elt.style;
  if(o_elt.oBackgroundColor)
    o_elt.backgroundColor = o_elt.oBackgroundColor;
}

function PCS_swapCssClass(o_elt, s_class, i_prnt) {
  var o_prnt = null;
  if(!o_elt || !s_class)
    return;
  if(i_prnt) {
    o_prnt = PCS_getParent(o_elt);
    if(o_prnt)
      o_elt = o_prnt;
  }
  if(!o_elt.oClassName)
    o_elt.oClassName = o_elt.className;
  o_elt.className = s_class;
}

function PCS_restoreCssClass(o_elt, i_prnt) {
  var o_prnt = null;
  if(!o_elt)
    return;
  if(i_prnt) {
    o_prnt = PCS_getParent(o_elt);
    if(o_prnt)
      o_elt = o_prnt;
  }
  if(o_elt.oClassName)
    o_elt.className = o_elt.oClassName;
}

function PCS_getParent(o_elt) {
  var o_prnt = null;
  if(!o_elt)
    return null;
  if(o_elt.parentElement)
    o_prnt = o_elt.parentElement;
  else if(o_elt.parentNode)
    o_prnt = o_elt.parentNode;
  else if(o_elt.parent)
    o_prnt = o_elt.parent;
  return o_prnt;
}

function PCS_setInnerHtml(s_id, s_html) {
  var o_elt = PCS_findObj(s_id);
  if(!o_elt)
    return;
  o_elt.innerHTML = s_html;
}


