function CColumnSplit(container, dividprefix, bOnLoad) {
	this.container = container;
	this.dividprefix = dividprefix;
	
	this.aElements = new Array();
	
	this.aClosedTags = new Array();
    this.aClosedTags.push("img");
	this.aClosedTags.push("br");
	
	if(bOnLoad) {
		var _this = this;
		this.addLoadEvent(function() { _this.GoSplitColumns(); });
	}
}

CColumnSplit.prototype.GoSplitColumns = function() {
	var container = document.getElementById(this.container);
	var LowerContent = container.innerHTML.toLowerCase();
	var Content = container.innerHTML;
	if(container.getElementsByTagName("hr").length < 1) {
		// nothing to do
		return;
	}
	var aContent = new Array();
	var HrPos = LowerContent.indexOf("<hr");
	while(HrPos > 0) {
		aContent.push(Content.substring(0, HrPos));
		LowerContent = LowerContent.substring(HrPos + 2, LowerContent.length); 
		Content = Content.substring(HrPos + 2, Content.length);
		var HrEndPos = LowerContent.indexOf("/>");
		LowerContent = LowerContent.substring(HrEndPos + 3, LowerContent.length); 
		Content = Content.substring(HrEndPos + 3, Content.length);
		HrPos = LowerContent.indexOf("<hr"); 
	}
	aContent.push(Content);
	var aFinalContent = new Array();
	var newBlockStart = "";
	var newBlockEnd = "";
	
	for(var i = 0; i < aContent.length; i++) {
		var SubContent = newBlockStart + aContent[i];
		var ElementTagPos = SubContent.indexOf("<");	
		while(parseInt(ElementTagPos) > 0) {
			var ElementCloseTagPos = SubContent.indexOf(">", ElementTagPos);	
			var ElementSpacePos = SubContent.indexOf(" ", ElementTagPos);
			if((ElementSpacePos < ElementCloseTagPos) && (ElementSpacePos > 0)) {
				var elementName = SubContent.substring(ElementTagPos+1, ElementSpacePos);
				var nextStart = ElementSpacePos;
			} else {
				var elementName = SubContent.substring(ElementTagPos+1, ElementCloseTagPos);
				var nextStart = ElementCloseTagPos;
			}
			if(SubContent.substring(ElementCloseTagPos-1, ElementCloseTagPos) == "/" || this.skipableTag(elementName)) {
				// tag is closed, do nothing
			} else {
				if(SubContent.substring(ElementTagPos+1, ElementTagPos + 2) == "/") {
					this.removeFromArray();
				} else {
					this.addToArray(elementName);
				}
			}
						
      if(nextStart < 0) {
      	ElementTagPos = -1;
      } else {
      	ElementTagPos = SubContent.indexOf("<", nextStart);	
      }						
		}
		var newBlockStart = "";
		var newBlockEnd = "";
		if(this.aElements.length < 1) {
			//No remaining elements
		} else {
			for(var aEli = (this.aElements.length - 1); aEli >= 0; aEli--) {
				newBlockEnd 	+= "</" + this.aElements[aEli] + ">";
			}		
			for(var aEli = 0; aEli < this.aElements.length; aEli++) {
				newBlockStart += "<" + this.aElements[aEli] + ">";
			}		
							
		}
		aFinalContent.push(SubContent + newBlockEnd);
		this.cleanArray();
	}
	
	var newContent = "";
	for(var i = 0; i < aFinalContent.length; i++) {
		newContent 	+= "<div id=\"" + this.dividprefix + (i + 1) +"\">" + aFinalContent[i] + "</div>";
	}
	container.innerHTML = newContent;
}

CColumnSplit.prototype.skipableTag = function(Tag) {
	for(var i = 0; i < this.aClosedTags.length; i++) {
		if(Tag.toLowerCase() == this.aClosedTags[i].toLowerCase()) {
			return true;
		}
	}
	return false;
}

CColumnSplit.prototype.cleanArray = function() {
	this.aElements = new Array();
}

CColumnSplit.prototype.addToArray = function(elementType) {
	this.aElements.push(elementType);
}

CColumnSplit.prototype.removeFromArray = function() {
	this.aElements.pop();
}

CColumnSplit.prototype.addLoadEvent = function(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function debugobj(obj)
{
	for(x in obj) {
		debug(x + " -- " + obj[x]);
	}
}

function debug(value)
{
	document.getElementById('debug').innerHTML += value + "<br />";
}
