var InsJs = {
	requestBlock: false,
    requestForm: function(form, resultDiv, loadingDiv, callback, dataType, successFunc)
    {
        if (InsJs.requestBlock) {
            return false;
        }
		
		if(!dataType){
			dataType = 'text';
		}
		
        if (!loadingDiv) {
            loadingDiv = resultDiv;
        }
        if (!callback) {
            callback = function(){};
        }

        if (!successFunc) {
			successFunc = function(data){
				InsJs.requestBlock = false;
				$(resultDiv).hide().html(data);
				$(resultDiv).fadeIn('fast');
				callback(data);
			}
		}
        jQuery.ajax({
            url: $(form).attr('action'),
            type: $(form).attr('method'),
			dataType: dataType,
            data: $(form).serialize(),
            beforeSend  : function() {
                InsJs.requestBlock = true;
                $(loadingDiv).show().html('<div class="loading"></div>');
            },
            success: function (text) {
				return successFunc(text);
            }
        });
        return false;
    }
};

/////////////////////////slider////////////////////////////////

(function($) {
	
		$.insSliderInstance = function(target,options){
			
			var that = this;
			target = $(target)
			var container = target;
			var list = container.find("ul"); 
			var firstObj = container.find("li:first-child");

			var Countli = 0;
			var setWidth = 0;
			var maxPos = 0
			var minpos
			this.left = {
				'val' : 0,
				'set': function(x){
					this.val = x;
				},
				'get' : function(){
					return this.val;
				}
			};
	
			var setActive = 0;
			this.li_w = {
				val : 0,
				get : function(){
					return this.val;
				},
				set : function(x){
					this.val = x;
				}
			}			
			var li_w_temp = 0;
			if(options.setWidth){
				this.li_w.set(options.setWidth);
				
			} else {
				li_w_temp = parseInt(firstObj.css("width"),10);
				li_w_temp += parseInt(firstObj.css("marginLeft"),10);
				li_w_temp += parseInt(firstObj.css("marginRight"),10);
				li_w_temp += parseInt(firstObj.css("borderLeftWidth"),10);
				li_w_temp += parseInt(firstObj.css("borderRightWidth"),10);			
				this.li_w.set(li_w_temp);				
			}
			Countli = container.find("li").length;
			
			if(options.continous && (Countli > options.visibleElements)){
				container.find('li:lt('+options.visibleElements+')').clone().appendTo(list);
				Countli += options.visibleElements;
			}
			
			setWidth = Countli * this.li_w.val;
			maxPos = (((Countli * this.li_w.val) - (this.li_w.val * options.visibleElements))* (-1));	
			
			list.css("width", setWidth + "px");
			if (Countli > options.visibleElements) {
				container.append('<span class="slideLeft inactive">'+options.nextTxt+'</span><span class="slideRight">'+options.prevTxt+'</span>');				
			}
			var slideRight = container.find(".slideRight");
			var slideLeft = container.find(".slideLeft");	
					
			var move = function(direction,obj){
				if (direction == "slideLeft") {
					that.left.set(that.left.get() + (that.li_w.val * options.moveElCount));
				}
				else {
					
					that.left.set(that.left.get() - (that.li_w.val * options.moveElCount));
					
				}
				$(target).find(".slideLeft, .slideRight").unbind();	
				obj.find('iframe').css('display','none');
				
				obj.animate({
					"left": that.left.get()
				},function(){
					obj.find('iframe').css('display','block');
					$(target).find(".slideLeft, .slideRight").bind("click",slideit);
					checPos(direction);
				});
			}
			
			var checPos = function(dir){
				
				var chpos;
				if (dir == "slideLeft") {
					chpos = 0;
					if (that.left.get() + that.li_w.val <= chpos) {
						slideRight.removeClass("inactive");
						return true;
					}
					else {
						if(options.continous){
							list.css('left',maxPos);
							that.left.set(maxPos);
							return true;	
						} else {
							slideLeft.addClass("inactive");
							return false;							
						}													
					}
				} else {
					chpos = maxPos;
					
					if (that.left.get() - that.li_w.val >= chpos) {
						slideLeft.removeClass("inactive");
						return true;
					}
					else {
						if (options.continous) {
							list.css('left', 0);
							that.left.set(0);
							return true;
						} else {
							slideRight.addClass("inactive");
							return false;
						}							
					}
				}
			}
			
			function slideit(){		
				
				var dir = $(this).attr("class");

				if (dir.indexOf("slideLeft") != -1) {
					dir = "slideLeft";
				}
				else 
					if (dir.indexOf("slideLeft") != -1) {
						dir = "slideRight";
					}
				if (checPos(dir)) {
					move(dir, list);
				}
				return false;
			}
			
			$(target).find(".slideLeft, .slideRight").bind("click",slideit);

		}//$.insSliderInstance
	
	$.InstanceCreater = function(target,options){
		return target.insSlider || (target.insSlider = new $.insSliderInstance(target,options));		
	}	

	$.fn.insSlider = function(options){
		
		return this.each(function() {
			var defaults = {  
				'nextTxt':'Poprzedni',
				'prevTxt':'Następny',
				'visibleElements':8,
				'setWidth':false,
				'setHeight':false,
				'slide':true,
				'moveElCount' : 1,
				'continous' : false
			};  			
			options = $.extend(defaults, options);
			$.InstanceCreater(this,options);
		});
		

	} //$.fn.insSlider
})(jQuery);


/////////////////////////tabs////////////////////////////////

(function($) {

	$.fn.insTabs = function(options){
		var defaults = {  
			'listId':'',
			'menuEl' : 'li',
			'listEl' : 'li'
		};  			
		var that = $(this);
		options = $.extend(defaults, options);		
		this.each(function() {
			var menuEl = $(this).find(options.menuEl);
			
			menuEl.click(function(){
				menuEl.removeClass('active');
				$(this).addClass('active');
				var activeEl = that.find(options.menuEl).index(this);
				if (options.listId != ''){
					$(options.listId+'>'+options.listEl).removeClass('active');
					$(options.listId+' > '+options.listEl+':eq('+activeEl+')').addClass('active');
				}
			});
		});
	} //$.fn.insTabs

})(jQuery);

/////////////////////////videoslider////////////////////////////////

(function($) {

	$.fn.insVideoSlider = function(options){
		var defaults = {};  			
		options = $.extend(defaults, options);		
		this.each(function() {
			return true;
		});
	} //$.fn.insVideoSlider
})(jQuery);

///////////////////////maxLetters//////////////////////////////

jQuery.fn.checkMaxLetters = function(){
	return this.each(function(){
    	var classes = $(this).attr("class");
		var tempClass = "";
		if (typeof(classes) === "string"){
			classes = classes.split(" ");
		} 
		for (var i in classes) {
			if (classes[i].indexOf('maxLetters-') != -1){
				tempClass = classes[i];
			}
		}
		var length = $(this).val();
		length = length.length;
		var max = parseInt(tempClass.replace("maxLetters-","")); 
		
		$(this).keyup(function(){
			length = $(this).val();
			length = length.length;
			length = max - length;
			if (length <= 0){
				$(this).next("div").addClass("error");
				$(":submit").attr("disabled", true);
			} else {
				$(this).next("div").removeClass("error");
				$(":submit").attr("disabled", false);
			}
			$(this).next("div").find("span").html(length);
			
		});
		length = max - length;
		$(this).after('<div class="checkMaxLetters">pozostalo <span>'+length+'</span> z '+max+'</div>');
	});
}
