//function NS4_Block_setClipTop(clipTop)	{ this.clip.top = clipTop; }
//function NS4_Block_getClipTop()	{ return this.clip.top; }
//function NS4_Block_setClipRight(clipRight)	{ this.clip.right = clipRight; }
function NS4_Block_getClipRight()	{ return this.clip.right; }
//function NS4_Block_setClipBottom(clipBottom) { this.clip.bottom = clipBottom; }
//function NS4_Block_getClipBottom()	{ return this.clip.bottom; }
//function NS4_Block_setClipLeft(clipLeft) { this.clip.left = clipLeft; }
function NS4_Block_getClipLeft() { return this.clip.left; }
function NS4_Block_setClipAsArray(arr)
{
	this.clip.top = arr[0];
	this.clip.right = arr[1];
	this.clip.bottom = arr[2];
	this.clip.left = arr[3];
}
function NS4_Block_getClipAsArray()
{
	return [this.clip.top, this.clip.right, this.clip.bottom, this.clip.left];
}
function NS4_Block_setClipMask(width, height, xOffset, yOffset)
{
	this.clip.top = yOffset;
	this.clip.right = (xOffset+width);
	this.clip.bottom = (yOffset+height);
	this.clip.left = xOffset;
}
/*function NS4_Block_setUnderClipMask(left,top)
{
	deltaX = this.left - left;
	deltaY = this.top - top;
	this.clip.top += deltaX;
	this.clip.right += deltaX;
	this.clip.left += deltaY;
	this.clip.bottom += deltaY;		
	this.left = left;
	this.top = top;
}
function NS4_Block_moveClipMask(deltaX, deltaY)
{
	this.clip.top += deltaY;
	this.clip.right += deltaX;
	this.clip.bottom += deltaY;
	this.clip.left += deltaX;
}
function NS4_Block_moveUnderClipMask(deltaX, deltaY)
{
	this.left += deltaX;
	this.top += deltaY;
	if(deltaY<0)
	{
		this.clip.bottom -= deltaY;
		this.clip.top -= deltaY;
	}
	else
	{
		this.clip.top -= deltaY;
		this.clip.bottom -= deltaY;
	}
	if(deltaX<0)
	{
		this.clip.right -= deltaX;
		this.clip.left -= deltaX;
	}
	else
	{
		this.clip.left -= deltaX;
		this.clip.right -= deltaX;
	}
}
function NS4_Block_releaseClipMask()
{
	this.clip.top = 0;
	this.clip.right = this.width;
	this.clip.bottom = this.height;
	this.clip.left = 0;
}
*/
/*function Def_Block_setClipTop(clipTop)
{
	this.style.clip = this.style.clip.replace(parseClip, "rect("+clipTop+",$2,$3,$4)");
}
function Def_Block_getClipTop()
{
	return parseInt(this.style.clip.replace(parseClip, "$1"));
}
function Def_Block_setClipRight(clipRight)
{
	this.style.clip = this.style.clip.replace(parseClip, "rect($1,"+clipRight+",$3,$4)");
}
*/
function Def_Block_getClipRight()
{
	return parseInt(this.style.clip.replace(parseClip, "$2"));
}
/*function Def_Block_setClipBottom(clipBottom)
{
	this.style.clip = this.style.clip.replace(parseClip, "rect($1,$2,"+clipBottom+",$4)");
}
*/
/*function Def_Block_getClipBottom()
{
	return parseInt(this.style.clip.replace(parseClip, "$3"));
}
function Def_Block_setClipLeft(clipLeft)
{
	this.style.clip = this.style.clip.replace(parseClip, "rect($1,$2,$3,"+clipLeft+")");
}*/
function Def_Block_getClipLeft()
{
	return parseInt(this.style.clip.replace(parseClip, "$4"));
}
function Def_Block_setClipAsArray(arr)
{
	this.style.clip = "rect("+arr.concat()+")";
}
function Def_Block_getClipAsArray()
{
	var arr = this.style.clip.replace(parseClip, "$1-$2-$3-$4").split("-");
	arr[0] = parseInt(arr[0]) || 0 ;
	arr[1] = parseInt(arr[1]) || this.getWidth() ;
	arr[2] = parseInt(arr[2]) || this.getHeight() ;
	arr[3] = parseInt(arr[3]) || 0 ;
	return arr;
}
function Def_Block_setClipMask(width, height, xOffset, yOffset)
{
	this.style.clip = "rect("+yOffset+","+(xOffset+width)+","+(yOffset+height)+","+xOffset+")";
}
/*
function Def_Block_setUnderClipMask(left, top)
{
	var deltaX = this.left - left;
	var deltaY = this.top - top;
	var arr = this.getClipAsArray();
	arr[0] += deltaY;
	arr[1] += deltaX;
	arr[2] += deltaY;
	arr[3] += deltaX;
	this.setLeft(left);
	this.setTop(top);
}
function Def_Block_moveClipMask(deltaX, deltaY)
{
	var arr = this.getClipAsArray();
	arr[0] += deltaY;
	arr[1] += deltaX;
	arr[2] += deltaY;
	arr[3] += deltaX;
	this.setClipAsArray(arr);
}
function Def_Block_moveUnderClipMask(deltaX, deltaY)
{
	var arr = this.getClipAsArray();
	this.style.left = this.getLeft() + deltaX;
	this.style.top = this.getTop() + deltaY;
	arr[0] -= deltaY;
	arr[1] -= deltaX;
	arr[2] -= deltaY;
	arr[3] -= deltaX;
	this.setClipAsArray(arr);
}
function Def_Block_releaseClipMask()
{
	this.style.clip = "rect(0,"+this.style.width+","+this.style.height+",0)";
}
*/
var parseClip = false;

