var CallbackObj = null;
var key = 0;
/*
 * 参数DIV-返回数据展示的DIV 参数URL-请求的地址 与面板有关联的面板
 */
function Panel(div, url, panelKey) {
	this.key = key++;
	this.div = div;
	this.url = url;
	this.SuccessCallBack = null;
	this.panelKey = panelKey;
	if (DomPanlen.get(this.key) == null) {
		DomPanlen.add(this)
	}
	;
	this.content = null;
	this.isHiddenLoad = false;

	if (typeof Panel.initialized == "undefined") {

		// 清空面板
		Panel.prototype.reset = function() {
			$("#" + this.div).attr("innerHTML", "");
		};

		// 刷新关联的面板
		Panel.prototype.refresh = function(number,callbreak) {
			if (DomPanlen.get(this.panelKey) != null) {
				DomPanlen.get(this.panelKey).refreshMy(number,callbreak)
			};
		}

		Panel.prototype.refreshMy = function(number,callbreak) {
			hideLoadData(this,null,false);
			this.showDiv(number,callbreak)
		}

		Panel.prototype.ajaxForm = function(form) {
			var ajaxPanel = this;
			form.ajaxForm( function(msg) {
				hideLoadData(ajaxPanel,msg,true);
			});
		}

		Panel.prototype.formSubmit = function(form) {
			if (this.isHiddenLoad == false) {
				form.submit();
			} else {
				this.show();
			}
		}

		// 已当前数据载入面板
		Panel.prototype.reLoad = function(data) {
			$("#" + this.div).attr("innerHTML", "");
			$("#" + this.div).empty().append(data);
			hideLoadData(this,data,true);
		}

		Panel.prototype.hideLoad = function(id, showCallBreak) {
			var temp_url = this.url;
			if (id != null) {
				temp_url = this.url + "&id=" + id;
			}
			var div = this.div;
			var ajaxPanel = this;
			$.ajax( {
				type :"get",
				url :temp_url + "&panel=" + this.key,
				cache :false,
				error : function() {
				},
			success : function(msg) {
				hideLoadData(ajaxPanel,msg,true);
				if (showCallBreak != null) {
					showCallBreak();
				}
			}
			});
		}

		Panel.prototype.show = function(id) {
			invokeBefore(this.div);
			var temp_url = this.url;
			var ajaxPanel = this;
			if (this.isHiddenLoad) {
				$("#" + this.div).attr("innerHTML", "")
				$("#" + this.div).append(this.content);
				remove();
			} else {
				if (id != null) {
					temp_url = this.url + "&id=" + id;
				}
				this.loadPage(this.div, temp_url + "&panel=" + this.key,
						function(msg) {
							hideLoadData(ajaxPanel,msg,true);
						});
			}
		}
		
		Panel.prototype.showMin = function() {
			invokeBeforeMin(this.div);
			this.loadPage(this.div, this.url);
		}
		
		Panel.prototype.showDiv = function(id, callback,isHide) {
			invokeBefore(this.div);
			var temp_url = this.url;
			if(isHide==null){isHide=true;}
			if (isHide&&this.isHiddenLoad) {
				$("#" + this.div).attr("innerHTML", "")
				$("#" + this.div).append(this.content);
				remove();
			} else {
				if (id != null) {
					temp_url = this.url + "&id=" + id;
				}
				this.loadPage(this.div, temp_url + "&panel=" + this.key,
						callback);
			}
		}
		
		// 载入面板
		Panel.prototype.loadPage = function(div, url, showCallBreak) {
			var ajaxPanel = this;
			$.ajax( {
				type :"get",
				url :url,
				cache :false,
				error : function() {
//					remove();
			},
				success : function(msg) {
					$("#" + div).attr("innerHTML", "");
					$("#" + div).append(msg);
					remove();
					hideLoadData(ajaxPanel,msg,true)
					if (showCallBreak != null) {
						showCallBreak();
					}
				}
			});
		}
		
		Panel.initialized = true;
		
		function getJson() {

		}
	}
}

