﻿jQuery.extend({	
	ImpromptuDefaults: { prefix:'jqi', buttons:{ 确定:true }, loaded:function(){}, submit:function(){return true;}, callback:function(){}, opacity:0.4, zIndex: 999, overlayspeed:'fast', promptspeed:'fast', show:'show', focus:0, useiframe:false,boxtype:'none',boximage:'',showClose:true },
	SetImpromptuDefaults: function(o){ 
		jQuery.ImpromptuDefaults = jQuery.extend({},jQuery.ImpromptuDefaults,o);
	},
	prompt: function(t,m,o){
		o = jQuery.extend({},jQuery.ImpromptuDefaults,o);
		
		var ie6 = (jQuery.browser.msie && jQuery.browser.version < 7);	
		var b = self.frameElement==null?jQuery(document.body):jQuery(top.document.body);
		var w = self.frameElement==null?jQuery(window):jQuery(top.window);
		var wobj = self.frameElement==null?window:top.window;
		var dobj = self.frameElement==null?document:top.document;

		var msgbox = '<div class="'+ o.prefix +'box" id="'+ o.prefix +'box">';		

		if(o.useiframe && ((jQuery.browser.msie && jQuery('object, applet').length > 0) || ie6))//if you want to use the iframe uncomment these 3 lines
			msgbox += '<iframe src="javascript:;" class="'+ o.prefix +'fade" id="'+ o.prefix +'fade"></iframe>';
		else{ 
			if(ie6) $('select').css('visibility','hidden');
			msgbox +='<div class="'+ o.prefix +'fade" id="'+ o.prefix +'fade"></div>';
		}	
	
		msgbox += '<table class="'+ o.prefix +'" id="'+ o.prefix +'" cellpadding="0" cellspacing="0" border="0"><tr><td class="'+o.prefix+'lt_corner">&nbsp;</td>'
		msgbox += '<td class="'+o.prefix+'t"><div class="'+o.prefix+"title ";
		if(o.boxtype!="none"&&o.boxtype!="")
		    msgbox += o.prefix + o.boxtype;
		msgbox += 'title">'+t+'</div>';
		if(o.showClose)
		    msgbox += '<div id="'+ o.prefix +'close" class="'+ o.prefix +'close" title="关闭"></div>'
		msgbox +='</td>';
		
		msgbox += '<td class="'+o.prefix+'rt_corner">&nbsp;</td></tr>';
		msgbox += '<tr><td class="'+o.prefix+'l">&nbsp;</td>';
		
		msgbox += '<td><table class="'+ o.prefix +'container" cellpadding="0" cellspacing="0" border="0"><tr><td class="'+o.prefix+'img">';
		if(o.boxtype=="img"&&o.boximage != "")
		    msgbox += '<img src="'+o.boximage+'">';
	
		msgbox += '</td><td class="'+ o.prefix +'message">'+ m +'</td></tr><tr><td class="'+ o.prefix +'buttons" id="'+ o.prefix +'buttons" colspan="2">';
		jQuery.each(o.buttons,function(k,v){msgbox += '<button name="'+ o.prefix +'button'+ k +'" id="'+ o.prefix +'button'+ k +'" value="'+ v +'" class="'+o.prefix+'button">'+ k +'</button>'}) ;		
		msgbox += '</td></tr></table></td><td class="'+o.prefix+'r">&nbsp;</td></tr>';
		msgbox += '<tr><td class="'+o.prefix+'lb_corner">&nbsp;</td><td class="'+o.prefix+'b">&nbsp;</td><td class="'+o.prefix+'rb_corner">&nbsp;</td>';
		msgbox += '</tr></table></div>';

		var jqib =b.append(msgbox).find('#'+ o.prefix +'box');
		var jqi = jqib.find('#'+ o.prefix);
		var jqif = jqib.find('#'+ o.prefix +'fade');

		var getWindowScrollOffset = function(){ 
			return (dobj.documentElement.scrollTop || dobj.body.scrollTop) + 'px'; 
		};		
		
		var getWindowSize = function(){ 
			var size = {
				width: wobj.innerWidth || (wobj.document.documentElement.clientWidth || wobj.document.body.clientWidth),
				height: wobj.innerHeight || (wobj.document.documentElement.clientHeight || wobj.document.body.clientHeight)
			};
			return size;
		};
		
		var ie6scroll = function(){ 
			jqib.css({ top: getWindowScrollOffset() }); 
		};
		
		var flashPrompt = function(){
			var i = 0;
			jqib.addClass(o.prefix +'warning');
			var intervalid = setInterval(function(){ 
				jqib.toggleClass(o.prefix +'warning');
				if(i++ > 1){
					clearInterval(intervalid);
					jqib.removeClass(o.prefix +'warning');
				}
			}, 100);			
		};		
		
		var escapeKeyClosePrompt = function(e){
			if(e.which == 27 || (e.DOM_VK_ESCAPE == 27 && e.which==0)) removePrompt();
		};
		
		var positionPrompt = function(){
			var wsize = getWindowSize();
			jqib.css({ position: (ie6)? "absolute" : "fixed", height: wsize.height, width: (ie6)?wsize.width+"px":"100%", top: (ie6)? getWindowScrollOffset():0, left: 0, right: 0, bottom: 0});
			jqif.css({ position: "absolute", height: wsize.height, width: "100%", top: 0, left: 0, right: 0, bottom: 0 });
			jqi.css({ position: "absolute", top: "30%", left: "50%", marginLeft: ((((jqi.css("paddingLeft").split("px")[0]*1) + jqi.width())/2)*-1) });					
		};
		
		var stylePrompt = function(){
		    jqib.css({ zIndex: o.zIndex });
			jqif.css({ zIndex: o.zIndex , display: "none", opacity: o.opacity });
			jqi.css({ zIndex: o.zIndex + 1,display: "none" });
		}
		
		var removePrompt = function(callCallback, clicked, msg){
			jqi.remove(); 
			if(ie6)b.unbind('scroll',ie6scroll);//ie6, remove the scroll event
			w.unbind('resize',positionPrompt);			
			jqif.fadeOut(o.overlayspeed,function(){
				jqif.unbind('click',flashPrompt);
				jqif.remove();				
				jqib.unbind('keypress',escapeKeyClosePrompt);
				jqib.remove();
				if(ie6 && !o.useiframe) $('select').css('visibility','visible');
				if(callCallback) o.callback(clicked,msg);
			});
		}
		
		positionPrompt();
		stylePrompt();	

		//Events
		b.find('#'+ o.prefix +'buttons').children('button').click(function(){ 
			var msg = jqi.find('.'+ o.prefix +'container').find('.'+ o.prefix +'message');
			var clicked = o.buttons[jQuery(this).text()];	
			if(o.submit(clicked,msg))				
				removePrompt(true,clicked,msg);
		});
		b.find('#'+ o.prefix +'buttons').children('button').mouseover(function(){ 
			this.className = o.prefix + "buttonover";
		});
		b.find('#'+ o.prefix +'buttons').children('button').mouseout(function(){ 
			this.className = o.prefix + "button";
		});
		if(ie6) w.scroll(ie6scroll);//ie6, add a scroll event to fix position:fixed
		jqif.click(flashPrompt);
        if(self.frameElement!=null) wobj.onresize = positionPrompt;
        else w.resize(positionPrompt);
		jqib.keypress(escapeKeyClosePrompt);
		jqi.find('#'+ o.prefix +'close').click(removePrompt);
		jqi.find('#'+ o.prefix +'close').mouseover(function(){this.className= o.prefix +'closeover';});
		jqi.find('#'+ o.prefix +'close').mouseout(function(){this.className= o.prefix +'close';});
		//Show it
		jqif.fadeIn(o.overlayspeed);
		jqi[o.show](o.promptspeed,o.loaded);
		jqi.find('#'+ o.prefix +'buttons button:eq('+ o.focus +')').focus();//focus the default button
		return jqib;
	}	
});

