﻿var whoids__s = "whoids", whisod__s = "whisod", JTPYStr="皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄", FTPYStr="皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調叠諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩";
Function.empty = function(){};
//used frequently regular expressions
var CommonRegex = {};
CommonRegex.Email = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
CommonRegex.Mobile = /^(13[0-9]|15[0|3|6|8|9])\d{8}$/;
CommonRegex.DateTime = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;	
CommonRegex.Password = /^.{6,16}$/;	
CommonRegex.UserName = /^[\u4e00-\u9fa5\s|\w\s]{2,16}$/;	
CommonRegex.PositiveNum = /^\d+$/;	
CommonRegex.PostCode = /^[1-9]\d{5}(?!\d)$/;
CommonRegex.CheckCode = /^[0-9a-zA-Z]{5}$/;	
CommonRegex.KeyRegexExpression = /^([0-9A-Za-z]{16})$/;
jQuery.fn.extend({
    //extend html element attribute. {className: "****", disabled:true, value: "*****"}, {style: {background-color:}}
    extend: function(value){
        if (this.length < 1 && jQuery.type(value) == "object"){return null;}
        for (var i = 0; i < this.length; i++){
            elm = this[i];
	        for (var property in value) {
	            var val = value[property];
	            if (property.toLowerCase() == "style" && jQuery.type(val) == "object"){
	                for (var p in val){
	                    elm[property][p] = val[p];
	                }
	            }else{
	                elm[property] = val;
	            }
            }	    
        }
    },
    //get/set html element value(input->value, img->src, a->href, li, td et.)
    form: function(value){
        if (arguments.length > 0){
            value = arguments[0];
        }
        if (this.length < 1){return null;}
        var elm = this[0]; var $elm = jQuery(elm); var tp = jQuery.type(value);
        var val = tp === "string" ? decodeURIComponent(value) : value;	
	    if (elm.nodeType == 1) {
		    switch (elm.nodeName.toLowerCase()) {
			    case "input":
				    switch ($elm.attr("type").toLowerCase()) {
					    case "button":
					    case "reset":
					    case "submit":
					    case "text":
					    case "password":
					    case "hidden":
					        if (value){
					            if (tp == "string" || tp == "date" || tp == "number"){ $elm.val(val + "");}
					            else if(tp == "array"){$elm.val(val.join(","));}
					            else if(tp == "function"){$elm.val(val);}
						        else{$elm.extend(val);}
                            }
						    else {return $elm.val();}
						    break;
					    case "image":
						    if (value){
					            if (tp == "string" || tp == "date" || tp == "number"){ elm.src = val + "";}
					            else if(tp == "array"){elm.src = val.join("/");}
					            else if(tp == "function"){tp($elm);}
						        else{$elm.extend(val);}
						    }
						    else {return elm.src;}
						    break;
					    case "checkbox":
					    case "radio":
						    if (value){
						        if (tp == "boolean") {elm.checked = tp;}
						        else if(tp == "string" && (val.toLowerCase() == "true" || val.toLowerCase() == "false")){elm.checked = val.toBoolean();}
						        else if(tp == "string"){
						            for (var b = 0; b < this.length; b++){
						                if (this.eq(b).val() == value){
						                    this[b].checked = true;
						                }
						            }
						        }
						        else if(tp == "array" || tp == "function"){this.val(val);}
						        else{$elm.extend(val);}
						    }else{
                                var sVal = elm.value || "";
						        if (elm.checked) {
							        if (sVal && sVal == "on") {sVal = "true";}
						        } else {
							        if (sVal && sVal == "on") {sVal = "false";}
						        }	
						        return sVal;
						    }
						    break;
				    }
				    break;
			    case "textarea":
			        if (value){
			            if (tp == "string" || tp == "date" || tp == "number"){ $elm.val(val + "");}
			            else if(tp == "array"){$elm.val(val.join(","));}
			            else if(tp == "function"){$elm.val(val);}
				        else{$elm.extend(val);}			        
			        }
				    else {return $elm.val();}
				    break;			        
			    case "select":
				    if (value){
			            if (tp == "string" || tp == "date" || tp == "number"){ $elm.val(val + "");}
                        else if(tp == "array" || tp == "function"){this.val(val);}
				        else{$elm.extend(val);}						    
				    }
				    else {return $elm.val();}
				    break;
			    case "b":
			    case "ul":
			    case "li":
			    case "th":
			    case "tr":
			    case "td":		    						
			    case "span":
			    case "p":
			    case "div":
			        if (value){
		                if (tp == "string" || tp == "date" || tp == "number"){ $elm.html(val + "");}
		                else if(tp == "array"){$elm.html(val.join(","));}
		                else if(tp == "function"){$elm.html(val);}
			            else{$elm.extend(val);}			        
			        }
				    else {return $elm.html();}			    
				    break;
			    case "img":
			        if (value){
			            if (tp == "string" || tp == "date" || tp == "number"){ elm.src = val + "";}
			            else if(tp == "array"){elm.src = val.join("/");}
			            else if(tp == "function"){tp($elm);}
				        else{$elm.extend(val);}			        
			        }
				    else {return elm.src;}
				    break;
			    case "a":
			        if (value){
			            if (tp == "string" || tp == "date" || tp == "number"){ elm.href = val + "";}
			            else if(tp == "array"){elm.href = val.join("/");}
			            else if(tp == "function"){tp($elm);}
				        else{$elm.extend(val);}
			        }
				    else {return elm.href;}			    
				    break;						
			    default:
			        if (value){
			            if (tp == "string" || tp == "date" || tp == "number"){ $elm.val(val + "");}
			            else if(tp == "array" || tp == "function"){$elm.val(val);}
				        else{$elm.extend(val);}
                    }
				    else {return $elm.val();}
				    break;		    
		    }
	    }
    },
    //return the container html elements value, return: {"mediatype": 2, "headerimage": '/images/all.png'}
    //data: {"#mediatype": 2, "#headerimage": '/images/all.png'}
    forms: function(data){
        var obj = new Object();
        for (var i = 0; i < this.length; i++){
            var $elm = this.eq(i); var key = $elm[0].id;
            if (key){
                obj[key] = $elm.form();
            }
        }
        if (data){
            for (prop in data){
	            jQuery(prop).form(data[prop]);
            }
        }
    },
    //return the container forms value, return: [{}, {}, {}]
    inputs: function(){
	    var hContainer = null;
	    if (this.length > 0) {
		    hContainer = this[0];
	    }
	    if (!hContainer) return [];
        var result = new Array();
        for(var i=0; i< hContainer.childNodes.length; i++) {
            var elm = hContainer.childNodes[i]; var $elm = jQuery(elm); var sName = ""; var sVal = "";
            if(elm.nodeType == 1) {
                switch(elm.nodeName.toLowerCase()) {
			        case "input":
				        switch (elm.type.toLowerCase()) {
					        case "text":
					        case "password":
					        case "hidden":
                                sName = elm.name; sVal = $elm.val();;
						        if (sName) {result.push({name: sName, value: encodeURIComponent(sVal)});}
						        break;
					        case "checkbox":
					        case "radio":
                                sName = elm.name; sVal = $elm.val();
                                if (sName) {
						            if (elm.checked) {
							            if (sVal && sVal == "on") {sVal = "true";}
						            } else {
							            if (sVal && sVal == "on") {sVal = "false";}
						            }
						            if (sVal == "true" || sVal == "false" || elm.checked){
                                        result.push({name: sName, value: encodeURIComponent(sVal)});
                                    }
                                }
						        break;
				        }
				        break;
			        case "textarea":
                        sName = elm.name; sVal = $elm.val();
				        if (sName) {
				            result.push({name: sName, value: encodeURIComponent(sVal)});
                        }
				        break;
			        case "select":
                        sName = elm.name; sVal = $elm.val();
				        if (sName) {
				            result.push({name: sName, value: encodeURIComponent(sVal)});
				            var opt = elm.options[elm.selectedIndex]; var name_text = sName + "_text";
				            result.push({name: name_text, value: encodeURIComponent(opt.text)});
				        }
				        break;
                    default:
                        result = result.concat(jQuery(elm).inputs());				    
                }
	        }
	    }
	    return result;   
    },
    //get the selected radio value
    rval: function(){
        if (this.length > 0){
            for (var i = 0; i < this.length; i++){
                if(this.eq(i).attr("checked")==true){
                    return this.eq(i).val();
                }
            }
        }
        return null;
    },
    //get the selected checkbox values
    cval: function(){
        if (this.length > 0){
            var arr = [];
            for (var i = 0; i < this.length; i++){
                if(this.eq(i).attr("checked")==true){
                    arr.push(this.eq(i).val());
                }
            }
            return arr.length > 0 ? arr : null;
        }
        return null;
    },
    //data: {"#mediatype": 2, "#headerimage": '/images/all.png'}
    updateByFor: function(data){
        if (!data) {return;}
        if (this.length == 0){return;}
        var attrVal = this[0].getAttribute("for");
        if (attrVal){
            if(data[attrVal]){
                this.form(data[attrVal]);
            }
        }
        for (var i = 0; i < this.children().length; i++){
            this.children().eq(i).updateByFor(data);
        }
    },
    //clear the html elements value in container, return forms array and set element value by data. 
    //return: {"mediatype": 2, "headerimage": '/images/all.png'}
    //data: {"#mediatype": 2, "#headerimage": '/images/all.png'}
    clear: function(data){
	    var hContainer = null;
	    if (this.length > 0) {
		    hContainer = this[0];
	    }	    
	    if (!hContainer) return [];        
        var result = this.forms();
        for(var i=0; i< hContainer.childNodes.length; i++) {
            var elm = hContainer.childNodes[i];
            if(elm.nodeType == 1) {
                switch(elm.nodeName.toLowerCase()) {
			        case "input":
				        switch (elm.type.toLowerCase()) {
					        case "text":
					        case "password":
					        case "hidden":
					            elm.value = "";
						        break;
					        case "checkbox":
					        case "radio":
                                elm.checked = false;
						        break;
				        }
				        break;
			        case "textarea":
			            elm.value = "";
                        break;
			        case "select":
                        elm.selectedIndex = 0;
				        break;
                    default:
                        if (!result) result = [];
                        result = result.concat(jQuery(elm).clear());
                }
	        }
	    }
	    if (data){
            this.forms(data);
	    }
	    return result;        
    },
    //set the html element to middle of the window
    middle: function(){
	    if (this.length > 0) {    
            var bw = (($(window).width() - this.outerWidth())/2); var bh = (($(window).height() - this.outerHeight())/2);
            bh = bh < 10 ? 10 : bh; bh = bh + $(document).scrollTop();
            this.css({position: "absolute", top: bh + "px", left: bw + "px"});
	    }
	    return this;
    },
    //judge the html element is in the parent container 
    isIn: function(parent){
        return this.parent(jQuery(parent))
    },
    //judge the html element is in the parent container who has xylker attribute
    isInXylker: function(){
        var attName = "*";
        if (arguments.length > 0){
            attName = arguments[0];
        }
	    var attr = this.attr("xylker");
	    if (attr && (attName == "*" || attr == attName)) {
		    return true;
	    } else if (this.parent().length > 0 && this.parent()[0].nodeName.toLowerCase() != "html") {
		    return this.parent().isInXylker(attName);
	    } else {
		    return false;
	    }
    },
    //事件
    unbinds: function(){
	    var hContainer = null;
	    if (this.length > 0) {
		    hContainer = this[0];
	    }	    
	    if (!hContainer) return;        
        for(var i=0; i< hContainer.childNodes.length; i++) {
            var elm = hContainer.childNodes[i];
            if(elm.nodeType == 1) {
                var $elm = $(elm);
                switch(elm.nodeName.toLowerCase()) {
			        case "input":
				        switch (elm.type.toLowerCase()) {
					        case "text":
					        case "password":
					        case "hidden":
					        case "checkbox":
					        case "radio":
					            $elm.unbind();
						        break;
                            default:
                                $elm.unbinds();						        
				        }
				        break;
			        case "textarea":
			        case "select":
			        case "label":
                        $elm.unbind();
                        break;			        
                    default:
                        $elm.unbinds();
                }
	        }
	    }    
    },
	/* 验证相关*/
	isInt: function(){
	    var str = this.form();
		return (str && str.toInt() != "NaN") ? true : false;
	},
	isFloat: function(){
	    var str = this.form();
		return (str && str.toFloat() != "NaN") ? true : false;
	},	
	isBoolean: function(){
	    var str = this.form();
		return (str === "true" || str === "false") ? true : false;
	},
	isKey: function(){
	    var str = this.form();
		if (str && CommonRegex.KeyRegexExpression.test(str)) {
			return true;
		}
		return false;
	},
	isEmail: function(){
	    var str = this.form();
		if (str && CommonRegex.Email.test(str)) {
			return true;
		}
		return false;
	},
    isMobile: function(){
	    var str = this.form();
		if (str && CommonRegex.Mobile.test(str)) {
			return true;
		}
		return false;
	},
	isUserName: function(){
	    var str = this.form();
		if (str && CommonRegex.UserName.test(str)) {
			return true;
		}
		return false;
	},
	isPassword: function(){
	    var str = this.form();
		if (str && CommonRegex.Password.test(str)) {
			return true;
		}
		return false;
	},	
	isDateTime: function(){
	    var str = this.form();
		if (str && CommonRegex.DateTime.test(str)) {
			return true;
		}
		return false;
	},
    isURL: function(){
	    var str = this.form();
        var re = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
        return re.test(str);
    },		
	isCheckCode: function(){
	    var str = this.form();
		if (str && CommonRegex.CheckCode.test(str)) {
			return true;
		}
		return false;
	},	
	isEqual: function(selector){
	    var str = this.form(); var str1 = null;
	    if (jQuery.type(selector) !== "string"){
            str1 = jQuery(selector).form();
	    }
		if (str == str1) {
			return true;
		}
        return false;
	},	
	isNullOrEmpty: function(){
	    var str = this.form();
		if (str && str.length > 0) {
			return false;
		}
		return true;
	},	
	isBetweenLen: function(minlen, maxlen){
	    var str = this.form();
	    if (str){
		    var l = str.len();
		    if (l >= minlen & l <= maxlen) {
			    return true;
		    }
		}		
        return false;
	},	
	isBetweenLength: function(minlen, maxlen){
	    var str = this.form();
		if (str){
		    var l = str.length;
		    if (l >= minlen & l <= maxlen) {
			    return true;
		    }
		}	
        return false;
	},
	jf: function(){
        this._jt_ft(jQuery.traditional)
	},
	fj: function(){
        this._jt_ft(jQuery.simplified)
	},
	_jt_ft: function(fun){
	    var hContainer = null;
	    if (this.length > 0) {
		    hContainer = this[0];
	    }
	    if (!hContainer) return [];
        for(var i=0; i< hContainer.childNodes.length; i++) {
            var elm = hContainer.childNodes[i]; var $elm = $(elm);
            if(elm.nodeType == 1) {
                switch(elm.nodeName.toLowerCase()) {
			        case "input":
				        switch (elm.type.toLowerCase()) {
					        case "text":
					        case "hidden":
					        case "checkbox":
					        case "radio":
					            elm.value = fun(elm.value);
						        break;
				        }
				        break;
			        case "textarea":
                        elm.value = fun(elm.value);
                        break;
                    case "label":
                        if (elm.hasAttribute("for")){$elm.html(fun($elm.html()));}
                        break;
			        case "select":
	                    for (var i = 0; i < elm.length; i++){
	                        var opt = elm.options[i];
	                        if (opt.value){
	                            opt.value = fun(opt.value);
	                        }
	                        if (opt.text){opt.text = fun(opt.text);}	                        
	                    }
	                case "span":
	                    //不需要解析fckeditor的下属控件
	                    if (elm.id && elm.id.indexOf("cke_") == 0){
                            break;
	                    }else{
                            $elm._jt_ft(fun);
                            break;
	                    }
                    default:
                        $elm._jt_ft(fun);
                }
	        }
	    }
	    if (typeof(setDescription) === "function"){
	        setDescription();
	    }	
	},
    iFadeSlide: function(iSet){
	    /* iSet可选参数说明:
	     * iSet.field==>幻灯区域内的图片集
	     * iSet.ico==>按钮钩子
	     * iSet.high==>按钮高亮样式
	     * iSet.interval==>图片切换时间
	     * iSet.leaveTime==>不触发鼠标划入事件的最大时间值
	     * iSet.fadeInTime==>淡入时间
	     * iSet.fadeOutTime==>淡出时间
	     * iSet.enabledNumbericIdentity==>启用转换按钮的id属性
	     * iSet.displayFun==>切换时执行此函数
	     * 调用方式$(document).iFadeSlide({field:'...',ico:'...',...})*/
        iSet = jQuery.extend({high:'high',interval:3000,leaveTime:150,fadeOutTime:400,fadeInTime:400,enabledNumbericIdentity:false, displayFun: function(){}},iSet);
        var imgField = jQuery(iSet.field || '#slide>img');
        var icoField = jQuery(iSet.ico || '#ico');
	    var curIndex = 0;
        var slideInterval = iSet.interval || 3000;
        var hoverTime = iSet.leaveTime || 150;
        var fadeOutTime = iSet.fadeOutTime || 400;
        var fadeInTime = iSet.fadeInTime || 400;
        var icos=null, fastHoverFun = null, autoSlideFun = null, hasIcoHighCls = null, changeFun = null,max=null;;
        var icoHtml = '<ul>';
	    max=imgField.size();
	    //按图片传入对应的按钮
        imgField.each(function(i){
            var idStr = iSet.enabledNumbericIdentity === true ? ' id="ifli' + (i + 1) + '">' : '>';
            icoHtml += '<li' + idStr + (i + 1) + '</li>';
        });
        icoHtml += '</ul>';
        icoField.append(icoHtml);
	    //淡入淡出函数
        changeFun = function(n){
            imgField.filter(':visible').fadeOut(fadeOutTime);
            var cur = imgField.eq(n);
            cur.fadeIn(fadeInTime, function(){
                var a = $(this); var b = icos.eq(n);
                b.addClass(iSet.high).siblings().removeClass(iSet.high);
                iSet.displayFun(b, a, icos, imgField);
            });
        }
        icos = icoField.find('ul>li');
	    //为第一个按键初始化高亮
        icos.first().addClass(iSet.high);
	    //按钮鼠标划入划出事件
        icos.hover(function(){
            clearInterval(autoSlideFun);
            curIndex = icos.index(this);
            hasIcoHighName = jQuery(this).hasClass(iSet.high);
		    //setTimeout避免用户快速(无意识性划过)划过时触发事件
            fastHoverFun = setTimeout(function(){
			    //鼠标划入当前图片按钮时不闪烁
                if (!hasIcoHighName) {
                    changeFun(curIndex);
                }
            }, hoverTime);
        }, function(){
            clearTimeout(fastHoverFun);
		    //自动切换
            autoSlideFun = setInterval(function(){
                curIndex++;
                changeFun(curIndex);
                if (curIndex ==max ) {
				    changeFun(0);
                    curIndex = 0;
                }
            }, slideInterval)
        }).eq(0).trigger('mouseleave');
        //当鼠标划入图片区域时停止切换
        imgField.hover(function(){
            curIndex = imgField.index(this);
            clearInterval(autoSlideFun);
        }, function(){
            icos.eq(curIndex).trigger('mouseleave');
        });
    }    
});
jQuery.extend({
    dom: function(idOrElm){
        return "string" == typeof idOrElm ? document.getElementById(idOrElm) : idOrElm;
    },
    //create document element
    create: function(type){
	    return document.createElement(type);
    },
    //create input element(type=hidden)
    hidden: function(idOrName, val){
        var hide = jQuery.dom(idOrName); if (hide) {hide.parentNode.removeChild(hide);} 
        hide= jQuery.create("input"); hide.type = "hidden"; hide.id = hide.name = idOrName; hide.value = val;
        return hide;
    },
    //create div element
    div: function(idOrName, html, className){
        var dv = jQuery.dom(idOrName); if (dv) {dv.parentNode.removeChild(dv);} 
        dv= jQuery.create("div"); dv.id = idOrName; dv.innerHTML = html;
        return dv;
    },
    //invoke function with object as this pointer
    bindObject: function(object, fun){
        var slice = Array.prototype.slice;
        var args = slice.call(arguments, 2);
        return function() {
            return fun.apply(object, args.concat(slice.call(arguments)));
        }
    },
    //invoke function with object as this pointer and event
    bindAsEventListener: function(object, fun){
        var slice = Array.prototype.slice;
        var args = slice.call(arguments, 2);
        return function(event) {
	        return fun.apply(object, [(event || window.event)].concat(args));
        }
    },
    //rewrite window.timeout function, eg.timeout(fun, timeout, arg1, arg2, ...)
    timeout: function(func, timeout){
        var args = Array.prototype.slice.call(arguments, 2);
        var _fun = function(){
	        func.apply(null, args);
        };
        return window.setTimeout(_fun, timeout);
    },
    //rewrite window.interval function, eg.interval(fun, timeout, arg1, arg2, ...)
    interval: function(func, timeout){
        var args = Array.prototype.slice.call(arguments, 2);
        var _fun = function(){
	        callback.apply(null, args);
        };
        return window.setInterval(_fun, timeout);
    },
    //build url with objects. eg.buildUrl(url, {name1: value1, ...})
    buildUrl: function(url, params){
	    var pairs = new Array();
	    var result = url;
	    if (params) {
		    for (var key in params) {
			    pairs.push(key + "=" + encodeURIComponent(params[key].toString()));
		    }
		    result += "?" + pairs.join("&");
	    }
	    return result;
    },
    //redirect to the url
    redirect: function(url) {
        if (arguments.length > 1) {
            url = jQuery.buildUrl(url, arguments[1]);
        }
        if (jQuery.browser.version > 0) {
            var tempa = jQuery.create("a"); tempa.href = url;  
            jQuery("body").append(tempa); tempa.click();  
        } else {
            window.location.href = url;  
        }
    },
    //open a new window
    newWin: function(url){
        window.open(url, "newwin");
    },
    //get current time
    time: function(){
	    return new Date().getTime();
    },
    //get object type
    type: function(obj){
	    if (typeof(obj) == "undefined") {
		    return "null";
	    }
	    if (obj == null) {
		    return "null";
	    }			
	    if (obj.htmlElement) {
		    return 'element';
	    }
	    var type = typeof obj;
	    if (type == 'object' && obj.nodeName) {
		    switch (obj.nodeType) {
			    case 1:
				    return 'element';
			    case 3:
				    return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
		    }
	    }
	    if (type == 'object' || type == 'function') {
		    switch (obj.constructor) {
			    case Array:
				    return 'array';
			    case RegExp:
				    return 'regexp';
		    }
		    if (typeof obj.length == 'number') {
			    if (obj.item) {
				    return 'collection';
			    }
			    if (obj.callee) {
				    return 'arguments';
			    }
		    }
	    }
	    return type;
    },
    //generate random password string
    generatePassword: function(a){
        a = parseInt(a); if (!a) a = 6;
        var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var b = ""; var d = c.length; var e;
        for (i = 0; i < a; i++) { e = c.charAt(Math.floor(Math.random() * d)); b += e; }
        return b
    },
    //set window variable value
    varible: function(){
        if (arguments.length > 1) {
            window[arguments[0].replace(/\$/g, "11_11")] = arguments[1];
	    } else {
            return window[arguments[0].replace(/\$/g, "11_11")];
	    }
    },
    //compress image to s size with scale
    image: function(im, s){
        var c = 3/4; if (arguments.length > 2){c=arguments[2];}
        var MaxW=s; var MaxH=MaxW*c;var o=new Image(); o.src=im.src;var w=o.width;var h=o.height;var t;if (w>MaxW){t=MaxW;}else{t=w;}
        if (im.src && im.src.indexOf("pixel.gif") < 0 && w < 2) { o = null; setTimeout(function(){jQuery.image(im, s, c);}, 50); }
        if ((h*t/w)>MaxH){im.height=MaxH;im.width=MaxH/h*w;}else{im.width=t;im.height=t/w*h;}
    },
    forms: function(data){
        $().forms(data);
    },
    traditional: function(cc){
	    var str=""; var ss=JTPYStr; var tt=FTPYStr;
	    for(var i=0; i < cc.length; i++){
		    if(cc.charCodeAt(i) > 10000 && ss.indexOf(cc.charAt(i)) != -1)str += tt.charAt(ss.indexOf(cc.charAt(i)));
  		    else str += cc.charAt(i);
	    }
	    return str;
    },
    simplified: function(cc){
	    var str=""; var ss=JTPYStr; var tt=FTPYStr;
	    for(var i=0; i < cc.length; i++){
		    if(cc.charCodeAt(i) > 10000 && tt.indexOf(cc.charAt(i)) != -1)str += ss.charAt(tt.indexOf(cc.charAt(i)));
  		    else str += cc.charAt(i);
	    }
	    return str;
    },
    favorite: function(title){
        var url = window.location.protocol + "//" + window.location.host + "/";
        if (document.all) { 
            window.external.addFavorite(url, title); 
        } 
        else if (window.sidebar) { 
            window.sidebar.addPanel(title, url, ""); 
        } 
        return false;    
    },
    home: function(obj,vrl){
        try{
            obj.style.behavior='url(#default#homepage)';obj.setHomePage(vrl);
        } catch(e) {
            if(window.netscape) {
                try {
                    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                }
                catch(e) {
                    alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");
                }
                var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
                prefs.setCharPref('browser.startup.homepage', vrl);
            }
        }
    }
});
$.fn.numeral = function(){
    $(this).css("ime-mode", "disabled");
    this.bind("keypress", function(event){
        if (event.charCode == 47) {return false;}
        if (event.charCode == 46) {
            if (this.value.indexOf(".") != -1) {
                return false;
            }
        } else {
            return (event.charCode >= 46 && event.charCode <= 57) || (event.charCode == 0);
        }
    });
    
    this.bind("blur", function(event){
        if (this.value.lastIndexOf(".") == (this.value.length - 1)) {
            this.value = this.value.substr(0, this.value.length - 1);
        } else if (isNaN(this.value)) {
            this.value = "";
        }
    });
    this.bind("paste", function(event){
        var s = clipboardData.getData('text');
        if (!/\D/.test(s)) 
            ;
        value = s.replace(/^0*/, '');
        return false;
    });
    this.bind("dragenter", function(event){
        return false;
    });
    this.bind("keyup", function(event){
        //if (/(^0+)/.test(this.value)) this.value = this.value.replace(/^0*/, '');
    });
};
/* 
    set client html value, window variable, execute js function
    var obj = {"#mediatype": 2, "obje": {"name": "Borllor Lee", "age": 23}, "array": [1, 2, 4], "fun": "$box('aa')", "#headerimage": "/images/all.png"};
*/
function $so(obj){
	try {
		for (var o in obj) {
			var $elm = $(o);
			var val = obj[o];
			if ($elm.length > 0) {
                $elm.form(val);
			} else {
			    var val = $.type(obj[o]) == "string" ? decodeURIComponent(obj[o]) : obj[o];
			    if (o == "___________fun") {
			        (window.execScript) ? window.execScript(val) : window.setTimeout(val, 0);
			    } else if (o == "userIsLogin") {
                    if ($.type(val) == "string") {val = val.toBoolean();}
					$.varible(o, val);
				} else if (val) {
					$.varible(o, val);
				}
			}
		}
	} catch (ex) {}
};
function ___doPostBack(eventTarget, eventArgument){
	if (typeof(theForm) == "undefined" || !theForm) {
		theForm = $.dom("aspnetForm");
	}
	if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
		var ta = $.dom("__EVENTTARGET");
		var ar = $.dom("__EVENTARGUMENT");
		if (!ta) {
			ta = $.hidden("__EVENTTARGET", "");
			theForm.appendChild(ta);
		}
		if (!ar) {
			ar = $.hidden("__EVENTARGUMENT", "");
			theForm.appendChild(ar);
		}
		ta.value = (eventTarget) ? eventTarget : "";
		ar.value = (eventArgument) ? eventArgument : "";
		
		theForm.submit();
	}
}
function $postback(){
    var cid = null; var data = null; var evt = null; var adi = null;
    cid = arguments[0] ? arguments[0] : "";
    data = arguments[1] ? arguments[1] : null;
    adi = arguments[2] ? arguments[2] : null;
    evt = arguments[3] ? arguments[3] : null;
    if (cid) {cid = cid.replace(/\_/g, "$");}
    if (evt) {
	    if (!data) {data = new Object();}
	    $.extend(data, {target: evt.target.id ? evt.target.id.replace(/\_/g, "$") : cid});
    }
    MyFCKObject.UpdateEditorFormValue();
    var str = "";
    if (data){if ($.type(data) == "string"){str = data;}else{str = $.param(data);}}
    var wwh = $.varible(whoids__s);
    var netForm = jQuery("#aspnetForm");
    var hasForm = netForm.length > 0;
    if (typeof(wwh) != "undefined" && wwh) {
        if (hasForm){netForm.append($.hidden(whoids__s, wwh));}
	    else { document.body.appendChild($.hidden(whoids__s, wwh)); }
    }
    var wst = $.varible(whisod__s);
    if (typeof(wst) != "undefined" && wst) {
        if (hasForm){netForm.append($.hidden(whisod__s, wst));}
	    else { document.body.appendChild($.hidden(whisod__s, wst)); }
    }
    if (typeof(window.__doPostBack) === "function") {
	    window.__doPostBack(cid, str, adi);
    } else {
	    ___doPostBack(cid, str);
    }
}
/* 
    post current form data to server and will refresh all page
    arguments[0] -- 传给服务器的数据
    arguments[1] -- 要更新的控件集合，all-表示更新整个usercontrol
    arguments[1] -- 发起动作的按钮事件
*/
function $post(){
	var data = null; var evt = null; var adi = null;	
	data = arguments[0] ? arguments[0] : null;
	adi = arguments[1] ? arguments[1] : "all";
	evt = arguments[2] ? arguments[2] : null;
    $postback("", data, adi, evt);
}
/* 
    post the current dynamic user control data and will refresh current dynamic user control
    arguments[0] -- 引发事件的控件ID
    arguments[1] -- 传给服务器的数据
    arguments[2] -- 要更新的控件集合，all-表示更新整个usercontrol
    arguments[3] -- 发起动作的按钮事件
*/
function $p(){
	var cid = null; var data = null; var evt = null; var adi = null;
	cid = arguments[0] ? arguments[0] : "";
	data = arguments[1] ? arguments[1] : null;
	adi = arguments[2] ? arguments[2] : "all";
	evt = arguments[3] ? arguments[3] : null;
	$postback(cid, data, adi, evt);
}
/* 
    post back data to server use ajax, and update some areas
    arguments[0] -- 引发事件的控件ID
    arguments[1] -- 传给服务器的数据
    arguments[2] -- 要更新的控件集合，[]-表示只执行请求，不更新控件
    arguments[3] -- 发起动作的按钮事件
*/
function $pp(){
    var cid = null; var data = null; var evt = null; var adi = null;
    cid = arguments[0] ? arguments[0] : "";
    data = arguments[1] ? arguments[1] : null;
    adi = arguments[2] ? arguments[2] : [];
    evt = arguments[3] ? arguments[3] : null;
    $postback(cid, data, adi, evt);
}
//when you update datas, publish new content
function $publish(){
    $.get("commonhandler.ashx", {t:"publish"}, function(data){$box(data);});
}
//when you update datas, publish new content
function $region(select, parId){
    var areaId = select.value;
    if (areaId == "-1"){areaId = parId;}
    $.get("commonhandler.ashx?" + $.time(), {t:"region", v:areaId}, function(data){$("#region_panel_376").form(data);});
}
//get new validate code from server
function ValidateCodePic(ctrId){
	var ctr = $.dom(ctrId);
	if (ctr != null) {
		ctr.src = "createvalidatecode.ashx?ts=" + $.time();
	}
};
function setLanguage(name, val, url){
    if(arguments.length <= 2) {
        url = window.location.href;
    }
    removeCookie(name); 
    addCookie(name, val, 365);
    $.redirect(url);
}
function getGMTDateTime(gmt){
    var offset = gmt;
    var d = new Date();
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    var nd = new Date(utc + (3600000 * offset));
    return nd;
}
/* operate cookie functions */
function readCookie(name){
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') 
			c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) 
			return c.substring(nameEQ.length, c.length);
	}
	return null;
}
function readIntCookie(name){
	var val = readCookie(name);
	if (val) {
		return parseInt(val, 10);
	} else {
		return 0;
	}
}
function addCookie(name, value, days){
	var cookie = "";
	var domain = "";
	var path = "/";
	cookie += name + "=" + value + ";";
	cookie += "path=" + path + ";";
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		cookie += "expires=" + date.toGMTString() + ";";
	}
	document.cookie = cookie;
}
function removeCookie(name){
	addCookie(name, "", -1);
}
/* end operate cookie functions */

