/**
 * jQuery.swfOverlay
 * Copyright (c) 2011, Tom� Jungman, teejays.cz
 * All Rights Reserved
 * Date: 14/1/2011
 *
 * JQ plugin which prevents main html document from scrolling.
 * There are 2 ways of doing this:
 * 
 * 1) catching mouseScroll events and cancelling 'em
 * 2) catching scroll events and acting against - reseting scrollTop property
 *
 * Tested with: IE8, FF3, Opera9, Safari5, Chrome8
 **/
(function($){

	//plugin's API space
	$.fn.swfOverlay = {
		lockScroll: null,
		unlockScroll: null,
		embedSWF: null,
		removeSWF: null
	};
	
	//inner fx
	$.fn.swfOverlay.fx = {
		blockScroll: null,
		blockMouse: null,
		onResize: null
	};
	
	//inner vars
	$.fn.swfOverlay.vars = {
		startScrollTop: 0,
		startScrollLeft: 0,
		swfID: ""
	};
	
	// --- embedd SWF
	$.fn.swfOverlay.embedSWF = function(swf, id, version, installer, flvars, params, atts) {
		//$("#pagecontent").append("<br />SWF added");
		$.fn.swfOverlay.vars.swfID = id;
		//$("#pagecontent").append("<br />H: "+$(window).height());
		//$("#pagecontent").append("<br />W: "+$(window).width());
		swfobject.embedSWF(swf, id, $(window).width(), $(window).height(), version, installer, flvars, params, atts);
		//swfobject.embedSWF(swf, id, 800, 400, version, installer, flvars, params, atts);

                /*$('#'+id).flash(   {
                    src: swf,
                    height: $(window).height(),
                    width: $(window).width(),
                    flashvars: flvars,
                    params: params
                },{ version: version } );*/
		
		//onResize
		$(window).bind('resize', $.fn.swfOverlay.onResize);
	}
	
	// --- remove SWF
	$.fn.swfOverlay.removeSWF = function() {
		$("#swfwrap").html("");
		$("#swfwrap").css("top", 0);
		$(window).unbind('resize', $.fn.swfOverlay.onResize);
	}
	
	// --- onResizeSWF
	$.fn.swfOverlay.onResize = function(){
		$("#"+$.fn.swfOverlay.vars.swfID).css("width", $(window).width());
		$("#"+$.fn.swfOverlay.vars.swfID).css("height",$(window).height());
	}
	
	// --- lock
	$.fn.swfOverlay.lockScroll = function() {
		$("#swfwrap").css("top", $(window).scrollTop()+"px");
		//$("#pagecontent").append("<br />top:"+$(window).scrollTop()+"px");
		$.fn.swfOverlay.vars.startScrollTop = $(window).scrollTop();
		$.fn.swfOverlay.vars.startScrollLeft = $(window).scrollLeft();
		/*setTimeout(function(){
			//$("body").css("overflow", "hidden");
			// $("body").scroll = "no";
		}, 2000);
		return;*/
		
		//$("#pagecontent").append("<br />LOCKED");
		
		//register mouse blocker
		if(window.addEventListener){document.addEventListener('DOMMouseScroll', $.fn.swfOverlay.fx.blockMouse, false)}; //mozilla		
		document.onmousewheel = window.onmousewheel = $.fn.swfOverlay.fx.blockMouse; //for IE/OPERA..
		
		//register scroll blocker
		$(window).bind('scroll', $.fn.swfOverlay.fx.blockScroll);
	};
	
	// --- unlock
	$.fn.swfOverlay.unlockScroll = function() {
		//$("#pagecontent").append("<br />UNLOCKED");
		if(window.removeEventListener){document.removeEventListener('DOMMouseScroll', $.fn.swfOverlay.fx.blockMouse, false)}; //mozilla		
		document.onmousewheel = window.onmousewheel = null; //for IE/OPERA..
		$(window).unbind('scroll', $.fn.swfOverlay.fx.blockScroll);
	}
	
	// --- scroll blocker
	$.fn.swfOverlay.fx.blockScroll = function(evt) {	
		evt.preventDefault();
		evt.returnValue = false;
		$("body").scrollTop($.fn.swfOverlay.vars.startScrollTop);
		$("body").scrollLeft($.fn.swfOverlay.vars.startScrollLeft);
		$(window).scrollTop($.fn.swfOverlay.vars.startScrollTop);
		$(window).scrollLeft($.fn.swfOverlay.vars.startScrollLeft);
		return false;
	};	
	
	// --- mouse blocker
	$.fn.swfOverlay.fx.blockMouse = function(evt) {	
		//$("#pagecontent").append("<br />Evt blocked.");
		//alert("block");
		//evt.preventDefault();
		try{
			evt.preventDefault();
		} catch (e){
			try{
				evt.returnValue = false; 
			} catch (e){
			}
		}
		return false;
	};	
	
})(jQuery);

