function removeClass(elem,cn) {
  var newclasses = new Array();
  var classes = elem.className.split(" ");
  for (var i=0; i<classes.length; i++) {
    if (classes[i] != cn) {
      newclasses[newclasses.length] = classes[i];
    }
  }
  elem.className = newclasses.join(" ");
}

function initRoundedBoxes() {
  var mtch;

  if (document.getElementById('works_cats')) {
		document.getElementById('works_cats').className = "call_rounded_gray"+" "+document.getElementById('works_cats').className;
  }

  var menus = new Array("main_menu","public_cats_locations_root_right","public_cats_locations_root_left",
                        "services_left", "services_mid", "services_right");

  for (var m=0; m<menus.length; m++) {
    if (document.getElementById(menus[m])) {
      var ul = document.getElementById(menus[m]).getElementsByTagName("ul");
      var hrefs = ul[0].getElementsByTagName('a');
      for (var i=0; i<hrefs.length; i++) {
        hrefs[i].className += " call_rounded_gray";
      }
    }
  }

  var elems = document.getElementsByTagName('div');
	var targets = new Array();
  for (var i=0; i<elems.length; i++) {
    if (mtch = elems[i].className.match(/call_rounded_([^ ]+)/)) {
			targets[targets.length] = {elem:elems[i], type: mtch[1]};
      //new RoundedBox(elems[i], mtch[1]);
    }      
  }
  for (var i=0; i<targets.length; i++) {
    new RoundedBox(targets[i].elem, targets[i].type);
  }
  var elems = document.getElementsByTagName('a');
  for (var i=0; i<elems.length; i++) {
    if (mtch = elems[i].className.match(/call_rounded_([^ ]+)/)) {
      removeClass(elems[i],mtch[0]); // clear the call_rounded_* class
      new RoundedBox(elems[i], mtch[1]);
    }      
  }  
  
  // finished roundedboxes - execute next jobs if such sequence needed
  if (window.initRoundedBoxesAfter) {
    initRoundedBoxesAfter();
  }
  
  return true;
}

function clickLinkedDiv() {
  document.location = this.getElementsByTagName("a")[0].href;
}

function initClickableMenuBoxes() {
  var menu,li,div;
  
  if (menu = document.getElementById("main_menu")) {
    if (li = menu.getElementsByTagName("li")) {
      for (var i = 0; i < li.length; i++) {
        div = li[i].getElementsByTagName("div");
        for (var j = 0; j < div.length; j++) {
          if (/.*roundedbox.*/.test(div[j].className)) {
            div[j].onclick = clickLinkedDiv;
          }
        }
      }
    }
  }
  
}

window.initRoundedBoxesHandler = initRoundedBoxes;
window.initClickableMenuBoxesHandler = initClickableMenuBoxes;
window.clickLinkedDivHandler = clickLinkedDiv;

addEvent(window, 'load', 'initRoundedBoxesHandler');
addEvent(window, 'load', 'initClickableMenuBoxesHandler');

function RoundedBox(targetid, style) {
  var div,div2,div3;
  var target;
	var prev_class;

  if (typeof(targetid) == "string") {
    target = document.getElementById(targetid);
  } else {
    target = targetid;
  }
  
  if (this.skipBoxing(target)) {
    return false;
  }
  
  var rs = document.createElement("div");
  rs.className = "roundedbox rightside " + style + " rb_rightside_" + style;
	prev_class = target.className;
	target.className = "";
  rs.appendChild(target.cloneNode(true));

  var ls = document.createElement("div");
  ls.className = "roundedbox leftside " + style + " rb_leftside_" + style;
  ls.appendChild(rs);
  
  var bs = document.createElement("div");
  bs.className = "roundedbox bottomside " + style;
  bs.appendChild(ls);
  
  var bl = document.createElement("div");
  bl.className = "roundedbox bottomleft " + style + " rb_bottomleft_" + style;
  bs.appendChild(bl);

  var br = document.createElement("div");
  br.className = "roundedbox bottomright " + style + " rb_bottomright_" + style;
  bl.appendChild(br);

  var bi = document.createElement("div");
  bi.className = "roundedbox bottominside " + style + " rb_bottominside_" + style;
  if (document.all) {
    var im = new Image();
    im.src = "/images/spacer.gif";
    im.className = "dummypic";
    bi.appendChild(im);
  }
  br.appendChild(bi);
  
  var ts = document.createElement("div");
  ts.className = "roundedbox roundedbox topside " + style + ' ' + prev_class;
  ts.appendChild(bs);
 
  var tl = document.createElement("div");
  tl.className = "roundedbox topleft " + style + " rb_topleft_" + style;
  ts.insertBefore(tl,bs);

  var tr = document.createElement("div");
  tr.className = "roundedbox topright " + style + " rb_topright_" + style;
  tl.appendChild(tr);
  
  var ti = document.createElement("div");
  ti.className = "roundedbox topinside " + style + " rb_topinside_" + style;
  if (document.all) {
    var im = new Image();
    im.src = "/images/spacer.gif";
    im.className = "dummypic2";
    ti.appendChild(im);
  }  
  tr.appendChild(ti);
	target.parentNode.replaceChild(ts,target);

}

RoundedBox.prototype.skipBoxing = function(el) {
  var s = el.getElementsByTagName("span");
  for (var i=0; i<s.length; i++) {
    if (s[i].className == "nobox") {
      return true;
    }
  }
  return false;
}

