/*
 *
 *	reszise div width behavoir;
 *	see also behaviordivresize.css
 *	
 *	
 *	NOTE: this script expects _onload.js
 *	
 *	
 *
 */
 
function BehaviorDivResize()
{
	this.attachMozEvents	= AttachMozEvents;
	this.init 				= Init;
	this.divs				= new Array;
	this.getMinWidth		= GetMinWidth;
	this.str_className 		= "behaviorDivResize";
	this.setDiv				= SetDiv;
	this.resize				= Resize;
	this.stop				= Stop;
	window.BehaviorDivResizeUse = true;
	
	function Init()
	{
		// try to attach events used by this script
		var BehaviorDivResizeUse = this.attachMozEvents();
		
		// if we failed don't attach behavior
		if (!BehaviorDivResizeUse){return;}
		window.elementToResize = new Object;
		var divs = document.getElementsByTagName("DIV");
		for (var i=0;i<divs.length;i++)
		{
			div = divs[i];
				if (div.className == this.str_className)
				{
					div.setDiv = this.setDiv;
					div.setDiv();
					div.getMinWidth = this.getMinWidth;
					div.getMinWidth();
				}
		}
	};
	
	function SetDiv(){
		var handle = document.createElement("DIV");
		handle.className	= "behaviorDivResizeHandle";
		handle.style.height	= this.offsetHeight + "px";
		handle.onmousedown	= Start;
		this.appendChild(handle);
		this.handle = handle;
	};
	
	function Start(e){
		e = (window.event) ? window.event : e ;
		document.getElementsByTagName('BODY')[0].style.cursor = "w-resize";
		var x 				= (e.clientX) ? e.clientX : (e.layerX) ? e.layerX : (e.pageX) ? e.pageX : 0;
		var sx 				= (self.pageXOffset) ? self.pageXOffset : (document.documentElement) ? document.documentElement.scrollLeft : (document.body) ? document.body.scrollLeft : 0 ;
		window.originalX 	=  x + sx;	
		window.elementToResize 						= this.parentNode;
		window.elementToResize.handle.oClassName 	= window.elementToResize.handle.className;
		window.elementToResize.handle.className		+= " behaviorDivResizeHandleActive";
		window.elementToResize.startWidth 			= window.elementToResize.offsetWidth;
	    document.attachEvent("onmousemove", behaviorDivResize.resize);
	    document.attachEvent("onmouseup",   behaviorDivResize.stop);
	    e.cancelBubble = true;
	    e.returnValue = false;			
	}
	function Resize(e){
		e = (window.event) ? window.event : e ;
		var x = (e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft) - window.originalX;
		if ((window.elementToResize.startWidth + x ) > window.elementToResize.minWidth) {
			
			window.elementToResize.style.width = (window.elementToResize.startWidth + x ) + "px";
			window.elementToResize.handle.style.height = window.elementToResize.offsetHeight + "px";
		}
		if 		(window.getSelection) 	{window.getSelection().removeAllRanges();}
		else if (document.selection) 	{document.selection.empty();}	
	}
	function Stop(){
	    document.detachEvent("onmousemove", behaviorDivResize.resize);
	    document.detachEvent("onmouseup",   behaviorDivResize.stop);
		document.getElementsByTagName('BODY')[0].style.cursor = "";
		window.elementToResize.handle.className = window.elementToResize.handle.oClassName;
		window.originalX 		= null;
 	}
	function GetMinWidth(){
		var defaultMin = 150;
		var m = 0;
		if (document.defaultView){
			m = parseInt(document.defaultView.getComputedStyle(this, '').getPropertyValue("min-width"));
		} else if (this.currentStyle) {
			m = parseInt(this.currentStyle.minWidth);// ie7
			if (isNaN(m)){
				m = parseInt(this.currentStyle["min-width"]); // ie6
			}
		}
		if (m < defaultMin)	{m = defaultMin}
		if (isNaN(m))		{m = defaultMin}
		this.minWidth = m;
	}
	function AttachMozEvents()
	{
		BehaviorDivResizeUse = true;
		if (!document.attachEvent){
			try {
				HTMLDocument.prototype.attachEvent = HTMLElement.prototype.attachEvent = function(name, handler) {
				this.addEventListener(name.slice(2), handler, false);
				};
			} catch (e) {BehaviorDivResizeUse = false;}
		}	
		if (!document.detachEvent){	
			try {
				HTMLDocument.prototype.detachEvent = HTMLElement.prototype.detachEvent = function(name, handler) {
				this.removeEventListener(name.slice(2), handler, false);
				};
			} catch (e) {BehaviorDivResizeUse = false;}
		}	
		if (window.Event){	
			try {	
			  	Event.prototype.__defineSetter__('cancelBubble',function(v){
			    if (v){
			      this.stopPropagation();
			    }
			  }
			  );
			} catch (e){BehaviorDivResizeUse = false;} 
			try {
				Event.prototype.__defineSetter__("returnValue", function(v) {
				if (this.cancelable && v) {
				// this can't be undone!
				this.preventDefault();
				this.__defineGetter__("returnValue", function() {
				return false;
				});
				}
				});
			} catch (e){BehaviorDivResizeUse = false;}  
		}		
		return BehaviorDivResizeUse;
	}
}



var behaviorDivResize = new BehaviorDivResize;
if (window._onload) {
	_onload.add('behaviorDivResize.init()');
} else if (window.loader) {
	function initBehaviorDivResize(){
		behaviorDivResize.init();
	}
	loader.oncontentready(initBehaviorDivResize);
}	
