/* MultiColumn Helper
  Adrian Kirk-Burnnand http://adrian.kirk-burnnand.com/?p=39 */

var multicolumnHelper; window.onload=function () {multicolumnHelper=new multicolumnHelperClass();}

function multicolumnHelperClass(){
	var self = this;

	var columnsEnabled = parseBool(readCookie("multicolumn-ColumnsEnabled"));

	var columnsEnabledInit = columnsEnabled;

	var fontSize = 1;

	var elColumns = null;

	var elNoColumns = null;
	
	var elImages = null;

	//Init

	toggleColumnsButtonText();
	
	if (columnsEnabled && multicolumn == null) {
		constructMultiColumn();
	}
	
	function constructMultiColumn() {
		// Global Var
		multicolumn = new MultiColumn(document.getElementById("multicolumn"),MultiColumnSettings);
	}

	this.isColumnsEnabled = function() {
		return columnsEnabled;               
	}

	this.toggleColumns = function(button) {
		if (columnsEnabled) {
			self.columnsDisable(button);
		} else {
			self.columnsEnable(button);
		}

		// Cancel default event
		return false;
	}

	function toggleColumnsButtonText(button) {
		if (button == null) {button = document.getElementById("multicolumn-ColumnsButton");}
		if (button != null) {button.innerHTML = (columnsEnabled ? "Read as a single Column" : "Read as Columns");}
	}

	this.columnsEnable = function(button){
		if (multicolumn == null) {
			constructMultiColumn();
		}
		
		columnsEnabled = true;
		columnsSetCookie();
		
		if (columnsEnabledInit == false){
			columnsEnabledInit = true;
		} else {
			multiColumnSetResizeTimer();
		}
		
		getElNoColumns().style.display = "none";
		if (getElImages()) {getElImages().style.display = "block";}
		getElColumns().style.display = "block";
		
		toggleColumnsButtonText(button);
	}

	this.columnsDisable = function(button){
		columnsEnabled = false;
		columnsSetCookie();

		getElColumns().style.display = "none";
		if (getElImages()) {getElImages().style.display = "none";}
		getElNoColumns().style.display = "block";

		toggleColumnsButtonText(button);
	}

	function columnsSetCookie() {
		createCookie("multicolumn-ColumnsEnabled", columnsEnabled, 350);
	}

        function getElColumns() {
	        //if (elColumns == null) {
	        	elColumns = document.getElementById("multicolumn").nextSibling; //multicolumn-Columnized
	        //}

	        return elColumns;
        }

	function getElNoColumns() {
		if (elNoColumns == null) {
			elNoColumns = document.getElementById("multicolumn");
		}
		
		return elNoColumns;
	}
	
	function getElImages() {
		if (elImages == null) {
			elImages = document.getElementById("multicolumn-Images");
		}
		
		return elImages;
	}
	
	this.fontIncrease = function(button, factor) {
		if (factor == null) {factor = 1;}
		var currentSize = getElNoColumns().style.fontSize;
		if (currentSize == null && currentSize == "" || currentSize.indexOf("em") < 0) {
			currentSize = (factor > 0 ? 1.1 : 0.9)
		}
		else if (currentSize.indexOf("em")) {
			currentSize = parseFloat(currentSize.substring(0, currentSize.indexOf("em")));
			currentSize += (factor > 0 ? 0.1 : -0.1);
			currentSize = (currentSize > 0 ? currentSize : 0.1);
		}
		
		getElNoColumns().style.fontSize = currentSize + "em";
		multicolumn.originalContent.style.fontSize = currentSize + "em";
		
		if (columnsEnabled) {
			multiColumnResize();
		}
		
		// Cancel default event
		return false;
	}              
	
	this.fontDecrease = function(button) {
		// Decrease Font Size
		self.fontIncrease(button, -1);
		
		// Cancel default event
		return false;
	}
	
	function parseBool(bool) {
		return (bool == "false" ? false : true);
	}
	
	function createCookie(cookieId, val, expire) {
		if(expire) {
			var d = new Date();
			d.setTime(d.getTime() + (expire*24*60*60*1000));
			expire = "; expires="+ d.toGMTString();
		} else {
			expire="";
		}
		
		document.cookie = cookieId +"="+ val + expire +"; path=/";
	}
	
	function readCookie(cookieId) {
		var read = cookieId +"=";
		
		var ca = document.cookie.split(";");
		
		for(var i=0; i < ca.length; i++) {
			var c = ca[i];
			
			while(c.charAt(0) == " ") {
				c = c.substring(1, c.length);
			}
			
			if(c.indexOf(read) == 0) {
				return c.substring(read.length, c.length);
			}
		}
		
		return null;
	}
	
	function eraseCookie(cookieId) {
		createCookie(cookieId, "", -1);
	}

        // Public Accessor
        return self;
}

