PPS = {};
PPS.Box = {
	boxid: "#messagebox",
	winlist: {},
	createBox: function(pluginsid, title) {
		return '<div class="msg"  style="z-index:1000;clear:both;" id="'+ pluginsid + '_MessageBox">' +
                '<div class="x-box-tl" style="cursor:move;" onmousedown="et.setdragobj(\''+pluginsid+'\');et.startmove(event);"><div class="x-box-tr"><div class="x-box-tc"><div class="msg_tit">' + title + '</div><div class="close"><a href="javascript:" class="x-box-closeEl"  style=" text-decoration:none; color:#ffffff;">关闭</a></div></div></div></div>' +
                '<div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"><div id="'+pluginsid+'x_box_content" class="x-box-content"  style=" padding:6px 0"></div></div></div></div>' +
                '<div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>' +
                '</div>';
	},
	
	
	mask: function() {
		$(PPS.Box.boxid).append('<div class="x-box-mask" style="z-index:1000"></div>');
		var box = $(PPS.Box.boxid + " div.x-box-mask");
		var bodyheight = PPS.iUtil.getScroll(document.body);
		if( bodyheight.h < bodyheight.ih )
			bodyheight = bodyheight.ih;
		else
			bodyheight = bodyheight.h;
			
		box.css({
			display: "",
			width:"100%",
			background: "#000000",
			position: "absolute",
			margin: "0 0 0 0",
			left:0,
			top: 0,
			height: bodyheight,
			filter: "alpha(opacity=70)",
			opacity: 0.3
		});
		return box;
	},
	
	show: function(title, content, callback) {
		var box = new PPS.Box.getCreateBox("x_box_show", title || "信息提示" ,{
			width:300,
			mask: true
		});
		$("#x_box_show_MessageBox div.x-box-content").append(content + '<br /><center><input id="x_box_show_button" type="button" value="确定" /></center>');
		//box.slideUp();
		box.show();
		$("#x_box_show_button").focus();
		$("#x_box_show_button").keydown(function(e){
			if(e.keyCode == 13)
				$("#x_box_show_button").click();
		});
		$("#x_box_show_button").bind("click", function() {
			box.closeEl(callback);
		});
	},
	
	getCreateBox: function(id, title, config) {
		if(config.mask) {
			var mask = PPS.Box.mask();
			mask.show();
		}
		PPS.Box.hiddenSection();
		$(PPS.Box.boxid).append(PPS.Box.createBox(id, title));
		var box = $(PPS.Box.boxid + " #" +id+"_MessageBox");
		box.hide();
		var pl = PPS.iUtil.getScroll(document.body);
		box.css({
			display:"none",
			width:config.width||300,
			height:config.height||0,
			position:"absolute",
			top: config.top || (pl.t)+(pl.ih/4)
		});
		PPS.iUtil.centerEl(PPS.iUtil.get(id+"_MessageBox"), "horizontally");
		$(PPS.Box.boxid + " #" + id + "_MessageBox a.x-box-closeEl").bind("click", function(){
				$(PPS.Box.boxid + " #" +id+ "_MessageBox").remove();
				mask.remove();
				if(typeof config.closeEl != "undefined")
					config.closeEl();	
				return false;
		});
		
		box.keydown(function(e) {
			if(!e)
				return;
				
			if(e.keyCode == 27) {
				$(PPS.Box.boxid + " #" + id + "_MessageBox a.x-box-closeEl").click();
			}
		});
				
		box.closeEl = function(d) {
			//$(PPS.Box.boxid + " #" + id + "_MessageBox a.x-box-closeEl").click();
			PPS.Box.showSection();
			$(PPS.Box.boxid + " #" +id+ "_MessageBox").remove();
			if(mask)
				mask.remove();
				
			if(typeof(d) != "undefined")
				d();
		};
		return box;
	},
	
	prompt: function(title, content, callback) {
		var mask = PPS.Box.mask();
		mask.fadeIn(2000);
		
		$(PPS.Box.boxid).append(PPS.Box.createBox("x_box_prompt", title));
		var box = $(PPS.Box.boxid + " #x_box_prompt_MessageBox");
		box.hide();

		var pl = PPS.iUtil.getScroll(document.body);
		box.css({
			display:"none",
			width:'300',
			height:0,
			position: "absolute",
			top : (pl.t)+(pl.ih/4)
		});
		//PPS.iUtil.centerEl(PPS.iUtil.get("x_box_confirm_MessageBox"), "vertically");
		PPS.iUtil.centerEl(PPS.iUtil.get("x_box_prompt_MessageBox"), "horizontally");
		$("#x_box_prompt_MessageBox div.x-box-content").append('<center>'+content+' <br /><input id="prompt_content" name="prompt_content" type="text" value="" /><br /><input id="promptYes" type="button" value="确定" /> <input id="promptNo" type="button" value="取消" /></center>');
		box.show();
		
		$("#prompt_content").focus();
		$("#x_box_prompt_MessageBox").keydown(function(){
			if(!arguments)
				return;
			
			if(!arguments[0])
				return;
				
			//监听回车键盘
			if(arguments[0].keyCode == 13) {
				$("#x_box_prompt_MessageBox #promptYes").click();
			}
		});
		$("#x_box_prompt_MessageBox #promptYes").bind("click", function() {				
				var txt = encodeURIComponent($("#prompt_content").val());
				$(PPS.Box.boxid + " #x_box_prompt_MessageBox").remove();
				mask.remove();
				$("#prompt_content").val("ddd");
				if( typeof callback != "undefined" )
					callback("yes", txt);
		});
		$("#x_box_prompt_MessageBox #promptNo").bind("click", function() {
			$(PPS.Box.boxid + " #x_box_prompt_MessageBox").remove();
				mask.remove();
				if( typeof callback != "undefined" )
					callback("no");
		});
			
		$(PPS.Box.boxid + " #x_box_prompt_MessageBox a.x-box-closeEl").bind("click", function(){
			$(PPS.Box.boxid + " #x_box_prompt_MessageBox").remove();
				mask.remove();
				if(typeof callback != "undefined")
					callback("no");
					
				return false;
		});
	},
	
	hiddenSection: function() {
		$('select').css('visibility', 'hidden');
	},
	showSection: function() {
		$('select').css('visibility', 'visible');
	},
	confirm: function(title, content, callback) {
		var box = PPS.Box.getCreateBox("x_box_confirm", title, {
			mask:true,
			closeEl: function() {
				if( typeof callback != "undefined" )
					callback("no");
			}
		});
		$("#x_box_confirm_MessageBox div.x-box-content").append('<center>'+content+' <br /><input id="confirmYes" type="button" value="确定" /><input id="confirmNo" type="button" value="取消" /></center>');
		box.show();
		PPS.Box.hiddenSection();
		$("#confirmYes").focus();
		$("#confirmYes").keydown(function(e){
			if(e.keyCode == 13) {
				box.closeEl(function(){
					if(typeof callback != "undefined")
						callback("yes");
				});
			}
			
			if(e.keyCode == 27) {
				box.closeEl(function(){
					if(typeof callback != "undefined")  
						callback("no");
				});
			}
		});
		$("#x_box_confirm_MessageBox #confirmYes").bind("click", function() {
			box.closeEl();
			if( typeof callback != "undefined" )
					callback("yes");
		});
		$("#x_box_confirm_MessageBox #confirmNo").bind("click", function() {
			box.closeEl();
			if( typeof callback != "undefined" )
				callback("no");
		});
			
		/*$(PPS.Box.boxid + " #x_box_confirm_MessageBox a.x-box-closeEl").bind("click", function(){
			box.closeEl(function(){
				if( typeof callback != "undefined" )
					callback("no");
			});
		});*/
	},
	/**
	* 新建立一个窗口
	*/
	Window: function(title, _data, config) {
		
		var pluginsid = "windows_"+new Date().getTime();
		//PPS.Box.Window.superclass.constructor.call(this, config);
		if( config.ident ) {
			if( PPS.Box.winlist[config.ident] )
				return;
		}
		PPS.Box.hiddenSection();
		$("#messagebox").append(PPS.Box.createBox(pluginsid, title));
		var box = $("#" + pluginsid + "_MessageBox");
	
		var boxid = pluginsid + "_MessageBox";
		box.mask = PPS.Box.mask();
		box.mask.show();
		box.hide();
		var pl = PPS.iUtil.getScroll(document.body);
		var ww = config.width ? config.width + 'px' : '';
		box.css({
			display:"none",
			width: ww || '30%',
			height:0,
			position: "absolute",
			zIndex:2000,
			top: (pl.t)+(pl.ih/4)
		});
		
		//PPS.iUtil.centerEl(PPS.iUtil.get(boxid), "vertically");
		PPS.iUtil.centerEl(PPS.iUtil.get(boxid), "horizontally");
		
		//box.show();
		GOTO(pluginsid+"x_box_content", _data, function(msg, e) {
			//该方法无法执行scriptif( typeof callback != undefined )
			if(!e) {
				box.closeEl();
				return false;
			}
			box.show();
			if(typeof config.callback != "undefined")
				config.callback("start");
		
		});
		$("#messagebox #"+pluginsid+"_MessageBox a.x-box-closeEl").bind("click", function() {
				box.mask.remove();
				$("#messagebox #"+boxid).remove();
				if(typeof config.ident != "undefined")
					PPS.Box.winlist[config.ident] = null;
				if(typeof config.callback != "undefined")
						config.callback("end");
				PPS.Box.showSection();
				
		});
		
		box.closeEl = function() {
			$("#messagebox #"+pluginsid+"_MessageBox a.x-box-closeEl").click();
			PPS.Box.showSection();
			if(config.ident)
				PPS.Box.winlist[config.ident] = null;
		};
		
		if(config.ident) {
			PPS.Box.winlist[config.ident] = (box);
		}
	},
	
	getWindow: function(ident) {
		//当用户取回window 自动删除;
		var box = PPS.Box.winlist[ident];
		PPS.Box.winlist[ident] = null;
		return box;
	}
};