//popup a message information dialog
function $box(){
	var options = {
		alertCon: "",
		width: 340,
		height: 80,
		title: "信息提示",
		isReloadOnClose: false,
		contentType: 4,
		overlay: 10,
		parameter: null
	};
	var args = [];
	for (var i = 0; i < arguments.length; i++) {
	    if (i == 0) {options["alertCon"] = arguments[i];}
	    if (i == 1) {options["width"] = arguments[i].toInt();}
	    if (i == 2) {options["height"] = arguments[i].toInt();}
	    if (i == 3) {options["title"] = arguments[i];}
	    if (i == 4) {options["callBack"] = arguments[i];}
	    if (i >= 5) {args.push(arguments[i]);}
	}
    if (arguments.length >= 5){
        options["parameter"] = args;
    }
	var p = new Popup({id: "sb"});
	p.setContents(options);
	p.build();
	p.show();
	return p;
};
//show a confirm dialog, yes->do, no->cancel
function $confirm(){
	var options = {
		confirmCon: "",
		width: 340,
		height: 80,
		title: "确认？",
		confirmOKText: "确定",
		confirmCancelText: "取消",
		isReloadOnClose: false,
		contentType: 3,
		overlay: 3,
		parameter: null
	};
	var args = [];
	for (var i = 0; i < arguments.length; i++) {
		if (i == 0) {
		    var tp = $.type(arguments[i]);
		    if (tp === "string"){
                options["confirmCon"] = arguments[i];
			} else if (tp === "object") {
			    $.extend(options, arguments[i] || {});
			}
		}
		if (i == 1) 
			options["callBack"] = arguments[i];
		if (i >= 2)
		    args.push(arguments[i]);
	}
	if (arguments.length > 2){
        options["parameter"] = args;
    }
	var p = new Popup({id: "cb"});
	p.setContents(options);
	p.build();
	p.show();
	return p;	
};
//show user login in dialog
function $login(){
    $suc("lusc", "03bb5d79238046e99aa59cee0034e711.xk", {lod:"true"}, {title: "登录到思酬网络CMS系统", width:370, height:50});
}
//load the dynamic uer control to html element
function $luc(id, ph, data){
	var container = $.dom(id);
	if (container && container.tagName.toLowerCase() == "div") {
		var progress = $.dom(id + "_progress");
		if (!progress) {
			progress = $.div(id + "_progress", "<img src='/images/loading.gif' alt='Loading'/>加载中...");
			container.appendChild(progress);
		}
		var div = $.dom(id + "_content");
		if (!div) {
			div = $.div(id + "_content", "");
			container.appendChild(div);
		}
		$rc(id, ph);
		$postback(id, data, [id + "_content"], null);
	}
}
//load the dynamic uer control and show in the popup dialog
function $suc(id, ph, data, opts){
	var options = {
		width: 850,
		height: 440,
		title: "提示信息",
		isReloadOnClose: false,
		contentType: 2
	};
	$.extend(options, opts || {});
	var p = new Popup();
	$.varible(id + "_pop", p);
	p.setContents(options);
	p.build();
	var div = $.dom(id);
	if (!div) {
		div = $.div(id, "");
		$.dom("dialogBody").appendChild(div);
	}
	p.show();
	$luc(id, ph, data);
}
//
function midDialog(control){
	var ctr = $.dom(control);
	if (ctr) {
		if (ctr.id) {
			var rid = ctr.id.replace(/_content/g, "_pop");
			if (window[rid] && $.type(window[rid]) == "object") {
				window[rid].middle();
				return;
			}
		}
		midDialog(ctr.parentNode);
	}else{return;}
}
function closeDialog(control){
	var ctr = $.dom(control);
	if (ctr) {
		if (ctr.id) {
			var rid = ctr.id.replace(/_content/g, "_pop");
			if (window[rid] && $.type(window[rid]) == "object") {
				window[rid].close();
				return;
			}
		}
		closeDialog(ctr.parentNode);
	}else{return;}
    if (arguments.length === 2){
        $box(arguments[1]);
    }
	return;
};
function appendJS(path){
	var js = $.create("script");
	js.setAttribute("type", "text/javascript");
	js.setAttribute("src", path);
	document.getElementsByTagName("head")[0].appendChild(js);
}
function appendCSS(path){
	var css = $.create("link");
	css.setAttribute("type", "text/css");
	css.setAttribute("rel", "stylesheet");	
	css.setAttribute("href", path);
	document.getElementsByTagName("head")[0].appendChild(css);
}
function updateOptionText(selId, text, value){
	var select = $.dom(selId);
	var opt = null;
	for (var i = 0; i < select.length; i++){
	    opt = select.options[i];
		var val = opt.value;
		if (!val){continue;}
		if (val == value){
			opt.text = text;
			break;
		} else {opt = null;}
	}
	return opt;
}
function removeOption(selId, value){
	var select = $.dom(selId);
	var index = -1;
	for (var i = 0; i < select.length; i++){
		var val = select.options[i].value;
		if (!val){val = select.options[i].text;}
		if (val == value){
			index = i;
			break;
		}
	}
	if (index > -1){
	    if (select.options.remove){
	        select.options.remove(index);
	    } else {
	        select.remove(index);
	    }	
	}
}
function appendOption(selId, text, value){
	var selcted = true; var pop = false;
	if ($.type(arguments[3]) !== "undefined"){
		selcted = arguments[3];
	}
	var select = $.dom(selId);
	var option = updateOptionText(select, text, value);
	if (option == null){
	    option = createOption(text, value);
	    if (select.options.add){
	        select.options.add(option);
	    } else {
	        select.add(option, null);
	    }
        option.appendChild(document.createTextNode(text));
	    option.value = value;
	    if (selcted == true){
		    option.selected = true;
	    }
	}
	return option;
}
function createOption(text, value){
	var option = $.create("option");
	//option.text = text;
	//option.value = value;
	return option;
}
function $qo(container){
	var cContainer = $(container)[0];
	if (!cContainer) return {};
	var elements = [];
	var resultObject = {};
	var ins = cContainer.getElementsByTagName('input');
	var ses = cContainer.getElementsByTagName('select');
	var tes = cContainer.getElementsByTagName('textarea');
	elements = elements.extend(ins).extend(ses).extend(tes);
	for (var i = 0; i < elements.length; i++) {
		var elm = elements[i];
		var sName = elm.name; var sVal = elm.value;
		if (sName) {
			switch (elm.nodeName.toLowerCase()) {
				case "input":
					switch (elm.type.toLowerCase()) {
						case "text":
						case "password":
						case "hidden":
							resultObject[sName] = encodeURIComponent(sVal);
							break;
						case "checkbox":
						case "radio":
							if (elm.checked) {
								if (sVal && sVal == "on") {sVal = "true";}
							} else {
								if (sVal && sVal == "on") {sVal = "false";}
							}
                            resultObject[sName] = encodeURIComponent(sVal);
                            break;
					}
					break;
				case "textarea":
					resultObject[sName] = encodeURIComponent(sVal);
					break;
				case "select":
				    var opt = elm.options[elm.selectedIndex];
					resultObject[sName] = {text: encodeURIComponent(opt.text), value: encodeURIComponent(opt.value || opt.text)};
					break;
			}
		}
	}
	return resultObject;
}
function showLoading(img, mask){
	var imgdiv = $.dom(img);
	if (!imgdiv) {
		return;
	}
	var sx = document.documentElement.scrollTop;
	var cwidth = document.documentElement.clientWidth;
	var cheight = document.documentElement.clientHeight;
	imgdiv.style.display = "";
	imgdiv.className = "loading";	
	imgdiv.style.top = (sx + cheight / 2 - 40) + "px";
	imgdiv.style.left = (cwidth / 2 - 100) + "px";
	imgdiv.style.zIndex = 20001;
	
	var imgbgdiv = $.dom(mask);
	if (!imgbgdiv) {
		return;
	}
	imgbgdiv.style.width = document.documentElement.scrollWidth + "px";
	imgbgdiv.style.height = document.documentElement.scrollHeight + "px";
};
function hideLoading(img, mask){
	var imgdiv = $.dom(img);
	if (imgdiv) {
		imgdiv.style.display = "none";
		imgdiv.className = "";
	}
	var imgbgdiv = $.dom(mask);
	if (imgbgdiv) {
		imgbgdiv.style.display = "none";	
	}
};
//judge user is login in
function isLogin(){
	if (window["userIsLogin"] && window["userIsLogin"] === true) {
		return true;
	}
	return false;
}
//judge username and email exists 
function judgeUserName(userNameId, func, request){
	var userName = $(userNameId).form();
	if (userName.isNullOrEmpty()) {
		func("");
		return;
	} else if (!userName.isUserName()) {
		func("errorinput");
		return;
	}
	if (request) {
		$.get("commonhandler.ashx", {t: 'j', n: 'username', v: userName, ts: $.time()}, function(data){func(data);});
	}
};
function judgeEmail(emailId, func, request){
	var email = $(emailId).form();
	if (email.isNullOrEmpty()) {
		func("");
		return;
	} else if (!email.isEmail()) {
		func("errorinput");
		return;
	}
	if (request) {
		$.get("commonhandler.ashx", {t: 'j', n: 'email', v: email, ts: $.time()}, function(data){func(data);});
	}
};
//down images from internet server to this server
function downloadImagesFromInternet(container){
	var imgs = $.dom(container).getElementsByTagName("img"); var dimgs = new Object(); var msg = "共{0}张图片, 正在下载{1}图片..."; var m_who = "";
	if (imgs && imgs.length == 0) {return;}
	if (window.location.href.lastIndexOf("new-article") >= 0) {
		m_who = "article";
	} else {
		m_who = "product";
	}
	var dialog = $box(String.format(msg, imgs.length, ""));
	downloadImageFromInternet(imgs, dimgs, 0, m_who, dialog, msg);
}
var downloadimagefrominternet_index;
var downloadimagefrominternet_wh;
var downloadimagefrominternet_dialog;
var downloadimagefrominternet_msg;
var downloadimagefrominternet_url;
var downloadimagefrominternet_img;
var downloadimagefrominternet_imgs;
var downloadimagefrominternet_dimgs;
function downloadImageFromInternet(imgs, dimgs, index, wh, dialog, msg){
	var img = imgs[index]; var url = img.getAttribute("src");
	if (url.indexOf("http://") === 0 || url.indexOf("ftp://") === 0 || url.indexOf("https://") === 0) {
		if (url.indexOf(window.location.protocol + "//" + window.location.host) >= 0) {
			_downloadImageFromInternet(imgs, dimgs, index, wh, dialog, msg);
		} else {
			dialog.setHTML(String.format(msg, imgs.length, "第" + (index + 1) + "张"));		
			if (dimgs[url]){	
				if (img.getAttribute("data-cke-saved-src")) {
					img.setAttribute("data-cke-saved-src", dimgs[url]);
				}					
				img.setAttribute("src", dimgs[url]);
				_downloadImageFromInternet(imgs, dimgs, index, wh, dialog, msg);
			} else {
			    downloadimagefrominternet_img = img;
			    downloadimagefrominternet_imgs = imgs;
			    downloadimagefrominternet_dimgs = dimgs;
                downloadimagefrominternet_index = index;
                downloadimagefrominternet_wh = wh;
                downloadimagefrominternet_dialog = dialog;
                downloadimagefrominternet_msg = msg;
                downloadimagefrominternet_url = url;
                $.get("/upload.aspx", {path: url, who: wh, ts: $.time()}, function(data){
					if (data) {
						var backUrl = window.location.protocol + "//" + window.location.host + data;					
						downloadimagefrominternet_dimgs[downloadimagefrominternet_url] = backUrl;
						if (downloadimagefrominternet_img.getAttribute("data-cke-saved-src")) {
							downloadimagefrominternet_img.setAttribute("data-cke-saved-src", backUrl);
						}
						downloadimagefrominternet_img.setAttribute("src", backUrl);
					}
					_downloadImageFromInternet(downloadimagefrominternet_imgs, downloadimagefrominternet_dimgs, downloadimagefrominternet_index, downloadimagefrominternet_wh, downloadimagefrominternet_dialog, downloadimagefrominternet_msg);
                });
			}
		}
	}
}
function _downloadImageFromInternet(imgs, dimgs, index, wh, dialog, msg){
	if (index < imgs.length - 1) {
		setTimeout(function(){}, 100);
		downloadImageFromInternet(imgs, dimgs, index + 1, wh, dialog, msg);
	} else {
		dialog.setHTML("下载成功");
	}	
}
//get file size string
function getFileSize(fileSize){
    try{
        var size = parseInt(fileSize);
        if (size < 1024){
            return String.format("{0}Bytes", size);
        } else if (size < 1048576) {
            return String.format("{0}KB", Math.round((size / 1024)* 100)/100);
        } else if (size < 1073741824) {
            return String.format("{0}MB", Math.round((size / 1048576)* 100)/100);
        }
        return String.format("{0}GB", Math.round((size / 1073741824)* 100)/100);
    } catch(ex){ return ""; }
}
//show messsage before window unload
var UnloadConfirm = {};
UnloadConfirm.set = function(confirm_msg){
    window.onbeforeunload = function(event){
        var evt = event || window.event;
        evt.returnValue = confirm_msg;
    };
};
UnloadConfirm.clear = function(){
    window.onbeforeunload = function(){};
};
//fixed fckeditor bug
function UpdateEditorClass(){
    this.UpdateEditorFormValue = function(val){
        try{
            if (typeof(CKEDITOR) == "undefined") {return;}
            for(var name in CKEDITOR.instances){CKEDITOR.instances[name].updateElement();}
        }catch(e){}
    };
}
var MyFCKObject = new UpdateEditorClass();
function fnTrapKD(btnID, event){
    var button = $.dom(btnID); // only recent browsers
    if (document.all) { // IE
        if (event.keyCode == 13) {
            event.returnValue = false;
            event.cancel = true;
            button.click();
        }
    }
    else if (document.getElementById) {
        if (event.which == 13) {
            event.returnValue = false;
            event.cancel = true;
            button.focus();
            button.click();
        }
    }
}