function showData(url,callback) {
	$.ajax( {
		type :"get",
		url :url,
		cache :false,
		error : function(xhr,status,err) {
			remove();
			alert('出现错误【' + url + '】');
			alert(err);
	},
	success : function(msg) {
			callback(msg);
		}
	});
}

var lodingDiv = new ShowLodingDiv();

//检查链接是否有效
/*
function checkStatus(url,callCheck)
{
	$.ajax({
	type :"get",
	url :url,
	cache :false,
	error : function() {
		alert("------------")
		 callCheck(false);
	},
	success : function(msg) {
		alert("------------")
		 callCheck(true);
		}
	});
}
*/

//移除效果
function remove() {
	lodingDiv.hide();
}

//全屏遮罩加载效果
function invokeBefore(){
	lodingDiv.show();
}

//启用缓存
function hideLoadData(ajaxPanel,data,isHiddenLoad){
	ajaxPanel.content = data;
	ajaxPanel.isHiddenLoad = isHiddenLoad;
}

//局部加载效果
function invokeBeforeMin(dataDiv){
	lodingDiv.showMin(dataDiv);
}

//Panel数组辅助类
function PanlenArray() {
	this.PanlenArray = new Array();

	PanlenArray.prototype.size = function() {
		return this.PanlenArray.length;
	};

	PanlenArray.prototype.add = function(item) {
		$.merge(this.PanlenArray, [ item ]);
	};

	PanlenArray.prototype.get = function(key) {
		var Return = null;
		$.each(this.PanlenArray, function(i, p) {
			if (p.key == key) {
				Return = p;
				return;
			}
		});
		return Return;
	};
}

var DomPanlen = new PanlenArray();

//表单Ajax设置
function setAjaxSubmit(form, submitCallBreak) {
	// 表单提交设置
	form.ajaxForm( function(msg) {
		// 提交完成后还原表单元素的值
			if(parseInt(msg)==-1){
				showDialog("4");
				return;
			}else if (submitCallBreak != null) {
				remove();
				submitCallBreak(msg);
			}
		})
}

function setAjaxSubmitForm(form, submitCallBreak) {
	// 表单提交设置
	form.ajaxForm( function(msg) {
		// 提交完成后还原表单元素的值
			if(parseInt(msg)==-1){
				showDialog("4");
				return;
			}else if (submitCallBreak != null) {
				submitCallBreak(msg);
			}
		})
}

//表单Ajax设置
function setAjaxSubmitDiv(form,div,submitCallBreak) {
	// 表单提交设置
	form.ajaxForm( function(msg) {
		remove();
		if(submitCallBreak!=null){
			submitCallBreak(msg);
		}
		div.attr("innerHTML", "")
		div.append(msg);
	})
}


//文本默认值设置
function inputText(txtObj, title,Before,After) {
	txtObj.attr("value", title);
	var isnewContent = false;
	var Class = "";
	txtObj.focus( function() {
		if (!isnewContent) {
			txtObj.attr("value", "");
			if(Before!=null){
				Before();
			}else{
				Class = txtObj.attr("class");
				txtObj.removeClass("textareastyle01");
				txtObj.addClass("textareastyle_zhidao");
			}
			isnewContent = true;
		}
	});

	txtObj.blur( function() {
		if (txtObj.val() == "") {
			if(After!=null){
				After();
			}else{
				txtObj.attr("class",Class);
			}
			txtObj.attr("value", title);
			isnewContent = false;
		}
	});
}

function showInputLength(obj,size,showObj){
	var value = obj.val().replace(/[^\x00-\xff]/gi,'xx').length;
	var min = obj.val().replace(/[^\x00-\xff]/gi,'xx').length
	var max = parseInt(size);
	var minStyle = min<max?'#000000':'#FF0000';
	var maxStyle = min<max?'#00CC00':'#FF0000';
	showObj.attr("innerHTML","<font color='"+minStyle+"'>"+min/2+"</font>/<font color='"+maxStyle+"'>"+max+"</font>");
}

