
/* ntk_clearText*/
(function($){
    $.fn.ntk_clearText = function()
    {
        return this.each(function()
        {
            $(this).html("&nbsp;");
        });
    }
})(jQuery);

/* ntk_print*/
(function($){
    $.fn.ntk_print = function(toPrint)
    {
        if(this.html() == "&nbsp;"){this.html('');}
        return this.each(function()
        {
            if(toPrint)
            {
                $(this).append("<span>" + toPrint + "</span><br />");
            }
        });
    }
})(jQuery);

/* ntk_space*/
(function($){
    $.fn.ntk_space = function(top, left, width, height, position)
    {
    	var pos = position || "absolute";
        this.css({"top":top, "left":left, "width":width, "height": height, "position":pos});
        return this;
    }
})(jQuery);

/* ntk.colors*/

var ntk_colors =
{
	"sliderPathColorNormal": "#cccccc",
	"sliderPathColorHover": "#dddddd",
	"sliderHandleColorNormal": "#777777",
	"sliderHandleColorHover": "#888888",
	"sliderHandleColorClick": "#999999",
	"sliderMarginsColor": "#555555",
	"draggableHandlerColor": "#cccccc",
	"resizableHandlerColor":"black", /*black white*/
	"generalBordersColor": "#cccccc"
};

var ntk_settings =
{
	"draggableHandlerHeight":8,
	"draggableHandlerWidthPercent":0.33,
	"draggableHandlerDistance":8,
	"slidersWide" : "thin", /* thin medium thick huge */
	"style":"default",
	"pathRedirect": ""
};

/*
ntk_resizeOn
it is prefferable to be used with ntk_dragOn not with draggable()
*/
(function($){
    $.fn.ntk_resizeOn = function(options)
    {
    	var o = {
	    	"handlerColor":ntk_colors.resizableHandlerColor,/* black, white*/
	    	"minWidth":10, /* minim allowed = 10 */
	    	"minHeight":10, /* minim allowed = 10 */
	    	"maxWidth":-1,
	    	"maxHeight":-1,
	    	"drawBorders":false,
	    	"bordersColor":ntk_colors.generalBordersColor,

	    	"pathRedirect":ntk_settings.pathRedirect, /* path is calculated from html page that contains this plugin*/
			/* if page can see ntk folder no redirection is required*/

	    	"resize": $.noop, /*passed: width, height*/
	    	"start": $.noop, /*passed: width, height*/
	    	"stop":  $.noop /*passed: width, height*/
			}
	    $.extend(o, options || {});


	    var $this = this;
	    var thisParent = this.parent();
	    var handler = $("<div></div>");
	    var handlerSize = 10;
	    var wrapper = $("<div></div>");
	    var handlerOffset = 0;
	    var nodeName = this[0].nodeName.toUpperCase();

	    var dragHandler; /*will be set if this is also ntk_dragOn*/

	    if($.browser.webkit)
	    {
	    	this.css({"resize":"none"});
		}
	    if(nodeName == "TEXTAREA")
	    {
	    	handlerOffset = 12;
		}

	    /*making possible corections*/
	    o.minWidth = o.minWidth < handlerSize ? o.minWidth = handlerSize : o.minWidth;
	    o.minHeight = o.minHeight < handlerSize ? o.minHeight = handlerSize : o.minHeight;

	    /*-------------------------Defining Css----------------------------*/
	    handler.css({
	    	"position":"absolute",
	    	"bottom":0,
	    	"right":0,
	    	"width":handlerSize,
	    	"height":handlerSize,
	    	"cursor":"se-resize",
	    	"background-image":'url("' + o.pathRedirect + 'ntk/visuals/default/images/resize_handler_' + o.handlerColor + '_10px.png")'
    	}).draggable({drag:onResize, start:onStart, stop:onStop});


		wrapper.css({
			"position":this.css("position"),
			"top":this.css("top"),
			"left":this.css("left"),
			"right":this.css("right"),
			"bottom":this.css("bottom"),
			"width":parseInt(this.css("width")) + handlerOffset,
			"height":parseInt(this.css("height")) + handlerOffset
		});
		if(o.drawBorders)
		{
			if(!this.is(":input"))
			{
				wrapper.css({"border":"1px solid " + o.bordersColor});
			}
		}

		this.css({
			"position":"absolute",
			"top":0,
			"left":0
		});

		wrapper.append(this).append(handler);
		thisParent.append(wrapper);


		/*-------------Public Methods------------------------------*/

		this.getWrapper = function()
		{
			return wrapper;
		}
		wrapper.back = function()
		{
			return $this;
		}
		this.updateDragHandler = function(newDragHandler)
		{
			dragHandler = newDragHandler;
		}

    	/* ------------Internal Methods---------------------------*/

    	function onStart(evt, ui)
    	{
    		var width = ui.position.left + handlerSize;
    		var height = ui.position.top + handlerSize;
    		o.start(width, height);
    	}

    	function onStop(evt, ui)
    	{
    		var width = ui.position.left + handlerSize;
    		var height = ui.position.top + handlerSize;
    		o.stop(width, height);
    	}

    	function onResize(evt, ui)
    	{
    		var width = ui.position.left + handlerSize;
    		var height = ui.position.top + handlerSize;


    		if(width < o.minWidth && o.minWidth != -1)
    		{
    			width = o.minWidth;
    			ui.position.left = o.minWidth -  handlerSize;
			}
			else if(width > o.maxWidth && o.maxWidth != -1)
			{
				width = o.maxWidth;
				ui.position.left = o.maxWidth -  handlerSize;
			}

			if(height < o.minHeight && o.minHeight != -1)
    		{
    			height = o.minHeight;
    			ui.position.top = o.minHeight -  handlerSize;
			}
			else if(height > o.maxHeight && o.maxHeight != -1)
			{
				height = o.maxHeight;
				ui.position.top = o.maxHeight -  handlerSize;
			}

    		$this.width(width - handlerOffset);
    		$this.height(height - handlerOffset);
    		wrapper.width(width);
    		wrapper.height(height);

			if(dragHandler)
			{
				dragHandler.width(width * ntk_settings.draggableHandlerWidthPercent);
			}
    		o.resize(width, height);
    	}

		$.data(this, "ntk_resizeOn", true);
		/* if this is also ntk_dragOn*/
		if($.data(this, "ntk_dragOn"))
		{
			this.updateRealContainer(wrapper);
			dragHandler = this.getDragHandler();
		}
        return this;
    }
})(jQuery);



