//基于jQuery实现类和对象机制，模仿Extjs Core来实现

jQuery.extend({namespace:function(){var o,d;jQuery.each(arguments,function(i,v){d=v.split(".");o=window[d[0]]=window[d[0]]||{};jQuery.each(d.slice(1),function(i2,v2){o=o[v2]=o[v2]||{};});});return o;},extend_class:function(){var io=function(o){for(var m in o){this[m]=o[m];}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(jQuery.isObject(sp)){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments);};}
var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp;}
sb.override=function(o){jQuery.override(sb,o);};sbp.superclass=sbp.supr=(function(){return spp;});sbp.override=io;jQuery.override(sb,overrides);sb.extend=function(o){return jQuery.extend(sb,o);};return sb;};}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;jQuery.apply(p,overrides);if(jQuery.browser.msie&&overrides.hasOwnProperty('toString')){p.toString=overrides.toString;}}},apply:function(o,c,defaults){if(defaults){jQuery.apply(o,defaults);}
if(o&&c&&typeof c=='object'){for(var p in c){o[p]=c[p];}}
return o;},isObject:function(v){return!!v&&Object.prototype.toString.call(v)==='[object Object]';}});

/* 
* http://www.ajaxplaza.net/slider/slider.htm
* jSlider modify $(). ==> jQuery(document.body).
* @ jQuery v1.4.*
*
* Licensed under the GPL:
*   http://gplv3.fsf.org
*
* usage as:
*	 var slider = jQuery.fn.jSlider({...});
*	 slider.setSliderValue(value,callback);
* Copyright 2008, 2009 Jericho [ thisnamemeansnothing[at]gmail.com ] 
*/

(function(jQuery){jQuery.extend(jQuery.fn,{jSlider:function(setting){var ps=jQuery.extend({renderTo:jQuery(document.body),enable:true,initPosition:'max',size:{barWidth:200,sliderWidth:5},barCssName:'defaultbar',completedCssName:'jquery-completed',sliderCssName:'jquery-jslider',sliderHover:'jquery-jslider-hover',onChanging:function(){},onChanged:function(){}},setting);ps.renderTo=(typeof ps.renderTo=='string'?jQuery(ps.renderTo):ps.renderTo);var sliderbar=jQuery('<div><div>&nbsp;</div><div>&nbsp;</div></div>').attr('class',ps.barCssName).css('width',ps.size.barWidth).appendTo(ps.renderTo);var completedbar=sliderbar.find('div:eq(0)').attr('class',ps.completedCssName);var slider=sliderbar.find('div:eq(1)').attr('class',ps.sliderCssName).css('width',ps.size.sliderWidth);var bw=sliderbar.width(),sw=slider.width();ps.limited={min:0,max:bw-sw};if(typeof window.jQuerysliderProcess=='undefined'){window.jQuerysliderProcess=new Function('obj1','obj2','left','obj1.css(\'left\',left);obj2.css(\'width\',left);');}
jQuerysliderProcess(slider,completedbar,eval('ps.limited.'+ps.initPosition));var slide={drag:function(e){var d=e.data;var l=Math.min(Math.max(e.pageX-d.pageX+d.left,ps.limited.min),ps.limited.max);jQuerysliderProcess(slider,completedbar,l);ps.onChanging(l/ps.limited.max,e);},drop:function(e){slider.removeClass(ps.sliderHover);ps.onChanged(parseInt(slider.css('left'))/ps.limited.max,e);jQuery(document.body).unbind('mousemove',slide.drag).unbind('mouseup',slide.drop);}};if(ps.enable){slider.bind('mousedown',function(e){var d={left:parseInt(slider.css('left')),pageX:e.pageX};jQuery(this).addClass(ps.sliderHover);jQuery(document.body).bind('mousemove',d,slide.drag).bind('mouseup',d,slide.drop);});}
slider.data={bar:sliderbar,completed:completedbar};return slider;},setSliderValue:function(v,callback){try{if(typeof v=='undefined'||v<0||v>1){throw new Error('\'v\' must be a Float variable between 0 and 1.');}
var s=this;if(typeof s=='undefined'||typeof s.data=='undefined'||typeof s.data.bar=='undefined'){throw new Error('You bound the method to an object that is not a slider!');}
jQuerysliderProcess(s,s.data.completed,v*s.data.bar.width());if(typeof callback!='undefined'){callback(v);}}
catch(e){alert(e.message);}}});})(jQuery);;