//积分判断   txtObj 输入文本  提示信息  msgDiv  max 最大值文本
function inputNumber(txtObj, msgDiv, max) {
		txtObj.keypress( function(event) {
			if (!$.browser.mozilla) {
				if (event.keyCode && (event.keyCode < 48 || event.keyCode > 57)
						&& event.keyCode != 46) {
				event.preventDefault();
			}
		} else {
			if (event.charCode && (event.charCode < 48 || event.charCode > 57)
					&& event.keyCode != 46) {
				event.preventDefault();
			}
		}
	})
	
	var unm = 0 ;
	
	// 当文本框失去焦点的时候，检测输入的是否是数字
	txtObj.blur( function() {
		var input = $(this);
		var v = $.trim(input.val());
		// alert("输入值：" + v);
			// var reg = new RegExp("^[0-9]+(.[0-9]{2})?$", "g");
			var reg = new RegExp("^[0-9]", "g");
			if (!reg.test(v)) {
				msgDiv.attr("innerHTML", "只能输入数字");
				input.val("0");
				max.attr("innerHTML",parseInt($.trim(max.attr("innerHTML")))+parseInt($.trim(unm)));
				unm=0;
				return;
			}
			if (parseInt(v) > (parseInt(max.attr("innerHTML"))+unm)) {
				msgDiv.attr("innerHTML", "你的积分不足！");
				if((parseInt(max.attr("innerHTML"))+unm)<0){
					input.val("0");
				}
				input.val(parseInt(max.attr("innerHTML"))+unm);
				unm = input.val();
				max.attr("innerHTML","0");
				return;
			} else {
				msgDiv.attr("innerHTML", "");
				if(unm > parseInt(input.val())){
					max.attr("innerHTML",parseInt(max.attr("innerHTML"))+(unm-parseInt(input.val())));
				}else{
					max.attr("innerHTML",parseInt(max.attr("innerHTML"))-(parseInt(input.val())-unm));
				}
				unm = parseInt(input.val());
			}
		});
}

	/**
	 * 添加到收藏夹
	 * 
	 * @param {}
	 *            url 添加的路径
	 * @param {}
	 *            title 添加的标题
	 * @return {Boolean}
	 */
		function addBookmark(title) {
		var url = window.location.href;
		if (window.sidebar) {
			window.sidebar.addPanel(title, url, "");
		} else if (document.all) {
			var external = window.external;
			external.AddFavorite(url, title);
		} else if (window.opera && window.print) {
			return true;
		}
	}

	/**
	 * 设为首页
	 */
	function setHomePage() {
		var lan = window.location;
		if (document.all) {
			document.body.style.behavior = 'url(#default#homepage)';
			var body = document.body;
			body.setHomePage(lan.href);
		} else if (window.sidebar) {
			if (window.netscape) {
				try {
					netscape.security.PrivilegeManager
							.enablePrivilege("UniversalXPConnect");
				} catch (e) {
					alert("该操作被浏览器拒绝，如果想启用该功能，请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true");
				}
			}
			var prefs = Components.classes['@mozilla.org/preferences-service;1']
					.getService(Components.interfaces.nsIPrefBranch);
			prefs.setCharPref('browser.startup.homepage', lan.href);
		}
	}
	
