/*
 * pantoDialog 1.0.0
 *
 * Copyright (c) 2008 pantosoft
 * Author : Kevin Huang
 * Version 1.0.0
 Parameter
 * @width     : 显示dialog的宽度
 * @height   : 显示dialog的高度
 * @title : 显示标题的名称
 * @message   : 消息内容
 * @messageObj   : 消息对象
 * @draggable  :  是否可以拖拽
 * @animate   : 显示动画，其中"bounceout","elasout","backin"等特效需要easing library,默认为无效果
 * @maskColor  : 遮罩层的颜色,默认为#000000
 * @maskOpacity  : 遮罩层透明度,默认为5
 *
 *
 *  Example:
 *  $("#showDialog").showDialog({
		width     : 600,  
		height   : 286,            
		title : "申请异动学生",
		message : "",
		messageObj : "#selectDialog",
		draggable : true,
		animate : "",//bounceout
		maskColor : "#1b1613",
		maskOpacity: 30	
	});
 */
jQuery.fn.extend({
	dfoptions:{
		    width     : 20,  
            height   : 20,            
            title : "标题",
            message : "",
            messageObj : "",
            draggable : false,
			animate : "",
			maskColor : "#1b1613",
			maskOpacity: 30
         },
    setOption:function(options){
		options = $.extend($(this).dfoptions,options);
		$(this).setSizeAndTitleAndMsg(options.width,options.height,options.title,options.message,options.messageObj);
		
		$(".dialogbackgroup").Dialog({
			maskColor :options.maskColor, 
			maskOpacity: options.maskOpacity,   
			animate:options.animate,  
			draggable:options.draggable,   
			dragHandle:".dialogbody",
			close:".dialogclose"
		  });
	},
	showAlertDialog: function(options){
		$(this).insertAlertDialogHTML();
		$(this).setOption(options);
	},
	showConfirmDialog:function(options){
		$(this).insertConfirmDialogHTML();
		$(this).setOption(options);
	},
	showDialog:function(options){
		$(this).insertDialogHTML();
		$(this).setOption(options);
	},
	 setWidth:function(a_w){
	 	if(!isNaN(a_w)){
			$(".dialogbackgroup").width(a_w+20);
			$(".dialogbody").width(a_w);
			$(".dialogconter").width(a_w);
			if($.browser.msie){ 
				if($.browser.version=='7.0'){
					$(".dialoghard").width(a_w);
					$(".dialogtitle").width(a_w-26);
					$(".dialogclose").width(24);
				}else if($.browser.version=='6.0'){
					$(".dialoghard").width(a_w);
					$(".dialogtitle").width(a_w-22);
					$(".dialogclose").width(20);
				}
				
			}else if($.browser.mozilla){
				$(".dialoghard").width(a_w+5);
				$(".dialogtitle").width(a_w-20);
			}
		}
	 },
	 setHeight:function(a_h){
	 	if(!isNaN(a_h)){
			$(".dialogbackgroup").height(a_h+24);
			$(".dialogbody").height(a_h);
			$(".dialogconter").height(a_h-10);
		}
	 },
	 setTitle:function(a_t){
	 	$("#dialogtitle").text(a_t);
	 },
	 setMessage:function(_m,insertType){
	 	if(insertType=='html'){
			var _a=map.get(_m);
			if(_a==null){
				$(".dialogconter").html(_m);
				map.put(_m,_m);
			}else{
				$(".dialogconter").html(_a);
			}
				
		}else{
			var _a=map.get(_m);
			if (_a == null) {
				$(".dialogconter").html($(_m).html());
				map.put(_m,$(_m).html());
				$(_m).remove();
			}else{
				$(".dialogconter").html(_a);
			}
			
		}
	 	
	 },
	 insertDialogHTML:function(){
	 	$("body").append($(this).getConterDialogHTML());
	 },
	 insertAlertDialogHTML:function(){
	 	$(this).insertDialogHTML();
	 	$(".dialogconter").html($(this).getAlertDialogHTML());
	 },
	 insertConfirmDialogHTML:function(){
	 	$(this).insertDialogHTML();
	 	$(".dialogconter").html($(this).getConfirmDialogHTML());
	 },
	 
	 setSizeAndTitleAndMsg:function(a_w,a_h,a_t,a_m,a_mo){
		if (a_mo == '') {
			$(this).setMessage(a_m,"html");
		}else {
			$(this).setMessage(a_mo,"obj");
		}
	 	$(this).setSizeAndTitle(a_w,a_h,a_t);
		
	 },
	 setSizeAndTitle:function(a_w,a_h,a_t){
	 	$(this).setWidth(a_w);
		$(this).setHeight(a_h);
		$(this).setTitle(a_t);
	 },
	 getConterDialogHTML:function(){
		return "<div class=\"dialogbackgroup\">\
		<div class=\"dialogbody\">\
			<div class=\"dialoghard\">\
				<div class=\"dialogtitle\"><label id=\"dialogtitle\">标题</label></div>\
				<div class=\"dialogclose\"><a href=\"javascript:void(0);\" class=\"noline\" title=\"关闭\"> X </a></div>\
				<div class=\"clean\"></div>\
			</div>\
			<div class=\"dialogconter\">\
			</div>\
		</div>\
		</div>";
	},
	
	getConfirmDialogHTML:function(){
		return "<div class=\"dialogmsg\" >\
					 <img src=\"img/warning.gif\"></img>&nbsp;&nbsp;<label class=\"msgconter\"></label>\
				</div>\
				<div class=\"dialogaction\">\
					<input type=\"button\" value=\" 确 定 \" id=\"dialogsubmit\" class=\"button\" title=\"确定\"/>&nbsp;&nbsp;\
					<input type=\"button\" value=\" 离 开 \" onclick=\"javascript:$('.dialogbackgroup').CloseDialog();\" class=\"button\" title=\"离开\"/>\
				</div>";
			},
	getAlertDialogHTML : function(){
		return "<div class=\"dialogmsg\" >\
					<img src=\"img/warning.gif\"></img>&nbsp;&nbsp;<label class=\"msgconter\"></label>\
				</div>\
				<div class=\"dialogaction\">\
					<input type=\"button\" value=\" 关 闭 \" onclick=\"javascript:$('.dialogbackgroup').CloseDialog();\" class=\"button\" title=\"关闭\"/>&nbsp;&nbsp;\
				</div>";
	}
	
});



 var Class = {   
      create:   function()   {   
          return   function()   {   
              this.initialize.apply(this, arguments);   
          }   
      }   
  }  