/*!
 * jQuery Form Plugin
 * version: 2.67 (12-MAR-2011)
 * @requires jQuery v1.3.2 or later
 *
 * Examples and documentation at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
;(function($){$.fn.ajaxSubmit=function(options){if(!this.length){log('ajaxSubmit: skipping submit process - no element selected');return this;}
if(typeof options=='function'){options={success:options};}
var action=this.attr('action');var url=(typeof action==='string')?$.trim(action):'';if(url){url=(url.match(/^([^#]+)/)||[])[1];}
url=url||window.location.href||'';options=$.extend(true,{url:url,type:this[0].getAttribute('method')||'GET',iframeSrc:/^https/i.test(window.location.href||'')?'javascript:false':'about:blank'},options);var veto={};this.trigger('form-pre-serialize',[this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');return this;}
if(options.beforeSerialize&&options.beforeSerialize(this,options)===false){log('ajaxSubmit: submit aborted via beforeSerialize callback');return this;}
var n,v,a=this.formToArray(options.semantic);if(options.data){options.extraData=options.data;for(n in options.data){if(options.data[n]instanceof Array){for(var k in options.data[n]){a.push({name:n,value:options.data[n][k]});}}
else{v=options.data[n];v=$.isFunction(v)?v():v;a.push({name:n,value:v});}}}
if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){log('ajaxSubmit: submit aborted via beforeSubmit callback');return this;}
this.trigger('form-submit-validate',[a,this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-submit-validate trigger');return this;}
var q=$.param(a);if(options.type.toUpperCase()=='GET'){options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;options.data=null;}
else{options.data=q;}
var $form=this,callbacks=[];if(options.resetForm){callbacks.push(function(){$form.resetForm();});}
if(options.clearForm){callbacks.push(function(){$form.clearForm();});}
if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){var fn=options.replaceTarget?'replaceWith':'html';$(options.target)[fn](data).each(oldSuccess,arguments);});}
else if(options.success){callbacks.push(options.success);}
options.success=function(data,status,xhr){var context=options.context||options;for(var i=0,max=callbacks.length;i<max;i++){callbacks[i].apply(context,[data,status,xhr||$form,$form]);}};var fileInputs=$('input:file',this).length>0;var mp='multipart/form-data';var multipart=($form.attr('enctype')==mp||$form.attr('encoding')==mp);if(options.iframe!==false&&(fileInputs||options.iframe||multipart)){if(options.closeKeepAlive){$.get(options.closeKeepAlive,fileUpload);}
else{fileUpload();}}
else{$.ajax(options);}
this.trigger('form-submit-notify',[this,options]);return this;function fileUpload(){var form=$form[0];if($(':input[name=submit],:input[id=submit]',form).length){alert('Error: Form elements must not have name or id of "submit".');return;}
var s=$.extend(true,{},$.ajaxSettings,options);s.context=s.context||s;var id='jqFormIO'+(new Date().getTime()),fn='_'+id;var $io=$('<iframe id="'+id+'" name="'+id+'" src="'+s.iframeSrc+'" />');var io=$io[0];$io.css({position:'absolute',top:'-1000px',left:'-1000px'});var xhr={aborted:0,responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(){log('aborting upload...');var e='aborted';this.aborted=1;$io.attr('src',s.iframeSrc);xhr.error=e;s.error&&s.error.call(s.context,xhr,'error',e);g&&$.event.trigger("ajaxError",[xhr,s,e]);s.complete&&s.complete.call(s.context,xhr,'error');}};var g=s.global;if(g&&!$.active++){$.event.trigger("ajaxStart");}
if(g){$.event.trigger("ajaxSend",[xhr,s]);}
if(s.beforeSend&&s.beforeSend.call(s.context,xhr,s)===false){if(s.global){$.active--;}
return;}
if(xhr.aborted){return;}
var timedOut=0;var sub=form.clk;if(sub){var n=sub.name;if(n&&!sub.disabled){s.extraData=s.extraData||{};s.extraData[n]=sub.value;if(sub.type=="image"){s.extraData[n+'.x']=form.clk_x;s.extraData[n+'.y']=form.clk_y;}}}
function doSubmit(){var t=$form.attr('target'),a=$form.attr('action');form.setAttribute('target',id);if(form.getAttribute('method')!='POST'){form.setAttribute('method','POST');}
if(form.getAttribute('action')!=s.url){form.setAttribute('action',s.url);}
if(!s.skipEncodingOverride){$form.attr({encoding:'multipart/form-data',enctype:'multipart/form-data'});}
if(s.timeout){setTimeout(function(){timedOut=true;cb();},s.timeout);}
var extraInputs=[];try{if(s.extraData){for(var n in s.extraData){extraInputs.push($('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />').appendTo(form)[0]);}}
$io.appendTo('body');io.attachEvent?io.attachEvent('onload',cb):io.addEventListener('load',cb,false);form.submit();}
finally{form.setAttribute('action',a);if(t){form.setAttribute('target',t);}else{$form.removeAttr('target');}
$(extraInputs).remove();}}
if(s.forceSync){doSubmit();}
else{setTimeout(doSubmit,10);}
var data,doc,domCheckCount=50;function cb(){if(xhr.aborted){return;}
var doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;if(!doc||doc.location.href==s.iframeSrc){return;}
io.detachEvent?io.detachEvent('onload',cb):io.removeEventListener('load',cb,false);var ok=true;try{if(timedOut){throw'timeout';}
var isXml=s.dataType=='xml'||doc.XMLDocument||$.isXMLDoc(doc);log('isXml='+isXml);if(!isXml&&window.opera&&(doc.body==null||doc.body.innerHTML=='')){if(--domCheckCount){log('requeing onLoad callback, DOM not available');setTimeout(cb,250);return;}}
xhr.responseText=doc.body?doc.body.innerHTML:doc.documentElement?doc.documentElement.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;xhr.getResponseHeader=function(header){var headers={'content-type':s.dataType};return headers[header];};var scr=/(json|script)/.test(s.dataType);if(scr||s.textarea){var ta=doc.getElementsByTagName('textarea')[0];if(ta){xhr.responseText=ta.value;}
else if(scr){var pre=doc.getElementsByTagName('pre')[0];var b=doc.getElementsByTagName('body')[0];if(pre){xhr.responseText=pre.textContent;}
else if(b){xhr.responseText=b.innerHTML;}}}
else if(s.dataType=='xml'&&!xhr.responseXML&&xhr.responseText!=null){xhr.responseXML=toXml(xhr.responseText);}
data=httpData(xhr,s.dataType,s);}
catch(e){log('error caught:',e);ok=false;xhr.error=e;s.error&&s.error.call(s.context,xhr,'error',e);g&&$.event.trigger("ajaxError",[xhr,s,e]);}
if(xhr.aborted){log('upload aborted');ok=false;}
if(ok){s.success&&s.success.call(s.context,data,'success',xhr);g&&$.event.trigger("ajaxSuccess",[xhr,s]);}
g&&$.event.trigger("ajaxComplete",[xhr,s]);if(g&&!--$.active){$.event.trigger("ajaxStop");}
s.complete&&s.complete.call(s.context,xhr,ok?'success':'error');setTimeout(function(){$io.removeData('form-plugin-onload');$io.remove();xhr.responseXML=null;},100);}
var toXml=$.parseXML||function(s,doc){if(window.ActiveXObject){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async='false';doc.loadXML(s);}
else{doc=(new DOMParser()).parseFromString(s,'text/xml');}
return(doc&&doc.documentElement&&doc.documentElement.nodeName!='parsererror')?doc:null;};var parseJSON=$.parseJSON||function(s){return window['eval']('('+s+')');};var httpData=function(xhr,type,s){var ct=xhr.getResponseHeader('content-type')||'',xml=type==='xml'||!type&&ct.indexOf('xml')>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.nodeName==='parsererror'){$.error&&$.error('parsererror');}
if(s&&s.dataFilter){data=s.dataFilter(data,type);}
if(typeof data==='string'){if(type==='json'||!type&&ct.indexOf('json')>=0){data=parseJSON(data);}else if(type==="script"||!type&&ct.indexOf("javascript")>=0){$.globalEval(data);}}
return data;};}};$.fn.ajaxForm=function(options){if(this.length===0){var o={s:this.selector,c:this.context};if(!$.isReady&&o.s){log('DOM not ready, queuing ajaxForm');$(function(){$(o.s,o.c).ajaxForm(options);});return this;}
log('terminating; zero elements found by selector'+($.isReady?'':' (DOM not ready)'));return this;}
return this.ajaxFormUnbind().bind('submit.form-plugin',function(e){if(!e.isDefaultPrevented()){e.preventDefault();$(this).ajaxSubmit(options);}}).bind('click.form-plugin',function(e){var target=e.target;var $el=$(target);if(!($el.is(":submit,input:image"))){var t=$el.closest(':submit');if(t.length==0){return;}
target=t[0];}
var form=this;form.clk=target;if(target.type=='image'){if(e.offsetX!=undefined){form.clk_x=e.offsetX;form.clk_y=e.offsetY;}else if(typeof $.fn.offset=='function'){var offset=$el.offset();form.clk_x=e.pageX-offset.left;form.clk_y=e.pageY-offset.top;}else{form.clk_x=e.pageX-target.offsetLeft;form.clk_y=e.pageY-target.offsetTop;}}
setTimeout(function(){form.clk=form.clk_x=form.clk_y=null;},100);});};$.fn.ajaxFormUnbind=function(){return this.unbind('submit.form-plugin click.form-plugin');};$.fn.formToArray=function(semantic){var a=[];if(this.length===0){return a;}
var form=this[0];var els=semantic?form.getElementsByTagName('*'):form.elements;if(!els){return a;}
var i,j,n,v,el,max,jmax;for(i=0,max=els.length;i<max;i++){el=els[i];n=el.name;if(!n){continue;}
if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el){a.push({name:n,value:$(el).val()});a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});}
continue;}
v=$.fieldValue(el,true);if(v&&v.constructor==Array){for(j=0,jmax=v.length;j<jmax;j++){a.push({name:n,value:v[j]});}}
else if(v!==null&&typeof v!='undefined'){a.push({name:n,value:v});}}
if(!semantic&&form.clk){var $input=$(form.clk),input=$input[0];n=input.name;if(n&&!input.disabled&&input.type=='image'){a.push({name:n,value:$input.val()});a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});}}
return a;};$.fn.formSerialize=function(semantic){return $.param(this.formToArray(semantic));};$.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n){return;}
var v=$.fieldValue(this,successful);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++){a.push({name:n,value:v[i]});}}
else if(v!==null&&typeof v!='undefined'){a.push({name:this.name,value:v});}});return $.param(a);};$.fn.fieldValue=function(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i];var v=$.fieldValue(el,successful);if(v===null||typeof v=='undefined'||(v.constructor==Array&&!v.length)){continue;}
v.constructor==Array?$.merge(val,v):val.push(v);}
return val;};$.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(successful===undefined){successful=true;}
if(successful&&(!n||el.disabled||t=='reset'||t=='button'||(t=='checkbox'||t=='radio')&&!el.checked||(t=='submit'||t=='image')&&el.form&&el.form.clk!=el||tag=='select'&&el.selectedIndex==-1)){return null;}
if(tag=='select'){var index=el.selectedIndex;if(index<0){return null;}
var a=[],ops=el.options;var one=(t=='select-one');var max=(one?index+1:ops.length);for(var i=(one?index:0);i<max;i++){var op=ops[i];if(op.selected){var v=op.value;if(!v){v=(op.attributes&&op.attributes['value']&&!(op.attributes['value'].specified))?op.text:op.value;}
if(one){return v;}
a.push(v);}}
return a;}
return $(el).val();};$.fn.clearForm=function(){return this.each(function(){$('input,select,textarea',this).clearFields();});};$.fn.clearFields=$.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=='text'||t=='password'||tag=='textarea'){this.value='';}
else if(t=='checkbox'||t=='radio'){this.checked=false;}
else if(tag=='select'){this.selectedIndex=-1;}});};$.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=='function'||(typeof this.reset=='object'&&!this.reset.nodeType)){this.reset();}});};$.fn.enable=function(b){if(b===undefined){b=true;}
return this.each(function(){this.disabled=!b;});};$.fn.selected=function(select){if(select===undefined){select=true;}
return this.each(function(){var t=this.type;if(t=='checkbox'||t=='radio'){this.checked=select;}
else if(this.tagName.toLowerCase()=='option'){var $sel=$(this).parent('select');if(select&&$sel[0]&&$sel[0].type=='select-one'){$sel.find('option').selected(false);}
this.selected=select;}});};function log(){if($.fn.ajaxSubmit.debug){var msg='[jquery.form] '+Array.prototype.join.call(arguments,'');if(window.console&&window.console.log){window.console.log(msg);}
else if(window.opera&&window.opera.postError){window.opera.postError(msg);}}};})(jQuery);

// form_validator
var jQuery_formValidator_initConfig;(function($){$.formValidator={sustainType:function(id,setting){var elem=$("#"+id).get(0);var srcTag=elem.tagName;var stype=elem.type;switch(setting.validatetype){case"InitValidator":return true;case"InputValidator":if(srcTag=="INPUT"||srcTag=="TEXTAREA"||srcTag=="SELECT"){return true;}else{return false;}case"CompareValidator":if(srcTag=="INPUT"||srcTag=="TEXTAREA"){if(stype=="checkbox"||stype=="radio"){return false;}else{return true;}}return false;case"AjaxValidator":if(stype=="text"||stype=="textarea"||stype=="file"||stype=="password"||stype=="select-one"){return true;}else{return false;}case"RegexValidator":if(srcTag=="INPUT"||srcTag=="TEXTAREA"){if(stype=="checkbox"||stype=="radio"){return false;}else{return true;}}return false;case"FunctionValidator":return true;}},initConfig:function(controlOptions){var settings={debug:false,validatorgroup:"1",alertmessage:false,validobjectids:"",forcevalid:false,onsuccess:function(){return true;},onerror:function(){},submitonce:false,formid:"",autotip:false,tidymode:false,errorfocus:true,wideword:false};controlOptions=controlOptions||{};$.extend(settings,controlOptions);if(settings.tidymode){settings.errorfocus=false};if(settings.formid!=""){$("#"+settings.formid).submit(function(){return $.formValidator.pageIsValid("1");})};if(jQuery_formValidator_initConfig==null){jQuery_formValidator_initConfig=new Array();}jQuery_formValidator_initConfig.push(settings);},appendValid:function(id,setting){if(!$.formValidator.sustainType(id,setting))return-1;var srcjo=$("#"+id).get(0);if(setting.validatetype=="InitValidator"||srcjo.settings==undefined){srcjo.settings=new Array();}var len=srcjo.settings.push(setting);srcjo.settings[len-1].index=len-1;return len-1;},getInitConfig:function(validatorgroup){if(jQuery_formValidator_initConfig!=null){for(i=0;i<jQuery_formValidator_initConfig.length;i++){if(validatorgroup==jQuery_formValidator_initConfig[i].validatorgroup){return jQuery_formValidator_initConfig[i];}}}return null;},triggerValidate:function(returnObj){switch(returnObj.setting.validatetype){case"InputValidator":$.formValidator.inputValid(returnObj);break;case"CompareValidator":$.formValidator.compareValid(returnObj);break;case"AjaxValidator":$.formValidator.ajaxValid(returnObj);break;case"RegexValidator":$.formValidator.regexValid(returnObj);break;case"FunctionValidator":$.formValidator.functionValid(returnObj);break;}},setTipState:function(elem,showclass,showmsg){var setting0=elem.settings[0];var initConfig=$.formValidator.getInitConfig(setting0.validatorgroup);var tip=$("#"+setting0.tipid);if(showmsg==null||showmsg==""){tip.hide();}else
{if(initConfig.tidymode){$("#fv_content").html(showmsg);elem.Tooltip=showmsg;if(showclass!="on_error"){tip.hide();}}tip.removeClass();tip.addClass(showclass);tip.html(showmsg);}},resetTipState:function(validatorgroup){var initConfig=$.formValidator.getInitConfig(validatorgroup);$(initConfig.validobjectids).each(function(){$.formValidator.setTipState(this,"on_show",this.settings[0].onshow);});},setFailState:function(tipid,showmsg){var tip=$("#"+tipid);tip.removeClass();tip.addClass("on_error");tip.html(showmsg);},showMessage:function(returnObj){var id=returnObj.id;var elem=$("#"+id).get(0);var isvalid=returnObj.isvalid;var setting=returnObj.setting;var showmsg="",showclass="";var settings=$("#"+id).get(0).settings;var intiConfig=$.formValidator.getInitConfig(settings[0].validatorgroup);if(!isvalid){showclass="on_error";if(setting.validatetype=="AjaxValidator"){if(setting.lastValid==""){showclass="on_load";showmsg=setting.onwait;}else
{showmsg=setting.onerror;}}else
{showmsg=(returnObj.errormsg==""?setting.onerror:returnObj.errormsg);}if(intiConfig.alertmessage){var elem=$("#"+id).get(0);if(elem.validoldvalue!=$(elem).val()){alert(showmsg);}}else
{$.formValidator.setTipState(elem,showclass,showmsg);}}else
{showmsg=$.formValidator.isEmpty(id)?setting.onempty:setting.oncorrect;$.formValidator.setTipState(elem,"on_correct",showmsg);}return showmsg;},showAjaxMessage:function(returnObj){var setting=returnObj.setting;var elem=$("#"+returnObj.id).get(0);if(elem.validoldvalue!=$(elem).val()){$.formValidator.ajaxValid(returnObj);}else
{if(setting.isvalid!=undefined&&!setting.isvalid){elem.lastshowclass="on_error";elem.lastshowmsg=setting.onerror;}$.formValidator.setTipState(elem,elem.lastshowclass,elem.lastshowmsg);}},getLength:function(id){var srcjo=$("#"+id);var elem=srcjo.get(0);sType=elem.type;var len=0;switch(sType){case"text":case"hidden":case"password":case"textarea":case"file":var val=srcjo.val();var initConfig=$.formValidator.getInitConfig(elem.settings[0].validatorgroup);if(initConfig.wideword){for(var i=0;i<val.length;i++){if(val.charCodeAt(i)>=0x4e00&&val.charCodeAt(i)<=0x9fa5){len+=2;}else{len++;}}}else{len=val.length;}break;case"checkbox":case"radio":len=$("input[type='"+sType+"'][name='"+srcjo.attr("name")+"']:checked").length;break;case"select-one":len=elem.options?elem.options.selectedIndex:-1;break;case"select-multiple":len=$("select[name="+elem.name+"] option:selected").length;break;}return len;},isEmpty:function(id){if($("#"+id).get(0).settings[0].empty&&$.formValidator.getLength(id)==0){return true;}else{return false;}},isOneValid:function(id){return $.formValidator.oneIsValid(id,1).isvalid;},oneIsValid:function(id,index){var returnObj=new Object();returnObj.id=id;returnObj.ajax=-1;returnObj.errormsg="";var elem=$("#"+id).get(0);var settings=elem.settings;var settingslen=settings.length;if(settingslen==1){settings[0].bind=false;}if(!settings[0].bind){return null;}for(var i=0;i<settingslen;i++){if(i==0){if($.formValidator.isEmpty(id)){returnObj.isvalid=true;returnObj.setting=settings[0];break;}continue;}returnObj.setting=settings[i];if(settings[i].validatetype!="AjaxValidator"){$.formValidator.triggerValidate(returnObj);}else{returnObj.ajax=i;}if(!settings[i].isvalid){returnObj.isvalid=false;returnObj.setting=settings[i];break;}else{returnObj.isvalid=true;returnObj.setting=settings[0];if(settings[i].validatetype=="AjaxValidator")break;}}return returnObj;},pageIsValid:function(validatorgroup){if(validatorgroup==null||validatorgroup==undefined){validatorgroup="1"};var isvalid=true;var thefirstid="",thefirsterrmsg;var returnObj,setting;var error_tip="^";var initConfig=$.formValidator.getInitConfig(validatorgroup);var jqObjs=$(initConfig.validobjectids);jqObjs.each(function(i,elem){if(elem.settings[0].bind){returnObj=$.formValidator.oneIsValid(elem.id,1);if(returnObj){var tipid=elem.settings[0].tipid;if(!returnObj.isvalid){isvalid=false;if(thefirstid==""){thefirstid=returnObj.id;thefirsterrmsg=(returnObj.errormsg==""?returnObj.setting.onerror:returnObj.errormsg)}}if(!initConfig.alertmessage){if(error_tip.indexOf("^"+tipid+"^")==-1){if(!returnObj.isvalid){error_tip=error_tip+tipid+"^";}$.formValidator.showMessage(returnObj);}}}}});if(isvalid){isvalid=initConfig.onsuccess();if(initConfig.submitonce){$("input[type='submit']").attr("disabled",true);}}else
{var obj=$("#"+thefirstid).get(0);initConfig.onerror(thefirsterrmsg,obj);if(thefirstid!=""&&initConfig.errorfocus){$("#"+thefirstid).focus();}}return!initConfig.debug&&isvalid;},ajaxValid:function(returnObj){var id=returnObj.id;var srcjo=$("#"+id);var elem=srcjo.get(0);var settings=elem.settings;var setting=settings[returnObj.ajax];var ls_url=setting.url;if(srcjo.size()==0&&settings[0].empty){returnObj.setting=settings[0];returnObj.isvalid=true;$.formValidator.showMessage(returnObj);setting.isvalid=true;return;}if(setting.addidvalue){var parm="clientid="+id+"&"+id+"="+encodeURIComponent(srcjo.val());ls_url=ls_url+(ls_url.indexOf("?")>0?("&"+parm):("?"+parm));}$.ajax({mode:"abort",type:setting.type,url:ls_url,cache:setting.cache,data:setting.data,async:setting.async,dataType:setting.datatype,success:function(data){if(setting.success(data)){$.formValidator.setTipState(elem,"on_correct",settings[0].oncorrect);setting.isvalid=true;}else
{$.formValidator.setTipState(elem,"on_error",setting.onerror);setting.isvalid=false;}},complete:function(){if(setting.buttons&&setting.buttons.length>0){setting.buttons.attr({"disabled":false})};setting.complete;},beforeSend:function(xhr){if(setting.buttons&&setting.buttons.length>0){setting.buttons.attr({"disabled":true})};var isvalid=setting.beforesend(xhr);if(isvalid){setting.isvalid=false;$.formValidator.setTipState(elem,"on_load",settings[returnObj.ajax].onwait);}setting.lastValid="-1";return isvalid;},error:function(){$.formValidator.setTipState(elem,"on_error",setting.onerror);setting.isvalid=false;setting.error();},processData:setting.processdata});},regexValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcTag=$("#"+id).get(0).tagName;var elem=$("#"+id).get(0);if(elem.settings[0].empty&&elem.value==""){setting.isvalid=true;}else
{var regexpress=setting.regexp;if(setting.datatype=="enum"){regexpress=eval("regexEnum."+regexpress);}if(regexpress==undefined||regexpress==""){setting.isvalid=false;return;}setting.isvalid=(new RegExp(regexpress,setting.param)).test($("#"+id).val());}},functionValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcjo=$("#"+id);var lb_ret=setting.fun(srcjo.val(),srcjo.get(0));if(lb_ret!=undefined){if(typeof lb_ret=="string"){setting.isvalid=false;returnObj.errormsg=lb_ret;}else{setting.isvalid=lb_ret;}}},inputValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcjo=$("#"+id);var elem=srcjo.get(0);var val=srcjo.val();var sType=elem.type;var len=$.formValidator.getLength(id);var empty=setting.empty,emptyerror=false;switch(sType){case"text":case"hidden":case"password":case"textarea":case"file":if(setting.type=="size"){empty=setting.empty;if(!empty.leftempty){emptyerror=(val.replace(/^[ \s]+/,'').length!=val.length);}if(!emptyerror&&!empty.rightempty){emptyerror=(val.replace(/[ \s]+$/,'').length!=val.length);}if(emptyerror&&empty.emptyerror){returnObj.errormsg=empty.emptyerror}}case"checkbox":case"select-one":case"select-multiple":case"radio":var lb_go_on=false;if(sType=="select-one"||sType=="select-multiple"){setting.type="size";}var type=setting.type;if(type=="size"){if(!emptyerror){lb_go_on=true}if(lb_go_on){val=len}}else if(type=="date"||type=="datetime"){var isok=false;if(type=="date"){lb_go_on=isDate(val)};if(type=="datetime"){lb_go_on=isDate(val)};if(lb_go_on){val=new Date(val);setting.min=new Date(setting.min);setting.max=new Date(setting.max);};}else{stype=(typeof setting.min);if(stype=="number"){val=(new Number(val)).valueOf();if(!isNaN(val)){lb_go_on=true;}}if(stype=="string"){lb_go_on=true;}}setting.isvalid=false;if(lb_go_on){if(val<setting.min||val>setting.max){if(val<setting.min&&setting.onerrormin){returnObj.errormsg=setting.onerrormin;}if(val>setting.min&&setting.onerrormax){returnObj.errormsg=setting.onerrormax;}}else{setting.isvalid=true;}}break;}},compareValid:function(returnObj){var id=returnObj.id;var setting=returnObj.setting;var srcjo=$("#"+id);var desjo=$("#"+setting.desid);var ls_datatype=setting.datatype;setting.isvalid=false;curvalue=srcjo.val();ls_data=desjo.val();if(ls_datatype=="number"){if(!isNaN(curvalue)&&!isNaN(ls_data)){curvalue=parseFloat(curvalue);ls_data=parseFloat(ls_data);}else{return;}}if(ls_datatype=="date"||ls_datatype=="datetime"){var isok=false;if(ls_datatype=="date"){isok=(isDate(curvalue)&&isDate(ls_data))};if(ls_datatype=="datetime"){isok=(isDateTime(curvalue)&&isDateTime(ls_data))};if(isok){curvalue=new Date(curvalue);ls_data=new Date(ls_data)}else{return;}}switch(setting.operateor){case"=":if(curvalue==ls_data){setting.isvalid=true;}break;case"!=":if(curvalue!=ls_data){setting.isvalid=true;}break;case">":if(curvalue>ls_data){setting.isvalid=true;}break;case">=":if(curvalue>=ls_data){setting.isvalid=true;}break;case"<":if(curvalue<ls_data){setting.isvalid=true;}break;case"<=":if(curvalue<=ls_data){setting.isvalid=true;}break;}},localTooltip:function(e){e=e||window.event;var mouseX=e.pageX||(e.clientX?e.clientX+document.body.scrollLeft:0);var mouseY=e.pageY||(e.clientY?e.clientY+document.body.scrollTop:0);$("#fvtt").css({"top":(mouseY+2)+"px","left":(mouseX-40)+"px"});}};$.fn.formValidator=function(cs){var setting={validatorgroup:"1",empty:false,submitonce:false,automodify:false,onshow:"请输入内容",onfocus:"请输入内容",oncorrect:"输入正确",onempty:"输入内容为空",defaultvalue:null,bind:true,validatetype:"InitValidator",tipcss:{"left":"10px","top":"1px","height":"20px","width":"250px"},triggerevent:"blur",forcevalid:false};cs=cs||{};if(cs.validatorgroup==undefined){cs.validatorgroup="1"};var initConfig=$.formValidator.getInitConfig(cs.validatorgroup);if(initConfig.tidymode){setting.tipcss={"left":"2px","width":"22px","height":"22px","display":"none"}};$.extend(true,setting,cs);return this.each(function(e){var jqobj=$(this);var setting_temp={};$.extend(true,setting_temp,setting);var tip=setting_temp.tipid?setting_temp.tipid:this.id+"_tip";if(initConfig.autotip){if($("body [id="+tip+"]").length==0){aftertip=setting_temp.relativeid?setting_temp.relativeid:this.id;var obj=getTopLeft(aftertip);var y=obj.top;var x=getElementWidth(aftertip)+obj.left;$("<div class='formValidateTip'></div>").appendTo($("body")).css({left:x+"px",top:y+"px"}).prepend($('<div id="'+tip+'"></div>').css(setting_temp.tipcss));}if(initConfig.tidymode){jqobj.showTooltips()};}setting.tipid=tip;$.formValidator.appendValid(this.id,setting);var validobjectids=initConfig.validobjectids;if(validobjectids.indexOf("#"+this.id+" ")==-1){initConfig.validobjectids=(validobjectids==""?"#"+this.id:validobjectids+",#"+this.id);}if(!initConfig.alertmessage){if($("body [id="+tip+"]").text()==''){$.formValidator.setTipState(this,"on_show",setting.onshow);}}var srcTag=this.tagName.toLowerCase();var stype=this.type;var defaultval=setting.defaultvalue;if(defaultval){jqobj.val(defaultval);}if(srcTag=="input"||srcTag=="textarea"){jqobj.focus(function(){if(!initConfig.alertmessage){var tipjq=$("#"+tip);this.lastshowclass=tipjq.attr("class");this.lastshowmsg=tipjq.html();$.formValidator.setTipState(this,"on_focus",setting.onfocus);}if(stype=="password"||stype=="text"||stype=="textarea"||stype=="file"){}});jqobj.bind(setting.triggerevent,function(){var settings=this.settings;var returnObj=$.formValidator.oneIsValid(this.id,1);if(returnObj==null){return;}if(returnObj.ajax>=0){$.formValidator.showAjaxMessage(returnObj);}else
{var showmsg=$.formValidator.showMessage(returnObj);if(!returnObj.isvalid){var auto=setting.automodify&&(this.type=="text"||this.type=="textarea"||this.type=="file");if(auto&&!initConfig.alertmessage){alert(showmsg);$.formValidator.setTipState(this,"on_show",setting.onshow);}else
{if(initConfig.forcevalid||setting.forcevalid){alert(showmsg);this.focus();}}}}});}else if(srcTag=="select"){jqobj.bind("focus",function(){if(!initConfig.alertmessage){$.formValidator.setTipState(this,"on_focus",setting.onfocus);}});jqobj.bind("blur",function(){jqobj.trigger("change")});jqobj.bind("change",function(){var returnObj=$.formValidator.oneIsValid(this.id,1);if(returnObj==null){return;}if(returnObj.ajax>=0){$.formValidator.showAjaxMessage(returnObj);}else{$.formValidator.showMessage(returnObj);}});}});};$.fn.inputValidator=function(controlOptions){var settings={isvalid:false,min:0,max:99999999999999,type:"size",onerror:"输入错误",validatetype:"InputValidator",empty:{leftempty:true,rightempty:true,leftemptyerror:null,rightemptyerror:null},wideword:true};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings);});};$.fn.compareValidator=function(controlOptions){var settings={isvalid:false,desid:"",operateor:"=",onerror:"输入错误",validatetype:"CompareValidator"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings);});};$.fn.regexValidator=function(controlOptions){var settings={isvalid:false,regexp:"",param:"i",datatype:"string",onerror:"输入的格式不正确",validatetype:"RegexValidator"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings);});};$.fn.functionValidator=function(controlOptions){var settings={isvalid:true,fun:function(){this.isvalid=true;},validatetype:"FunctionValidator",onerror:"输入错误"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings);});};$.fn.ajaxValidator=function(controlOptions){var settings={isvalid:false,lastValid:"",type:"GET",url:"",addidvalue:true,datatype:"html",data:"",async:true,cache:false,beforesend:function(){return true;},success:function(){return true;},complete:function(){},processdata:false,error:function(){},buttons:null,onerror:"服务器校验没有通过",onwait:"正在等待服务器返回数据",validatetype:"AjaxValidator"};controlOptions=controlOptions||{};$.extend(true,settings,controlOptions);return this.each(function(){$.formValidator.appendValid(this.id,settings);});};$.fn.defaultPassed=function(onshow){return this.each(function(){var settings=this.settings;for(var i=1;i<settings.length;i++){settings[i].isvalid=true;if(!$.formValidator.getInitConfig(settings[0].validatorgroup).alertmessage){var ls_style=onshow?"on_show":"on_correct";$.formValidator.setTipState(this,ls_style,settings[0].oncorrect);}}});};$.fn.unFormValidator=function(unbind){return this.each(function(){this.settings[0].bind=!unbind;if(unbind){$("#"+this.settings[0].tipid).hide();}else{$("#"+this.settings[0].tipid).show();}});};$.fn.showTooltips=function(){if($("body [id=fvtt]").length==0){fvtt=$("<div id='fvtt' style='position:absolute;z-index:56002'></div>");$("body").append(fvtt);fvtt.before("<iframe src='about:blank' class='fv_iframe' scrolling='no' frameborder='0'></iframe>");}return this.each(function(){jqobj=$(this);s=$("<span class='top' id=fv_content style='display:block'></span>");b=$("<b class='bottom' style='display:block' />");this.tooltip=$("<span class='fv_tooltip' style='display:block'></span>").append(s).append(b).css({"filter":"alpha(opacity:95)","KHTMLOpacity":"0.95","MozOpacity":"0.95","opacity":"0.95"});jqobj.mouseover(function(e){$("#fvtt").append(this.tooltip);$("#fv_content").html(this.Tooltip);$.formValidator.localTooltip(e);});jqobj.mouseout(function(){$("#fvtt").empty();});jqobj.mousemove(function(e){$("#fv_content").html(this.Tooltip);$.formValidator.localTooltip(e);});});}})(jQuery);function getElementWidth(objectId){x=document.getElementById(objectId);return x.offsetWidth;}function getTopLeft(objectId){obj=new Object();o=document.getElementById(objectId);oLeft=o.offsetLeft;oTop=o.offsetTop;while(o.offsetParent!=null){oParent=o.offsetParent;oLeft+=oParent.offsetLeft;oTop+=oParent.offsetTop;o=oParent;}obj.top=oTop;obj.left=oLeft;return obj;}

/**
 * jquery.cookie.js
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1;}
var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
expires='; expires='+date.toUTCString();}
var path=options.path?'; path='+options.path:'';var domain=options.domain?'; domain='+options.domain:'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}
return cookieValue;}};;

/**
 * Boxy 0.1.4 - Facebook-style dialog, with frills
 *
 * (c) 2008 Jason Frame
 * Licensed under the MIT License (LICENSE)
 */