/*
ntk_dragOn
it is prefferable to be used with ntk_resizeOn not with resizable()
*/
(function($){
    $.fn.ntk_dragOn = function(options)
    {

    	var o =
    	{
    		"distance":ntk_settings.draggableHandlerDistance,
    		"handlerHeight":ntk_settings.draggableHandlerHeight,
    		"handlerWidthPercent":ntk_settings.draggableHandlerWidthPercent,
    		"handlerColor": ntk_colors.draggableHandlerColor,
    		"drawBorders":false,
    		"bordersColor":ntk_colors.generalBordersColor,

    		"drag": $.noop, /*passed: evt, ui*/
	    	"start": $.noop, /*passed: evt, ui*/
	    	"stop":  $.noop /*passed: evt, ui*/
		}
		$.extend(o, options || {});

		var realContainer;
		var realContainerParent;
		var handler = $("<div></div>");

		realContainer = $.data(this, "ntk_resizeOn") ? this.parent() : this;
		realContainerParent = realContainer.parent();

		handler.css({
			"width":parseInt(realContainer.css("width")) * o.handlerWidthPercent,
			"height":o.handlerHeight,
			"top":parseInt(realContainer.css("top")) - o.distance,
			"left":parseInt(realContainer.css("left")),
			"position":realContainer.css("position"),
			"cursor":"pointer",
			"background-color": o.handlerColor
		}).draggable({drag:onDrag, start:onStart, stop:onStop});

		if(o.drawBorders)
		{
			if(!this.is(":input"))
			{
				this.css({"border":"1px solid " + o.bordersColor});
			}

		}


		realContainerParent.append(handler);

		/*----------------Public Methods--------------*/
		this.updateRealContainer = function(newRealContainer)
		{
			realContainer = newRealContainer;
		}

		this.getDragHandler = function()
		{
			return handler;
		}
		/*----------------Internal Methods--------------*/


		function onDrag(evt, ui)
		{
			realContainer.css({"left":ui.position.left, "top":ui.position.top + o.distance});
			o.drag(evt, ui);
		}
		function onStart(evt, ui)
		{
			if($.support.opacity)
			{
				realContainer.css({"opacity":0.5});
				handler.css({"opacity":0.5});
			}
			o.start(evt, ui);
		}
		function onStop(evt, ui)
		{
			if($.support.opacity)
			{
				realContainer.css({"opacity":1});
				handler.css({"opacity":1});
			}
			o.stop(evt, ui);
		}

		//---------------------------------------------------------------------------------------
		$.data(this, "ntk_dragOn", true);
		/* if this is also ntk_sliderOn or ntk_resizeOn*/
		if($.data(this, "ntk_sliderOn") || $.data(this, "ntk_resizeOn"))
		{
			this.updateDragHandler(handler);
		}

        return this;

    }
})(jQuery);





























/*------------------------------------------------------------------------------*/