if(DYNAMIC && !NS4)
{
	parseClip = new RegExp("rect[ (]*(\\w*)[ ,]*(\\w*)[ ,]*(\\w*)[ ,]*(\\w*)[\\s*)]*","i");
	parseClip.compile("rect[ (]*(\\w*)[ ,]*(\\w*)[ ,]*(\\w*)[ ,]*(\\w*)[\\s*)]*","i");		
}

function enableClipping(block)
{
	if(!block.isBlock) return false;
	if(!block.positionable && !enablePositioning(block)) return false;
	if(NS4)
	{
//		block.setClipTop = NS4_Block_setClipTop;
//		block.setClipRight = NS4_Block_setClipRight;
//		block.setClipBottom = NS4_Block_setClipBottom;
//		block.setClipLeft = NS4_Block_setClipLeft;
		block.setClipAsArray = NS4_Block_setClipAsArray;
		
//		block.getClipTop = NS4_Block_getClipTop;
		block.getClipRight = NS4_Block_getClipRight;
//		block.getClipBottom = NS4_Block_getClipBottom;
		block.getClipLeft = NS4_Block_getClipLeft;
		block.getClipAsArray = NS4_Block_getClipAsArray;
		
		block.setClipMask = NS4_Block_setClipMask;
//		block.moveClipMask = NS4_Block_moveClipMask;
//		block.moveUnderClipMask = NS4_Block_moveUnderClipMask;
//		block.releaseClipMask = NS4_Block_releaseClipMask;
	}
	else
	{
//		block.setClipTop = Def_Block_setClipTop;
//		block.setClipRight = Def_Block_setClipRight;
//		block.setClipBottom = Def_Block_setClipBottom;
//		block.setClipLeft = Def_Block_setClipLeft;
		block.setClipAsArray = Def_Block_setClipAsArray;
		
//		block.getClipTop = Def_Block_getClipTop;
		block.getClipRight = Def_Block_getClipRight;
//		block.getClipBottom = Def_Block_getClipBottom;
		block.getClipLeft = Def_Block_getClipLeft;
		block.getClipAsArray = Def_Block_getClipAsArray;
		
		block.setClipMask = Def_Block_setClipMask;
//		block.setUnderClipMask = Def_Block_setUnderClipMask;
//		block.moveClipMask = Def_Block_moveClipMask;
//		block.moveUnderClipMask = Def_Block_moveUnderClipMask;
//		block.releaseClipMask = Def_Block_releaseClipMask;
	}
	block.clippable = true;
	return true;
}