jQuery.fn.boxy=function(options){options=options||{};return this.each(function(){var node=this.nodeName.toLowerCase(),self=this;if(node=='a'){jQuery(this).click(function(){var active=Boxy.linkedTo(this),href=this.getAttribute('href'),localOptions=jQuery.extend({actuator:this,title:this.title},options);if(active){active.show();}else if(href.indexOf('#')>=0){var content=jQuery(href.substr(href.indexOf('#'))),newContent=content.clone(true);content.remove();localOptions.unloadOnHide=false;new Boxy(newContent,localOptions);}else{if(!localOptions.cache)localOptions.unloadOnHide=true;Boxy.load(this.href,localOptions);}
return false;});}else if(node=='form'){jQuery(this).bind('submit.boxy',function(){Boxy.confirm(options.message||'Please confirm:',function(){jQuery(self).unbind('submit.boxy').submit();});return false;});}});};function Boxy(element,options){this.boxy=jQuery(Boxy.WRAPPER);jQuery.data(this.boxy[0],'boxy',this);this.visible=false;this.options=jQuery.extend({},Boxy.DEFAULTS,options||{});if(this.options.modal){this.options=jQuery.extend(this.options,{center:true,draggable:false});}
if(this.options.actuator){jQuery.data(this.options.actuator,'active.boxy',this);}
this.setContent(element||"<div></div>");this._setupTitleBar();this.boxy.css('display','none').appendTo(document.body);this.toTop();if(this.options.fixed){if(jQuery.browser.msie&&jQuery.browser.version<7){this.options.fixed=false;}else{this.boxy.addClass('fixed');}}
if(this.options.center&&Boxy._u(this.options.x,this.options.y)){this.center();}else{this.moveTo(Boxy._u(this.options.x)?this.options.x:Boxy.DEFAULT_X,Boxy._u(this.options.y)?this.options.y:Boxy.DEFAULT_Y);}
if(this.options.show)this.show();};Boxy.EF=function(){};jQuery.extend(Boxy,{WRAPPER:"<table cellspacing='0' cellpadding='0' border='0' class='boxy-wrapper'>"+"<tr><td class='top-left'></td><td class='top'></td><td class='top-right'></td></tr>"+"<tr><td class='left'></td><td class='boxy-inner'></td><td class='right'></td></tr>"+"<tr><td class='bottom-left'></td><td class='bottom'></td><td class='bottom-right'></td></tr>"+"</table>",DEFAULTS:{title:null,closeable:true,draggable:true,clone:false,actuator:null,center:true,show:true,modal:false,fixed:true,closeText:'[close]',unloadOnHide:false,clickToFront:false,behaviours:Boxy.EF,afterDrop:Boxy.EF,afterShow:Boxy.EF,afterHide:Boxy.EF,beforeUnload:Boxy.EF},DEFAULT_X:50,DEFAULT_Y:50,zIndex:1337,dragConfigured:false,resizeConfigured:false,dragging:null,load:function(url,options){options=options||{};var ajax={url:url,type:'GET',dataType:'html',cache:false,success:function(html){html=jQuery(html);if(options.filter)html=jQuery(options.filter,html);new Boxy(html,options);}};jQuery.each(['type','cache'],function(){if(this in options){ajax[this]=options[this];delete options[this];}});jQuery.ajax(ajax);},get:function(ele){var p=jQuery(ele).parents('.boxy-wrapper');return p.length?jQuery.data(p[0],'boxy'):null;},linkedTo:function(ele){return jQuery.data(ele,'active.boxy');},alert:function(message,callback,options){return Boxy.ask(message,['OK'],callback,options);},confirm:function(message,after,options){return Boxy.ask(message,['OK','Cancel'],function(response){if(response=='OK')after();},options);},ask:function(question,answers,callback,options){options=jQuery.extend({modal:true,closeable:false},options||{},{show:true,unloadOnHide:true});var body=jQuery('<div></div>').append(jQuery('<div class="question"></div>').html(question));var map={},answerStrings=[];if(answers instanceof Array){for(var i=0;i<answers.length;i++){map[answers[i]]=answers[i];answerStrings.push(answers[i]);}}else{for(var k in answers){map[answers[k]]=k;answerStrings.push(answers[k]);}}
var buttons=jQuery('<form class="answers"></form>');buttons.html(jQuery.map(answerStrings,function(v){return"<input type='button' value='"+v+"' />";}).join(' '));jQuery('input[type=button]',buttons).click(function(){var clicked=this;Boxy.get(this).hide(function(){if(callback)callback(map[clicked.value]);});});body.append(buttons);new Boxy(body,options);},isModalVisible:function(){return jQuery('.boxy-modal-blackout').length>0;},_u:function(){for(var i=0;i<arguments.length;i++)
if(typeof arguments[i]!='undefined')return false;return true;},_handleResize:function(evt){var d=jQuery(document);jQuery('.boxy-modal-blackout').css('display','none').css({width:d.width(),height:d.height()}).css('display','block');},_handleDrag:function(evt){var d;if(d=Boxy.dragging){d[0].boxy.css({left:evt.pageX-d[1],top:evt.pageY-d[2]});}},_nextZ:function(){return Boxy.zIndex++;},_viewport:function(){var d=document.documentElement,b=document.body,w=window;return jQuery.extend(jQuery.browser.msie?{left:b.scrollLeft||d.scrollLeft,top:b.scrollTop||d.scrollTop}:{left:w.pageXOffset,top:w.pageYOffset},!Boxy._u(w.innerWidth)?{width:w.innerWidth,height:w.innerHeight}:(!Boxy._u(d)&&!Boxy._u(d.clientWidth)&&d.clientWidth!=0?{width:d.clientWidth,height:d.clientHeight}:{width:b.clientWidth,height:b.clientHeight}));}});Boxy.prototype={estimateSize:function(){this.boxy.css({visibility:'hidden',display:'block'});var dims=this.getSize();this.boxy.css('display','none').css('visibility','visible');return dims;},getSize:function(){return[this.boxy.width(),this.boxy.height()];},getContentSize:function(){var c=this.getContent();return[c.width(),c.height()];},getPosition:function(){var b=this.boxy[0];return[b.offsetLeft,b.offsetTop];},getCenter:function(){var p=this.getPosition();var s=this.getSize();return[Math.floor(p[0]+s[0]/2),Math.floor(p[1]+s[1]/2)];},getInner:function(){return jQuery('.boxy-inner',this.boxy);},getContent:function(){return jQuery('.boxy-content',this.boxy);},setContent:function(newContent){newContent=jQuery(newContent).css({display:'block'}).addClass('boxy-content');if(this.options.clone)newContent=newContent.clone(true);this.getContent().remove();this.getInner().append(newContent);this._setupDefaultBehaviours(newContent);this.options.behaviours.call(this,newContent);return this;},moveTo:function(x,y){this.moveToX(x).moveToY(y);return this;},moveToX:function(x){if(typeof x=='number'){if(x<5){x=5;}
this.boxy.css({left:x});}
else this.centerX();return this;},moveToY:function(y){if(typeof y=='number'){if(y<15){y=15;}
this.boxy.css({top:y});}
else this.centerY();return this;},centerAt:function(x,y){var s=this[this.visible?'getSize':'estimateSize']();if(typeof x=='number')this.moveToX(x-s[0]/2);if(typeof y=='number')this.moveToY(y-s[1]/2);return this;},centerAtX:function(x){return this.centerAt(x,null);},centerAtY:function(y){return this.centerAt(null,y);},center:function(axis){var v=Boxy._viewport();var o=this.options.fixed?[0,0]:[v.left,v.top];if(!axis||axis=='x')this.centerAt(o[0]+v.width/2,null);if(!axis||axis=='y')this.centerAt(null,o[1]+v.height/2);return this;},centerX:function(){return this.center('x');},centerY:function(){return this.center('y');},resize:function(width,height,after){if(!this.visible)return;var bounds=this._getBoundsForResize(width,height);this.boxy.css({left:bounds[0],top:bounds[1]});this.getContent().css({width:bounds[2],height:bounds[3]});if(after)after(this);return this;},tween:function(width,height,after){if(!this.visible)return;var bounds=this._getBoundsForResize(width,height);var self=this;this.boxy.stop().animate({left:bounds[0],top:bounds[1]});this.getContent().stop().animate({width:bounds[2],height:bounds[3]},function(){if(after)after(self);});return this;},isVisible:function(){return this.visible;},show:function(){if(this.visible)return;if(this.options.modal){var self=this;if(!Boxy.resizeConfigured){Boxy.resizeConfigured=true;jQuery(window).resize(function(){Boxy._handleResize();});}
this.modalBlackout=jQuery('<div class="boxy-modal-blackout"></div>').css({zIndex:Boxy._nextZ(),opacity:0.7,width:jQuery(document).width(),height:jQuery(document).height()}).appendTo(document.body);this.toTop();if(this.options.closeable){jQuery(document.body).bind('keypress.boxy',function(evt){var key=evt.which||evt.keyCode;if(key==27){self.hide();jQuery(document.body).unbind('keypress.boxy');}});}}
this.boxy.stop().css({opacity:1}).show();this.visible=true;this._fire('afterShow');return this;},hide:function(after){if(!this.visible)return;var self=this;if(this.options.modal){jQuery(document.body).unbind('keypress.boxy');this.modalBlackout.animate({opacity:0},function(){jQuery(this).remove();});}
this.boxy.stop().animate({opacity:0},300,function(){self.boxy.css({display:'none'});self.visible=false;self._fire('afterHide');if(after)after(self);if(self.options.unloadOnHide)self.unload();});return this;},toggle:function(){this[this.visible?'hide':'show']();return this;},hideAndUnload:function(after){this.options.unloadOnHide=true;this.hide(after);return this;},unload:function(){this._fire('beforeUnload');this.boxy.remove();if(this.options.actuator){jQuery.data(this.options.actuator,'active.boxy',false);}},toTop:function(){this.boxy.css({zIndex:Boxy._nextZ()});return this;},getTitle:function(){return jQuery('> .title-bar h2',this.getInner()).html();},setTitle:function(t){jQuery('> .title-bar h2',this.getInner()).html(t);return this;},_getBoundsForResize:function(width,height){var csize=this.getContentSize();var delta=[width-csize[0],height-csize[1]];var p=this.getPosition();return[Math.max(p[0]-delta[0]/2,0),Math.max(p[1]-delta[1]/2,0),width,height];},_setupTitleBar:function(){if(this.options.title){var self=this;var tb=jQuery("<div class='title-bar'></div>").html("<h2>"+this.options.title+"</h2>");if(this.options.closeable){tb.append(jQuery("<a href='#' class='close'></a>").html(this.options.closeText));}
if(this.options.draggable){tb[0].onselectstart=function(){return false;}
tb[0].unselectable='on';tb[0].style.MozUserSelect='none';if(!Boxy.dragConfigured){jQuery(document).mousemove(Boxy._handleDrag);Boxy.dragConfigured=true;}
tb.mousedown(function(evt){self.toTop();Boxy.dragging=[self,evt.pageX-self.boxy[0].offsetLeft,evt.pageY-self.boxy[0].offsetTop];jQuery(this).addClass('dragging');}).mouseup(function(){jQuery(this).removeClass('dragging');Boxy.dragging=null;self._fire('afterDrop');});}
this.getInner().prepend(tb);this._setupDefaultBehaviours(tb);}},_setupDefaultBehaviours:function(root){var self=this;if(this.options.clickToFront){root.click(function(){self.toTop();});}
jQuery('.close',root).click(function(){self.hide();return false;}).mousedown(function(evt){evt.stopPropagation();});},_fire:function(event){this.options[event].call(this);}};
