/**
 * @author dami
 */
if (!YAHOO.k) {
	YAHOO.namespace("k");
}


if (!YAHOO.k.Overlay) {

/**
 * @namespace YAHOO.k
 * @requires YUI
 * @singleton Overlay
 */
YAHOO.k.Overlay = function() {
	//load YUI container widget dynamically
	var showOverlay,confirmOverlay;
	var text, yesHandler, noHandler, params ,context, isGood;
	var hideTimeout;
	
	var loadContainer = function(type) {
		var loader = new YAHOO.util.YUILoader({
			require: ['container'],
			base: 'http://k.kbcdn.com/js/yui/build/',
			onSuccess: function(){
				init(type);
			},
			onFailure: function(o){
				alert("error: " + YAHOO.lang.dump(o));
			}
		});
		loader.insert();
	}
	
	var init = function(type) {
		showOverlay = new YAHOO.widget.Overlay('k_show_overlay', {visible:false, width:"360px", effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25}});
		var html = '<div class="SNSLayer">';
		html += '<div class="SNSLayerContentOther ">';
		html += '<span id="k_show_overlay_isgood"></span>';
		html += '<p><span id="k_show_overlay_content">执行完成！</span></p>';
		html += '</div>';	
		html += '</div>';
		showOverlay.setBody(html);
		showOverlay.render(document.body);
		
		confirmOverlay = new YAHOO.widget.Overlay('k_confirm_overlay', {visible:false, width:"360px"});
		var html = '<div class="SNSLayer">';
		html += '<div class="SNSLayerContent">';
		html += '<span id="k_confirm_overlay_isgood"></span>';
		html += '<p id="k_confirm_overlay_content">确定？</p>';
		html += '<button id="k_confirm_overlay_yes">确定</button><button id="k_confirm_overlay_no">取消</button>';
		html += '</div>';
		html += '</div>';
		confirmOverlay.setBody(html);
		confirmOverlay.render(document.body);
		
		if (type == 1) {
			_show();
		} else {
			_confirm();
		}
		
	}
	
	var _show = function() {
		document.getElementById('k_show_overlay_isgood').className = (isGood) ? 'p3' : 'p4';
		window.clearTimeout(hideTimeout);
		hideTimeout = window.setTimeout(hide, 3000);
		document.getElementById('k_show_overlay_content').innerHTML = text;
		showOverlay.show();
		showOverlay.doCenterOnDOMEvent();
		if(context != null){
			var y = YAHOO.util.Dom.getY(context) - 80;
			showOverlay.cfg.setProperty("y", y);
		}
	}
	var _confirm = function() {
		document.getElementById('k_confirm_overlay_isgood').className = (isGood) ? 'p1' : 'p2';
		document.getElementById('k_confirm_overlay_content').innerHTML = text;
		confirmOverlay.show();
		confirmOverlay.doCenterOnDOMEvent();
		if(context != null){
			var y = YAHOO.util.Dom.getY(context) - 100;
			confirmOverlay.cfg.setProperty("y", y);
		}
		YAHOO.util.Event.removeListener("k_confirm_overlay_yes", "click");
		YAHOO.util.Event.removeListener("k_confirm_overlay_no", "click");
		if (yesHandler) {
			YAHOO.util.Event.addListener("k_confirm_overlay_yes", "click", function(){
				yesHandler(params);
			});
		}
		if (noHandler) {
			YAHOO.util.Event.addListener("k_confirm_overlay_no", "click", function(){
				noHandler(params);
			});
		}
		YAHOO.util.Event.addListener("k_confirm_overlay_no", "click", function(){
			confirmOverlay.hide();
		});
		YAHOO.util.Event.addListener("k_confirm_overlay_yes", "click", function(){
			confirmOverlay.hide();
		});
	}
	
	var hide = function() {
		showOverlay.hide();
	}
	return {
		show : function(_text, _context, _isGood){
			text = _text, context = _context, isGood = _isGood;
			if (!showOverlay) {
				loadContainer(1);
			} else {
				_show();
			}
		},
		confirm : function(_text, _yesHandler, _noHandler, _params , _context, _isGood) {
			text = _text, yesHandler = _yesHandler, noHandler = _noHandler, params = _params, context = _context, isGood = _isGood;
			if (!confirmOverlay) {
				loadContainer(2);
			} else {
				_confirm();
			}
		}
	}
}();
}