PPS.iUtil = {
	get: function(e) {
		return document.getElementById(e);
	},
	getPosition : function(e)
	{
		var x = 0;
		var y = 0;
		var es = e.style;
		var restoreStyles = false;
		if (jQuery(e).css('display') == 'none') {
			var oldVisibility = es.visibility;
			var oldPosition = es.position;
			restoreStyles = true;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
		}
		var el = e;
		while (el){
			x += el.offsetLeft + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderLeftWidth)||0:0);
			y += el.offsetTop + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderTopWidth)||0:0);
			el = el.offsetParent;
		}
		el = e;
		while (el && el.tagName  && el.tagName.toLowerCase() != 'body')
		{
			x -= el.scrollLeft||0;
			y -= el.scrollTop||0;
			el = el.parentNode;
		}
		if (restoreStyles == true) {
			es.display = 'none';
			es.position = oldPosition;
			es.visibility = oldVisibility;
		}
		return {x:x, y:y};
	},
	getPositionLite : function(el)
	{
		var x = 0, y = 0;
		while(el) {
			x += el.offsetLeft || 0;
			y += el.offsetTop || 0;
			el = el.offsetParent;
		}
		return {x:x, y:y};
	},
	getSize : function(e)
	{
		var w = jQuery.css(e,'width');
		var h = jQuery.css(e,'height');
		var wb = 0;
		var hb = 0;
		var es = e.style;
		if (jQuery(e).css('display') != 'none') {
			wb = e.offsetWidth;
			hb = e.offsetHeight;
		} else {
			var oldVisibility = es.visibility;
			var oldPosition = es.position;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
			wb = e.offsetWidth;
			hb = e.offsetHeight;
			es.display = 'none';
			es.position = oldPosition;
			es.visibility = oldVisibility;
		}
		return {w:w, h:h, wb:wb, hb:hb};
	},
	getSizeLite : function(el)
	{
		return {
			wb:el.offsetWidth||0,
			hb:el.offsetHeight||0
		};
	},
	getClient : function(e)
	{
		var h, w, de;
		if (e) {
			w = e.clientWidth;
			h = e.clientHeight;
		} else {
			de = document.documentElement;
			w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
			h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
		}
		return {w:w,h:h};
	},
	getScroll : function (e)
	{
		var t=0, l=0, w=0, h=0, iw=0, ih=0;
		if (e && e.nodeName.toLowerCase() != 'body') {
			t = e.scrollTop;
			l = e.scrollLeft;
			w = e.scrollWidth;
			h = e.scrollHeight;
			iw = 0;
			ih = 0;
		} else  {
			if (document.documentElement) {
				t = document.documentElement.scrollTop;
				l = document.documentElement.scrollLeft;
				w = document.documentElement.scrollWidth;
				h = document.documentElement.scrollHeight;
			} else if (document.body) {
				t = document.body.scrollTop;
				l = document.body.scrollLeft;
				w = document.body.scrollWidth;
				h = document.body.scrollHeight;
			}
			iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
			ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
		}
		return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
	},
	getMargins : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('marginTop') || '';
		var r = el.css('marginRight') || '';
		var b = el.css('marginBottom') || '';
		var l = el.css('marginLeft') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getPadding : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('paddingTop') || '';
		var r = el.css('paddingRight') || '';
		var b = el.css('paddingBottom') || '';
		var l = el.css('paddingLeft') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getBorder : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('borderTopWidth') || '';
		var r = el.css('borderRightWidth') || '';
		var b = el.css('borderBottomWidth') || '';
		var l = el.css('borderLeftWidth') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)||0
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getPointer : function(event)
	{
		var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
		var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
		return {x:x, y:y};
	},
	traverseDOM : function(nodeEl, func)
	{
		func(nodeEl);
		nodeEl = nodeEl.firstChild;
		while(nodeEl){
			jQuery.iUtil.traverseDOM(nodeEl, func);
			nodeEl = nodeEl.nextSibling;
		}
	},
	purgeEvents : function(nodeEl)
	{
		jQuery.iUtil.traverseDOM(
			nodeEl,
			function(el)
			{
				for(var attr in el){
					if(typeof el[attr] === 'function') {
						el[attr] = null;
					}
				}
			}
		);
	},
	centerEl : function(el, axis)
	{
		var clientScroll = PPS.iUtil.getScroll();
		var windowSize = PPS.iUtil.getSize(el);
		if (!axis || axis == 'vertically')
			$(el).css(
				{
					top: clientScroll.t + ((Math.max(clientScroll.h,clientScroll.ih) - clientScroll.t - windowSize.hb)/2) + 'px'
				}
			);
		if (!axis || axis == 'horizontally')
			$(el).css(
				{
					left:	clientScroll.l + ((Math.max(clientScroll.w,clientScroll.iw) - clientScroll.l - windowSize.wb)/2) + 'px'
				}
			);
	},
	fixPNG : function (el, emptyGIF) {
		var images = jQuery('img[@src*="png"]', el||document), png;
		images.each( function() {
			png = this.src;				
			this.src = emptyGIF;
			this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')";
		});
	}
};

// Helper function to support older browsers!
/*[].indexOf || (Array.prototype.indexOf = function(v, n){
	n = (n == null) ? 0 : n;
	var m = this.length;
	for (var i=n; i<m; i++)
		if (this[i] == v)
			return i;
	return -1;
});
*/
