function inspect(obj, maxLevels, level)
{
  var str = '', type, msg;

    // Start Input Validations
    // Don't touch, we start iterating at level zero
    if(level == null)  level = 0;

    // At least you want to show the first level
    if(maxLevels == null) maxLevels = 1;
    if(maxLevels < 1)     
        return '<font color="red">Error: Levels number must be > 0</font>';

    // We start with a non null object
    if(obj == null)
    return '<font color="red">Error: Object <b>NULL</b></font>';
    // End Input Validations

    // Each Iteration must be indented
    str += '<ul>';

    // Start iterations for all objects in obj
    for(property in obj)
    {
      try
      {
          // Show "property" and "type property"
          type =  typeof(obj[property]);
          str += '<li>(' + type + ') ' + property + 
                 ( (obj[property]==null)?(': <b>null</b>'):('')) + '</li>';

          // We keep iterating if this property is an Object, non null
          // and we are inside the required number of levels
          if((type == 'object') && (obj[property] != null) && (level+1 < maxLevels))
          str += inspect(obj[property], maxLevels, level+1);
      }
      catch(err)
      {
        // Is there some properties in obj we can't access? Print it red.
        if(typeof(err) == 'string') msg = err;
        else if(err.message)        msg = err.message;
        else if(err.description)    msg = err.description;
        else                        msg = 'Unknown';

        str += '<li><font color="red">(Error) ' + property + ': ' + msg +'</font></li>';
      }
    }

      // Close indent
      str += '</ul>';

    return str;
}

var classBlocks = Class.create();

classBlocks.prototype = {
	initialize: function() {
		this.columns = ['left', 'center'];
		this.height = 0;
	},
	
	setBlocksInColumns: function() {
		this.columns.each(function(column) {
			blocks.setBlocks(column);
		});
	},
	
	setBlocks: function(column) {
		$$('#' + column + ' .frame-01').each(function(element) {
			element.getElementsBySelector('h1').each(function(header) {
				Event.observe(header, 'mouseover', blocks.showBlock.bindAsEventListener(blocks));
			});
				
			element.getElementsBySelector('h1 a').each(function(header) {
				Event.observe(header, 'mouseover', blocks.showBlock.bindAsEventListener(blocks));
			});
			element.getElementsBySelector('.csc-header').first().addClassName('active');
			element.getElementsBySelector('.csc-header').each(function(child) {
				height = child.next(0).clientHeight;
				if(height > blocks.height) {
					blocks.height = height;
				}
				child.next(0).hide();
			});
			element.getElementsBySelector('.csc-header').each(function(child) {
				child.next(0).setStyle({height: (blocks.height - 5) + 'px'});
			});
			element.getElementsBySelector('.csc-header').first().next(0).show();
			element.setStyle({height: blocks.height + 'px'});
			element.getElementsBySelector('.csc-textpic-imagewrap').each(function(child) {
				child.setStyle({position: 'absolute', bottom: '0', left: '10px'});
			});
		});
	},

	showBlock: function(event) {
	
		//alert ("test");
		var event = event || window.event;
		var target = event.target || $(window.event.srcElement);
		if(event.target || getInternetExplorerVersion() >= 8.0) {
			target.offsetParent.getElementsBySelector('.csc-header').each(function(header) {
				header.removeClassName('active');
				header.next(0).hide();
			});
			
			if(target.parentNode.parentNode  != null && target.parentNode.parentNode.nextSibling != null && target.parentNode.parentNode.nextSibling.show) {
				target.parentNode.parentNode.nextSibling.show();
				target.parentNode.parentNode.addClassName('active');
			}
		} else {
			target.offsetParent.offsetParent.getElementsBySelector('.csc-header').each(function(header) {
				header.removeClassName('active');
				header.next(0).hide();
			});
			
			if(target.parentNode.parentNode  != null && target.parentNode.parentNode.nextSibling != null && target.parentNode.parentNode.nextSibling.show) {
				target.parentNode.parentNode.nextSibling.show();
				target.parentNode.parentNode.addClassName('active');
			}
		}
		if(target.parentNode != null && target.parentNode.nextSibling  != null) {
			target.parentNode.nextSibling.show();
			target.parentNode.addClassName('active');
		}
	}
};

var blocks = new classBlocks();

function getInternetExplorerVersion() {
	var rv = -1; // Return value assumes failure.
	if (navigator.appName == 'Microsoft Internet Explorer') {
		var ua = navigator.userAgent;
		var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null)
			rv = parseFloat(RegExp.$1);
	}
	return rv;
}

Event.observe(window, 'load', function() {blocks.setBlocksInColumns();});