var panto={};
panto.Map=Class.create();
panto.Map.prototype={
 	initialize:function(){
        this.m=new Array();
    },
	put:function(k,v){
        var newEntry=new panto.MapEntry(k,v);
        for(var i=0;i<this.m.length;i++){
            var entry=this.m[i];
            if(entry.keyEquals(k)){
                return;
            }
        }
        this.m.push(newEntry);        
    },
	get:function(k){
        for(var i=0;i<this.m.length;i++){
            var entry=this.m[i];
            if(entry.keyEquals(k)){
                return entry.value;
            }
        }
        return null;
    },
	 remove:function(k){
        var entryPoped;
        for(var i=0;i<this.m.length;i++){
            entryPoped=this.m.pop();
            if(entryPoped.keyEquals(k)){ [Page]
                break;
            }else{
                this.m.unshift(entryPoped);
            }
        }
    }
    ,
    getSize:function(){
        return this.m.length;
    },
    getKeys:function(){
        var keys=new Array();
        for(var i=0;i<this.m.length;i++){
            keys.push(this.m[i].key);
        }
        return keys;
    },
    getValues:function(){
        var values=new Array();
        for(var i=0;i<this.m.length;i++){
            values.push(this.m[i].value);
        }
        return values;
    },
    isEmpty:function(){
        return (this.m==null||this.m.length<=0);
    },
    containsKey:function(k){
        for(var i=0;i<this.m.length;i++){
            if(this.m[i].keyEquals(k)) 
            
                return true;
        }
        return false;
    },
    putAll:function(map){ 
     if(map==null||typeof map!="object"){
            throw new Error("the object to be put should be a valid object");
        }
        for(var i=0;i<map.getSize();i++){
            this.put(map.m[i].key,map.m[i].value);
        }
    }
 };
 panto.MapEntry=function(k,v){
    this.key=k;
    this.value=v;
    this.keyEquals=function(key2){
        if(this.key==key2){
            return true;
        }else{
            return false;
        }
    }
}
var map=new panto.Map();


