rs.canvas.js 1.74 KB
/**
 * rs_canvas - Runsa Plugin
 * 
 * Dependencies:
 * 	 jquery.browser
 *   
 */
(function($){
	function initWrap(container){
		$(".rs-canvas-ghost").remove();
		var body=$(document.body);
		var ghost=$('<div class="rs-canvas-ghost"></div>').appendTo(document.body);
		var cc=$(container);
		
		cc.removeClass("rs-canvas");
		cc.addClass("rs-canvas");
		body.removeClass("rs-body");
		body.addClass("rs-body");
	};
	function initEvent(container){
		var cc=$(container);
		var exec;
		$(window).unbind(".rs_canvas");
		$(window).bind("resize.rs_canvas",function(){
			if(exec){
				clearTimeout(exec);
			}
			exec=setTimeout(function(){
				var size=getSize(container);
				var canvas=$(container);
				canvas.css({
					"width":size.width,
					"height":size.height
				});
				canvas.triggerHandler("size");
			}, 200);
		});
	}
	function triggerEvent(container){
		$(window).triggerHandler("resize.rs_canvas");
	}
	function getSize(container){
		var ghost=$(".rs-canvas-ghost");
		var width=ghost.width();
		var height=ghost.height();
		if($.browser&&$.browser.msie&&$.browser.version=="11.0"){
			height=height-4;
		}
		return {width:width,height:height};
	}
	
	$.fn.rs_canvas = function(options, param){
		if (typeof options == 'string') {
			return $.fn.rs_canvas.methods[options](this, param);
		}
		options = options || {};
		return this.each(function(){
			var state = $.data(this, 'rs_canvas');
			if (state) {
				$.extend(state.options, options);
			} else {
				var opts=$.extend({},$.fn.rs_canvas.defaults,options);
				$.data(this, 'rs_canvas', {options:opts});
			}
			initWrap(this);
			initEvent(this);
			triggerEvent(this);
		});
	};
	$.fn.rs_canvas.methods={
		size: function(jq){
			return getSize(this);
		}
	};
	$.fn.rs_canvas.defaults={
		
	};
})(jQuery);