//加载效果类
function ShowLodingDiv(){
		
	if (typeof ShowLodingDiv.initialized == "undefined") {
		
		ShowLodingDiv.prototype.show = function() {
			if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
				$("body","html").css({height: "100%", width: "100%"});
				//$("html").css("overflow","hidden");
				if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
					$("body").append("<iframe id='TB_HideSelect'  ></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
					$("#TB_overlay").click(tb_remove);
				}
			}else{//all others
				if(document.getElementById("TB_overlay") === null){
					$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
					
				}
			}
			$("html").css("overflow","hidden");
			if(tb_detectMacXFF()){
				$("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
			}else{
				$("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
			}
			$("body").append("<div id='TB_load'><img src='/image/loding.gif'/></div>");//add loader to the page
			$('#TB_load').show();
		};
		
		ShowLodingDiv.prototype.showMin = function(dataDiv) {
			$("#"+dataDiv).attr("innerHTML","");
			$("#"+dataDiv).append("<img src='/image/lodingmin.gif'/><span class='f-gren3-1224-b bj-p10-p20'>正在加载.....</span>");//add loader to the page
		};
		
		ShowLodingDiv.prototype.hide = function() {
		 	$("#TB_imageOff").unbind("click");
			$("#TB_closeWindowButton").unbind("click");
			$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
			$("#TB_load").remove();
			if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
				$("body","html").css({height: "auto", width: "auto"});
				$("html").css("overflow","");
			}
			document.onkeydown = "";
			document.onkeyup = "";
			$("html").css("overflow","");
			return false;
		};
		
		ShowLodingDiv.initialized = true;
	}

	
}

String.prototype.ulength = function () {   
    var c, b = 0, l = this.length;   
    while(l) {   
        c = this.charCodeAt(--l);   
        b += (c < 128) ? 1 : ((c < 2048) ? 2 : ((c < 65536) ? 3 : 4));   
    };   
    return b;   
}

String.prototype.cnStringToAscii = function() {//汉字转换ascii
    return escape(this).replace(/%u/g, '\&#x');
};

String.prototype.cnStringToUnicode = function() {//汉字转换unicode
    return escape(this).replace(/%/g, '\\');
};

String.charCodeToCnString = function(charCodes, regexp) {
    return charCodes.replace(regexp, function($0, $1, $2) {
        return String.fromCharCode(
            parseInt($2, 16)/*把16进制的字符串转换成int型数字*/
        );
    });
};

String.asciiToCnString = function(asciiChars) {//ascii转换成汉字
    return String.charCodeToCnString(asciiChars, /(\&#x)(\w{4})/gi);
};

String.unicodeToCnString = function(unicodeChars) {//unicode转换成汉字，高效的..

    return unicodeChars + '';//虽然它已经是String类型，但再这样转换成String类型，居然直接变汉字了。
    //unicodeChars.split('\\u')[0];split也可以变成汉字，可以用任意'非中文字符'来split，如'\\','safdasf'等等。
    //unicodeChars.split('').join('');//也是可以的，这样每个字都成为数组的一个元素，与上一句一样
    //return String.charCodeToCnString(unicodeChars, /(\&#x)(\w{4})/gi); 这个效率最差
}; 

function str2asc(strstr){
	return hex(chr(asc(strstr)));
}

function asc(str){
	return String.fromCharCode(str);
}

function hex(str){
	return str.toString(16);
}

function chr(str){
	return str.charCodeAt(0);
}

function UrlEncode(str)
{ 
    var ret=""; 
    var strSpecial="!\"#$%&()*+,/:;<=>?[]^`{|}~%"; var tt="";
    for(var i=0;i<str.length;i++)
    { 
        var chr = str.charAt(i); 
        var c=str2asc(chr); 
        tt += chr+":"+c+"n"; 
        if(parseInt("0x"+c) > 0x7f)
        { 
            ret+="%"+c.slice(0,2)+"%"+c.slice(-2); 
        }
        else
        { 
            if(chr==" ") 
                ret+="+"; 
            else if(strSpecial.indexOf(chr)!=-1) 
                ret+="%"+c.toString(16); 
            else 
                ret+=chr; 
        } 
    } 
    return ret; 
}

var sendMessageCellMethod = null;

function sendMessage(userId,content,isClose,callMethod){
	showIframe('','/MainServlet?go=JFDAILY_MSG_PG_MinMessagePanel',400,170,isClose);
	sendMessageCellMethod = callMethod;
}

function addTimeTask(userId,content,isClose,callMethod){
	showIframe('','/MainServlet?go=JFDAILY_TIMER_PG_New',400,170,isClose);
	sendMessageCellMethod = callMethod;
}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
