/**
 * Represents horizontal splitter.
 */
function HorizontalSplitter(_sizer, _left, _right, _main) {
// public
	/** splitter element */
	this.sizer=_sizer;

	/** left element */
	this.left=_left;

	/** right element */
	this.right=_right;

	/** parent container element */
	this.main=_main;

	/** draggable element */
	this.tempSizer=null;

	/** old mousemove event */
	this.oldmousemove=null;

	/** old mouseup event */
	this.oldmouseup=null;

	/** old selectstart event */
	this.oldselectstart=null;

	this.cookiename=null;

	this.mousedown = function(_event, _element) {
		this.tempSizer=this.sizer.cloneNode(true);
		addClass(this.tempSizer, "splitter-temp");

		this.sizer.parentNode.appendChild(this.tempSizer);

		this.oldmousemove=document.onmousemove;
		document.onmousemove=associateEventWithObject(this, "mousemove");

		this.oldmouseup=document.onmouseup;
		document.onmouseup=associateEventWithObject(this, "mouseup");

		this.oldselectstart=document.body.onselectstart;
		document.body.onselectstart=associateEventWithObject(this, "cancel");

	};

	this.mouseup=function(_event, _element) {

		var rightW = this.checkLimit(this.right.parentNode.offsetWidth-_event.x-2-
				this.sizer.offsetWidth+this.getShift());

		_event.x = this.right.parentNode.offsetWidth-rightW-2-this.sizer.offsetWidth;

		this.left.style.width=_event.x+"px";

		this.right.style.left=_event.x+this.sizer.offsetWidth+"px";

		this.right.style.width=rightW+"px"

		this.sizer.style.left=_event.x+"px";

		this.sizer.parentNode.removeChild(this.tempSizer);
		this.tempSizer=null;

		document.onmousemove=this.oldmousemove;
		document.onmouseup=this.oldmouseup;
		document.body.onselectstart=this.oldselectstart;

		if ( this.cookiename ) {
			try	{
				my_setcookie( this.cookiename, rightW , 1 );
			}
			catch(e) {
			}
		}

	};

	this.mousemove=function(_event, _element) {
		this.tempSizer.style.left=_event.x-this.getShift()+"px";
	};

	this.init=function() {
		var rightW=null;
		if ( this.cookiename ) {
			rightW = my_getcookie( this.cookiename );
		}
		if ( !(rightW && rightW != null) ){
			rightW = this.right.parentNode.offsetWidth * 2 /10;
		}
			this.right.style.width = rightW + "px";
	}

// private
	this.getShift=function() {
		var sh = 0;
		if(this.main != null && !is_ie) {
			sh = this.main.offsetLeft;
		}
		return sh;
	}

	this.cancel=function(_e) {
		return false;
	};

	this.checkLimit=function(value){
		if( value < minRightWidth) {
			value = minRightWidth;
		} else if( value > maxRightWidth) {
			value = maxRightWidth;
		}
		return value;
	}
// constructor
	this.sizer.onmousedown=associateEventWithObject(this, "mousedown");
}