function AddBbCode(v){
	try {
	    var contentBox = $("#commentcontent")[0];
		if (contentBox.selectionStart) { // firefox
			var pretxt = contentBox.value.substring(0, contentBox.selectionStart);
			var therest = contentBox.value.substr(contentBox.selectionEnd);
			var sel = contentBox.value.substring(contentBox.selectionStart, contentBox.selectionEnd);
			contentBox.value = pretxt + "[" + v + "]" + sel + "[/" + v + "]" + therest;
			contentBox.focus();
		} else if (document.selection && document.selection.createRange) { // IE
			var str = document.selection.createRange().text;
			contentBox.focus();
			var sel = document.selection.createRange();
			sel.text = "[" + v + "]" + str + "[/" + v + "]";
		}
	} catch (ex) {
	}
	return;
}
function AddEmotionCode(v) {
    var contentBox = $("#commentcontent")[0];
    if (document.selection) {
            contentBox.focus();
            sel = document.selection.createRange();
            sel.text = v;
            contentBox.focus();
    }
    else if (contentBox.selectionStart || contentBox.selectionStart == '0') {
            var startPos = contentBox.selectionStart;
            var endPos = contentBox.selectionEnd;
            var cursorPos = endPos;
            contentBox.value = contentBox.value.substring(0, startPos) + v + contentBox.value.substring(endPos, contentBox.value.length);
            cursorPos += v.length;
            contentBox.focus();
            contentBox.selectionStart = cursorPos;
            contentBox.selectionEnd = cursorPos;
    }
    else {
            contentBox.value += v;
            contentBox.focus();
    }
    contentBox.focus();
    return false;
}