var dialog = new Object();

dialog.warn = function()
{
//	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
//	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"提示对话框";
//	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;
    var txt = arguments[0]==undefined||arguments[0]==null?"&nbsp;":arguments[0];
    var note= arguments[1]==undefined||arguments[1]==null?"提示对话框":arguments[1];
    var myCallBack = arguments[2]==undefined||arguments[2]==null?defaultCallBack:arguments[2];
	$.prompt(note,txt,{prefix:'jec',boxtype:'warn',callback:myCallBack});
}
dialog.info = function(){
//	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
//	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"提示对话框";
//	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;
    var txt = arguments[0]==undefined||arguments[0]==null?"&nbsp;":arguments[0];
    var note= arguments[1]==undefined||arguments[1]==null?"提示对话框":arguments[1];
    var myCallBack = arguments[2]==undefined||arguments[2]==null?defaultCallBack:arguments[2];
    $.prompt(note,txt,{prefix:'jec',boxtype:'info',callback:myCallBack});
}
dialog.ok = function(){
//	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
//	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"提示对话框";
//	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;
	var txt = arguments[0]==undefined||arguments[0]==null?"&nbsp;":arguments[0];
    var note= arguments[1]==undefined||arguments[1]==null?"提示对话框":arguments[1];
    var myCallBack = arguments[2]==undefined||arguments[2]==null?defaultCallBack:arguments[2];	
	$.prompt(note,txt,{prefix:'jec',boxtype:'ok',callback:myCallBack});
}
dialog.error = function(){
//	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
//	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"提示对话框";
//	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;	
    var txt = arguments[0]==undefined||arguments[0]==null?"&nbsp;":arguments[0];
    var note= arguments[1]==undefined||arguments[1]==null?"提示对话框":arguments[1];
    var myCallBack = arguments[2]==undefined||arguments[2]==null?defaultCallBack:arguments[2];
	$.prompt(note,txt,{prefix:'jec',boxtype:'error',callback:myCallBack});
}
dialog.confirm = function(){
//	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
//	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"选择对话框";
//	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;
//	$.prompt(note,txt,{prefix:'jec',buttons:{ 确定:true,取消:false },boxtype:'ask',callback:myCallBack});	
	var txt = arguments[0]==undefined||arguments[0]==null?"&nbsp;":arguments[0];
    var note= arguments[1]==undefined||arguments[1]==null?"选择对话框":arguments[1];
    var myCallBack = arguments[2]==undefined||arguments[2]==null?defaultCallBack:arguments[2];
    $.prompt(note,txt,{prefix:'jec',buttons:{ 确定:true,取消:false },boxtype:'ask',callback:myCallBack});
}
dialog.select = function(){
//	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
//	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"选择对话框";
//	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;
//	var btnList = arguments.length > 3?arguments[3]:null;
    var txt = arguments[0]==undefined||arguments[0]==null?"&nbsp;":arguments[0];
    var note= arguments[1]==undefined||arguments[1]==null?"选择对话框":arguments[1];
    var myCallBack = arguments[2]==undefined||arguments[2]==null?defaultCallBack:arguments[2];
    var btnList = arguments[3]==undefined||arguments[3]==null?null:arguments[3];
	$.prompt(note,txt,{prefix:'jec',buttons:btnList,boxtype:'ask',callback:myCallBack});
}
dialog.input = function(){
	var txt = arguments.length > 0? arguments[0]+"<br/>":"&nbsp;";
	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"输入对话框";
	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;
	var dvalue = arguments.length > 3?arguments[3]:"";
	var inputbox = '<input type="text" id="promptInput" name="promptInput" value="'+dvalue+'" class="jecinput"/>';	
	$.prompt(note,txt+inputbox,{prefix:'jec',buttons:{ 确定:true,取消:false },boxtype:'ask',callback:myCallBack});
}
dialog.password = function(){
	var txt = arguments.length > 0? arguments[0]+"<br/>":"&nbsp;";
	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"输入对话框";
	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;
	var dvalue = arguments.length > 3?arguments[3]:"";
	var inputbox = '<input type="password" id="promptInput" name="promptInput" value="'+dvalue+'" class="jecinput"/>';	
	$.prompt(note,txt+inputbox,{prefix:'jec',buttons:{ 确定:true,取消:false },boxtype:'ask',callback:myCallBack});
}
dialog.html = function(){
	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"文本信息";
	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;	
	$.prompt(note,txt,{prefix:'jec',boxtype:'none',callback:myCallBack});
}
dialog.text = function(){
	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"文本信息";
	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;	
	$.prompt(note,txtToHtml(txt),{prefix:'jec',boxtype:'none',callback:myCallBack});
}
dialog.image = function()
{
	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"选择对话框";
	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;
	var btnList = arguments.length > 3?arguments[3]:null;
	var img = arguments.length > 4?arguments[4]:'';
	$.prompt(note,txt,{prefix:'jec',buttons:btnList,boxtype:'img',callback:myCallBack,boximage:img});
}
dialog.none = function()
{
	var txt = arguments.length > 0? arguments[0]:"&nbsp;";
	var note = arguments.length > 1?(arguments[1]==""?"&nbsp;":arguments[1]):"对话框";
	var myCallBack = arguments.length > 2?(arguments[2]==null?defaultCallBack:arguments[2]):defaultCallBack;	
	$.prompt(note,txt,{prefix:'jec',boxtype:'none',callback:myCallBack});
}
dialog.ToShoppingCart = function(op,shopHref,cartHref,goodsName,googdsPrice,goodsImg,goodsNum,goodsColor,goodsSize){
    var note = (op=="ADD"?"成功添加到":"编辑")+"购物车";
    var txt = '<table class="goodsInfo"><tr><td colspan="2">'+goodsName+'</td></tr>';
    txt += goodsColor==undefined?'':'<tr><td colspan="2">颜色：<B>'+goodsColor+'</B></td></tr>';
    txt += goodsSize==undefined?'':'<tr><td colspan="2">尺寸：<B>'+goodsSize+'</B></td></tr>';
    txt += '<tr><td>数量：<B>'+goodsNum+'</B></td><td width="100">价格：<B style="color:#ff6600">￥'+googdsPrice+'</B></td></tr></table>';
    var btnList = { 继续购物:0,去购物车:1 };
    var myCallBack = function(){
        if(arguments[0]==0)
            location = shopHref;
	    else if(arguments[0]==1)
		    location = cartHref;
		return false;
    }
    $.prompt(note,txt,{prefix:'tocart',buttons:btnList,boxtype:'img',submit:myCallBack,boximage:goodsImg});
}
function defaultCallBack(){}
function inputValue(obj){
	return obj.children("#promptInput").val();
}
function txtToHtml(txt)
{
	txt = txt.replace("&","&amp;");
	txt = txt.replace("<","&lt;");
	txt = txt.replace(">","&gt;");
	txt = txt.replace('"',"&quot;");
	txt = txt.replace("'","&apos");
	return txt;
}
