(function($) {
	var timeoutID, _self;
	$.fn.sam = function(options){
		var opts = $.extend({}, $.fn.sam.defaults, options);
		_self = this;
		this.createDomEle = function(opts){
	
			var _skin = opts.skin == "aero2" ? "-aero2" : "-aero";
			if($('#sam').length < 1){
				$('<div class="sam-main" id="sam" onclick="hideSAM();">' +
					  '<table cellpadding="0" cellspacing="0" id="sam_dragable">' +
						  '<tr>' +
							  '<td class="sam-top-left'+_skin+'">&nbsp;</td>' +
							  '<td class="sam-border-top'+_skin+'">&nbsp;</td>' +
							  '<td class="sam-top-right'+_skin+'">&nbsp;</td>' +
						  '</tr>' +
						  '<tr>' +
							  '<td class="sam-border-left'+_skin+'">&nbsp;</td>' +
							  '<td>' +
								  '<div class="sam-title" id="sam-container-content" /></div>' +
							  '</td>' +
							  '<td class="sam-border-right'+_skin+'">&nbsp;</td>' +
						  '</tr>' +
						  '<tr>' +
							  '<td class="sam-bottom-left'+_skin+'">&nbsp;</td>' +
							  '<td class="sam-border-bottom'+_skin+'">&nbsp;</td>' +
							  '<td class="sam-bottom-right'+_skin+'">&nbsp;</td>' +
						  '</tr>' +
					  '</table>' +
				  '</div>').appendTo($(document.body));	
				  $('#sam-container-content').html(opts.msg);
				 
				$('#leeoOKBtn, #leeoCancleBtn').hover(function(){$(this).removeClass('leeoInput_out').addClass('leeoInput_over');}, function(){$(this).removeClass('leeoInput_over').addClass('leeoInput_out');});
			}else{
				$('#sam').css({opacity: 0, display: 'block'});  $('#sam-container-content').html(opts.msg);
			}
		}
		this.IEPngFix = function(){
			try{
				//if($.browser.msie && $.browser.version < 7) {
					$(document).pngFix();
				//}
			}catch(e){
			
			}
	    }
		this.overlay = function(_isShow, _opacity, _color){
			if(_isShow){
				if($('#leeo-overlay').length < 1){
					$('<div id="leeo-overlay" class="leeo-overlay"/>').appendTo($(document.body));
				}
				$('#leeo-overlay').show().css({
					'z-index': 99996,
					'opacity': 0,
					'height': $(document).height(),
					'background-color': _color
				}).animate({opacity: _opacity});
			}
		}
		this.setCss = function(_width, _zIndex, _doFixed, _type){
			var docWidth = $(document).width();
			var docHeight = $(document).height();
			if($.browser.msie && parseInt($.browser.version) < 7)
				var scrollTop =  $(window).scrollTop();
			else
				var scrollTop = 0;//document.documentElement.scrollTop;

	if($.browser.msie && parseInt($.browser.version) == 7){
		var topPosFix = typeof window.pageYOffset != 'undefined' ?
window.pageYOffset:document.documentElement &&
document.documentElement.scrollTop ?
document.documentElement.scrollTop: document.body.scrollTop?
document.body.scrollTop:0;
var  scrollTop = document.body.scrollTop;
	}	
	if($.browser.msie && parseInt($.browser.version) == 6)
			_left = (docWidth -  _width)-310;
	else
		_left = (docWidth - _width)-11;	

				//var scrollTop =  document.body.scrollTop;
			//var _top = parseInt(($(window).height() - $('#' + objID).height()) / 2);
			//alert(scrollTop);
			$('#sam').css({
				'position': (_doFixed ? 'fixed' : 'absolute'),
				'width': _width,
				'margin-left':_left ,
				'z-index': _zIndex
			}).animate({opacity: 1, top : parseInt(scrollTop) + 17 });
		}
		this.setContent = function(opts){
			var _ext = ".png", _msg = opts.msg;
			if(opts.type == "loading"){ 
			    _ext = ".gif";
				_msg = "";
				$('#sam').css('width', 347);
			}
		//	$('#sam-container-content').html('<img src="images/' + opts.type + _ext + '" />'+ _msg);
		}
		/*this.markDrag = function(){
			try{
				$('#sam').jqDrag('#sam_dragable');
				$('#sam_dragable').css({cursor: 'move'});
			}catch(e){
				//alert("您设置了参数dragable为true，需要jQuery jqDnR插件支持！http://www.iceburg.net");
			}
		}*/
		this.hideSAM = $.fn.sam.hideSAM;
		this.onScroll = function(){
			$('#sam').css('position', 'absolute');
			$(window).scroll(function(){
			if($.browser.msie && parseInt($.browser.version) == 7){
		var topPosFix = typeof window.pageYOffset != 'undefined' ?
window.pageYOffset:document.documentElement &&
document.documentElement.scrollTop ?
document.documentElement.scrollTop: document.body.scrollTop?
document.body.scrollTop:0;
var f_top = document.body.scrollTop;
	}else
		var f_top = $(window).scrollTop();
		
				$('#sam').css('top', f_top);
			});
	    }
		this.repositionOnResize = function(_status){
			switch(_status) {
				case true:
					$(window).bind('resize', _self.reposition);
				break;
				case false:
					$(window).unbind('resize', _self.reposition);
				break;
			}
		}
		this.reposition = function(){
			var top = 120;//($(window).height() - $('#leeoAlerts').outerHeight()) / 2;
			var left = ($(window).width() - $('#sam').outerWidth()) / 2;
			//if(top < 0) top = 0;
			if(left < 0) left = 0;			
			// IE6 fix
			if($.browser.msie || parseInt($.browser.version) < 7){
				top = top + $(window).scrollTop();
			}
			$('#sam').css({
				top: top + 'px',
				left: left + 'px'
			});
			$('#leeo-overlay').height($(document).height());
		}

		this.initialize = function() {
			_self.createDomEle(opts);	
			_self.IEPngFix();
			_self.overlay(opts.showOverlay, opts.ovarlayOpacity, opts.ovarlayColor);
			_self.setCss(opts.width, opts.zIndex, opts.doFixed, opts.type);
			_self.setContent(opts);

			if(opts.doFixed){
				
				if($.browser.msie && $.browser.version < 7) {
					_self.onScroll();
				}
			}
			if(opts.repositionOnResize){
				_self.repositionOnResize(true);
			}
			if(opts.callback != null){
				opts.callback();
			}
			if(opts.timeout > 0){
			//	timeoutID = setTimeout(_self.hideAjaxMsg, opts.timeout);
			setTimeout('hideSAM();', opts.timeout);
			}
			return _self;
		}

		this.initialize();
	};
	$.fn.sam.hideSAM = function(){
		window.clearTimeout(timeoutID);
		$('#leeo-overlay').animate({opacity: 0}, function(){$(this).hide().remove();});
		$('#sam').animate({opacity: 0, top: 0}, function(){$(this).hide().remove();});
		_self.repositionOnResize(false);
	}
	$.fn.sam.defaults = {
		type: 'loading',
		skin: 'aero33',
		msg: '',
		width: 400, 
		zIndex: 99999,
		timeout: 0,
		callback: null,
		showOverlay: true,
		ovarlayOpacity: 0.9,
		ovarlayColor: '#DFDFDF',
		doFixed: true,
		draggable: false,
		repositionOnResize: true
	};
	showSAM = function(opt){
		$.fn.sam(opt);
	}
	hideSAM = function(){
		$.fn.sam.hideSAM();
	}
})(jQuery);
