{"version":3,"sources":["crypto.js","doT.js","icheck.js","jquery_extend.js","js_extend.js","lambda.js","state_machine.js","jquery.nstSlider.js","tipso.js","resizeEnd.js","base.js","table.js","upload.js","modal.js","page_extend.js","service.js","observer.js","firms.js","slider.js","validator.js","autoComplete.js","area_select.js","org.js","init.js","page.js","ready.js"],"names":["CryptoJS","u","p","d","l","lib","s","t","Base","extend","a","prototype","this","c","mixIn","hasOwnProperty","init","$super","apply","arguments","create","toString","clone","r","WordArray","words","sigBytes","length","v","stringify","concat","e","j","clamp","k","push","ceil","call","slice","random","w","enc","Hex","join","parse","parseInt","substr","b","Latin1","String","fromCharCode","charCodeAt","x","Utf8","decodeURIComponent","escape","Error","unescape","encodeURIComponent","q","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","blockSize","max","_minBufferSize","min","_doProcessBlock","splice","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","n","HMAC","algo","Math","Base64","_map","charAt","indexOf","abs","sin","MD5","_hash","z","A","B","C","D","E","f","m","g","h","floor","HmacMD5","EvpKDF","keySize","hasher","iterations","compute","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","_xformMode","_key","process","ivSize","encrypt","decrypt","StreamCipher","mode","_iv","_prevBlock","BlockCipherMode","Encryptor","Decryptor","_cipher","processBlock","encryptBlock","decryptBlock","CBC","pad","Pkcs7","unpad","BlockCipher","padding","iv","_mode","CipherParams","formatter","format","OpenSSL","ciphertext","salt","SerializableCipher","key","algorithm","_parse","kdf","execute","PasswordBasedCipher","F","G","y","H","AES","_nRounds","_keySchedule","_invKeySchedule","_doCryptBlock","CFB","AnsiX923","sqrt","pow","SHA256","HmacSHA256","replace","define","substring","defineParams","arg","text","Function","use","useParams","__exp","RegExp","version","templateSettings","evaluate","interpolate","encode","conditional","iterate","varname","strip","append","selfcontained","doNotSkipEncoded","template","compile","encodeHTMLSource","&","<",">","\"","'","/","eval","module","exports","amd","doT","start","end","startencode","_encodeHTML","console","log","test","_indeterminate","_update","checked","disabled","indeterminate","attr","_determinate","_callback","_type","parent","name","closest","find","each","data","_cursor","css","_add","_remove","html","off","unwrap","_label","id","add","o","toUpperCase","_click","_touch","_mobile","navigator","userAgent","fn","is","toLowerCase","isFunction","checkedClass","disabledClass","indeterminateClass","labelHover","handle","hoverClass","focusClass","activeClass","labelHoverClass","increaseArea","position","top","left","display","width","height","margin","background","border","opacity","visibility","checkboxClass","radioClass","aria","wrap","insert","appendTo","inheritClass","className","inheritID","on","target","stopPropagation","keyCode","window","jQuery","Zepto","$","cookie","value","options","cookieValue","document","cookies","split","i","trim","expires","toUTCString","date","Date","setTime","getTime","path","domain","secure","mask","opt","defaults","$find","divHtml","$text","unmask","fadeOut","remove","check","$this","reg","val","_reg","formatMoney","mVal","iAccuracy","funZero","iVal","iLen","sTmp","sBuf","Array","iLoop","fTmp","iFra","iInt","aBuf","bPositive","isNaN","parseFloat","unshift","retu","unformatMoney","sVal","JSON","quote","escapable","lastIndex","meta","str","gap","toJSON","rep","isFinite","indent","Object","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","cx","\b","\t","\n","\f","\r","\\","reviver","walk","SyntaxError","Format","fmt","M+","getMonth","d+","getDate","H+","getHours","m+","getMinutes","s+","getSeconds","q+","f+","getMilliseconds","$1","getFullYear","DateAdd","strInterval","dtTmp","padLeft","padChar","ret","lengthEx","lambda","items","type","_compile","_lambda","__","_","isObj","undefined","its","count","map","result","index","item","first","newArr","findIndex","sortBy","clause","tempArray","sort","obj","[object Array]","[object Boolean]","[object Date]","[object Function]","[object Number]","[object Object]","[object RegExp]","[object String]","condition","conditionStr","tempStr","tempItem","tempIndex","trimLeft","trimRight","rnotwhite","noConflict","deep","root","StateMachine","VERSION","Result","SUCCEEDED","NOTRANSITION","CANCELLED","PENDING","INVALID_TRANSITION","PENDING_TRANSITION","INVALID_CALLBACK","WILDCARD","ASYNC","initial","state","terminal","fsm","events","callbacks","transitions","from","to","event","buildEvent","current","can","transition","cannot","isFinished","error","args","msg","defer","doCallback","func","beforeAnyEvent","afterAnyEvent","leaveAnyState","enterAnyState","changeState","beforeThisEvent","afterThisEvent","leaveThisState","enterThisState","beforeEvent","afterEvent","leaveState","specific","general","enterState","cancel","leave","require","self","_$current_slider","_is_mousedown","_original_mousex","_is_left_grip","_before_keydown_value","_before_keydown_pixel","_before_keyup_value","_before_keyup_pixel","_naked_bar_deltas","_methods","setNakedBarDelta","handleWidth","toEndWidth","toBeginLeft","toBeginWidth","getSliderValuesAtPositionPx","leftPx","rightPx","leftPxInValue","rightPxInValue","pixel_to_value_mapping_func","getSliderWidthPx","inverse_rangemap_0_to_n","validateAndMoveGripsToPx","nextLeftGripPositionPx","nextRightGripPositionPx","draggableAreaLengthPx","prevMin","prevMax","set_position_from_px","refresh_grips_style","notify_changed_implicit","updateAriaAttributes","settings","$leftGrip","left_grip_selector","$rightGrip","right_grip_selector","methods","get_current_min_value","get_current_max_value","round","getGripPositionPx","$grip","getLeftGripPositionPx","getRightGripPositionPx","sliderWidthPx","rangemap_0_to_n","getLeftGripWidth","outerWidth","getRightGripWidth","binarySearchValueToPxCompareFunc","binarySearch","array","searchElement","getElementFunc","compareFunc","currentIndex","currentElement","minIndex","maxIndex","lt_eq_gt","haveLimits","lowerLimit","upperLimit","highlight","highlightedRangeMin","highlightedRangeMax","curMin","curMax","highlightGripClass","grip_class","removeClass","addClass","set_position_from_val","cur_min","cur_max","range_min","range_max","value_to_px","set_handles_at_px","valueLeftRight","value_bar_selector","populateNakedBarDeltas","drag_start_func_touch","$left_grip","$right_grip","is_touch","original_event","originalEvent","touch","touches","curY","pageY","curX","pageX","ydelta","offset","slider_left","xldelta","xrdelta","touch_tolerance_value_bar_y","touch_tolerance_value_bar_x","preventDefault","drag_start_func","animating_css_class","is_enabled","$target","targetIsPanelSelector","panel_selector","rleft","ldist","rdist","ldelta","rdelta","leftGripPositionPx","lleft","rightGripPositionPx","user_drag_start_callback","prev_min","prev_max","drag_move_func_touch","drag_move_func","absoluteMousePosition","delta","half_a_grip_width","drag_area_start","drag_area_end","crossable_handles","ignore_positive_delta","ignore_negative_delta","drag_end_func_touch","drag_end_func","notify_mouse_up_implicit","get_rounding_for_value","rounding","rounding_ranges","roundingIdx","range","search","currentIdx","lastIdx","isLeftGrip","current_min_value","current_max_value","didValuesChange","user_mouseup_callback","cause","force","round_value_according_to_rounding","notify_changed_explicit","value_changed_callback","validate_params","min_value","max_value","lower_limit","upper_limit","have_limits","rangeMin","rangeMax","relativeMapping","teardown","removeData","unbind","$document","bind","$container","valueMin","valueMax","set_rounding","left_grip","has_right_grip","which","setAtPixel","searchUntil","evt","moveHandleBasedOnKeysFunc","nextLeft","nextRight","left_grip_width","right_grip_width","bStickToSides","set_range","step_histogram","set_step_histogram","get_range_min","get_range_max","currentMin","currentMax","is_handle_to_left_extreme","is_handle_to_right_extreme","refresh","lastStepHistogram","highlightRangeMin","highlightRangeMax","highlight_range","disable","enable","set_position","histogram","unset_step_histogram","nbuckets","histogram_sum","coeff","cdf","cdf_x","pixel_to_value_lookup","last_filled","last_price_for_cdf_bucket","cdf_bucket_count","fill_up_to_px","shift","price_for_cdf_bucket","fill_tot","diff","next_price_for_cdf_bucket","pixel_to_value_mapping","pixel","value_to_pixel_mapping","suggestedPixel","oldMin","oldMax","barWidth","$highlightPanel","parseJSON","roundings_array","rounding_value","rounding_range","get_rounding","increment","increment_int","rounded","value_to_pixel_mapping_func","__name__","method","Plugin","element","_defaults","_name","pluginName","_title","mouseon","isTouchSupported","msTouchEnabled","msMaxTouchPoints","generalTouchEnabled","createElement","realHeight","outerHeight","reposition","thisthat","pos_top","pos_left","tipso_bubble","tooltip","$e","$win","arrow","marginLeft","scrollTop","border-bottom-color","border-top-color","marginTop","scrollLeft","border-right-color","border-left-color","offsetX","offsetY","speed","delay","content","ajaxContentUrl","useTitle","onBeforeShow","onShow","onHide","theme","removeAttr","show","hide","mouseTimeout","clearTimeout","setTimeout","resize","timeout","stop","fadeIn","destroy","title","ajax","url","async","responseText","cached","err","returns","instance","plugin","chicago","Chicago","utils","now","uid","prefix","number","object","debounce","wait","immediate","context","later","callNow","load","res","req","onload","config","resources","base","resource","_c","win","doc","$doc","resizeend","setup","special","timer","handler","trigger","callback","JunboCore","jc","Core","httpRoot","location","host","org","app","flow","flow2","vc","dataCenter","useRoot","rootFlag","debug","autoHideLayer","$module","$$this","defaultUrl","$$module","tmpl","template_id","content_id","tmplByStr","tmplHtml","evalText","getElementById","urlEncode","param","paramStr","urlDecode","urls","href","match","di","htmlEncode","getType","htmlDecode","createView","para","render","set","flag","get","v_1","v_2","getUrlVar","getUrlVars","tool","v1","v2","v3","def","hash","vars","hashes","getTimespan","getRandom","combineUrl","url1","url2","u1C","u2C","combineXxUrl","combineJbUrl","combineRoot","type2","release","url_debug","program","time","time_str","_str","Tool","Check","_this","reg_account","reg_long_text","reg_long_text2","reg_long_text3","reg_ec","reg_number","reg_chinese","checkInput","tips","showTips","checkAccount","checkLongText","checkLongText2","checkLongText3","checkEc","checkNumber","checkChinese","checkEmail","align","dialog","quickClose","autofocus","ele","$ele","focus","close","WrapRed","len","w1","w2","color","wrapRed","login","code","par","okValue","ok","cancelValue","showModal","resetDialog","dia","cb","button","removeEventListener","addEventListener","browser","sys","ua","_isWeiXin","isWeiXin","isIE","ieVersion","supportCSS3","documentElement","style","support","placeholder","input","transform","attachEvent","elm","evType","useCapture","addEvent","removeEvent","detachEvent","guid","counter","ran","list","mobile","Mobile","lt_mobile","dx_mobile","phone","grep","is_mmPhone","is_ltPhone","is_dxPhone","is_phone","clipboard","ClipBoard","copy","prompt","junboCore","mark","bodyId","footer","rowTemplate","renderFirst","isRendered","__this","forceFresh","findNoName","columns","exp","select","optionTmpl","selects","selectValues","Id","SelectText","Index","Data","selectBind","e1","e2","textSpl","sel","Value","Text","Bind","Selected","e22","bindFiled","columnStyle","findUpDown","updown","tmp","createTable","Pagination","view","pageConfig","table","pager","pagerId","pageCounter","totalId","itemCounter","itemCountId","goButton","goButtonId","inputPage","inputId","$noResult","next","$noResultMsg","paraConfig","click","gotoPage","defaultPageConfig","pageCount","pageItemCount","pageIndex","pagePer","setConfig","conf","setPage","tC","pC","setCount","noResult","hasClass","twbsPagination","totalPages","visiblePages","last","prev","onPageClick","page","startPage","getPageIndex","totalCount","itemCount","pI","pager2","setPageIndex","pagePerFiled","pageIndexFiled","combine","getPagePer","setDefault","reSetPageIndex","Table","core","tableView","$el","userPara","successFunc","errorFunc","needRender","needRenderFunc","pagination","Records","bindTrField","trBindFiled","observer","eve","cls","_cls","classList","$t","$o","$up","$down","$p","field","siblings","is_up","is_down","per","_ajax","setTitle","getSelect","$k","fis","getSelectDomByIndex","resetSelectState","getSelects","mutexSelect","sels","values","$cur","$cur_sel","ii","kk","resetUpdown","empty","setActive","setDisabled","setData","getValue","convertList","indexList","blockStr","pushData","getData","setFoot","renderCompleted","cols","columns_length","columns_length_real","columns_sub","sub_length","columns_merge","list_index","enter_sub","ci","break_count","si","setName","column","param_type","has_changed","cachedIndex","_index","setBindField","successfunc","errorfunc","mock","beforeAjax","Service","postUrl","Code","ignoreCode","receive","TotalCount","dataFormat","listFiled","countFiled","Msg","callBack","rootId","setPostUrl","deleteDate","getTr","clickId","getPara","hideColumn","col","style_backup","invalidClass","highlightClass","buttons","setClassName","classes","prop","columns-sub-show","column_list","sub","createUpload","Uploadify","auto","divId","inputClass","service","servicePara","folder","fileType","fileTypeDesc","mimeTypes","fileSizeLimit","buttonClass","buttonText","buttonDisabled","success","progress","fileQueued","uploadCompleted","beforeFileQueued","$input","swf","uploader","WebUploader","server","pick","disableGlobalDnd","accept","extensions","fileSingleSizeLimit","file","File","percentage","reponse","reason","upload","getUploader","setServer","option","files","getFiles","cancelFile","alert","createModal","Modal","getCenterY","bodyH","divH","$id","isClosing","Closed","overlay","closeClass","closeClassPlus","autoClose","shown","closed","$overlay","mask_zIndex","modalCount","z-index","mainSize","closeButton","scss3","setPosition","modal_width","margin-left","get$","topCenter","fadeTo","isFunctionCb","back","closeOpr","_p","btn","$b","flowConvert","toFixed","num","bit","zero","bits","string","toDate","classExt","DEF_ENTITY","def_entity","adapt","source","flagEntity","isArray","li_s","getpara","listItem","scrollTo","parentOffset","animate","CallService","clientVer","defExt","dataStrPlus","containKey","defaultAesKey","is1301","times","cacheKey","getCacheKey","GetRandomPlainKey","businessContent","callbackFunc","userEntity","OrgId","channelId","bJson","GetBusinessJsonStr","rcValue","GetAesEncryptContent","sourceUrl","isMock","nowDate","dataStr","paraStr","getUserTime","userTime","startTime","resolve","Deferred","mockUrls","Mock","dataType","Flag","err_msg","err_result","GetAesDecryptContent","status","S","ParaStr","onclose","M","statusText","Whole","ajaxN","ErrorMsg","postRText","successfn","errorfn","postData","$chars","maxPos","plainKey","cookiekey","GetUserRamdonKey","srcs","encrypted","responseData","decryptedData","userKey","createService","loginCached","user","getUrl","redirect","loginUrl","last_href","pathname","ob","caller","subscribers","subId","callee","Firms","useAnimate","firms","State","isReseting","cacheId","isAnimating","selected","selectAll","pid","initHtml","selectFunc","inited","waitadd","entity","children","bindData","childCount","rowTitle","$html","addFilm","toggleWrap","toggle","$lbl","getBindData","iCheck","searchFirm","searchBindData","childChecked","parents","allChecked","allId","binds","$wrap","$pinput","resetAllCheckedState","reseting","actionSelect","allCount","checkedCount","$all","indeter","isMain","findParentIndex","mainChild","findIndex2","childItem","findItemIndex","parentData","findIndexxx","oprData","result_flag","toHtml","fms","$firm","fi","addFirm","getSelectedFirms","findFirm","findList","$parent","findLi","re","generateId","slider","Slider","$sliderPanel","$slider","$current","isLoaded","cur","nolimit","twoHand","limitValue","nstSliderInit","setPos","nstSlider","getPos","leftValue","rightValue","resetCurPos","cw","Validator","validator","val_min","val_max","vali","DEFAULT_MSG","getEleVal","if_ele","getAttr","if_value","required","fail_msg","fail_align","vali_func","getMsg","info",1,2,10,20,21,30,40,41,42,50,51,52,60,70,80,"MSG","fill","dropkick","selector","$require","validator_fail","fail_ele","checkPara","detail","validator_email","validator_phone","strPhone","phoneRegWithArea","phoneRegNoArea","validator_url","validator_number","isnumber","validator_digits","validator_chinese","validator_english","validator_chinese_english_num","jbFill","AutoSearch","searchName","business","targetCls","parentCls","hiddenCls","searchForm","hoverBg","outBg","isSelectHide","maxCount","manySelect","renderHTMLCallback","closedCallback","propertyName","propertyId","propertyBusiness","cache","oldIndex","inputArrs","constructor","_config","_cache","targetParent","keyup","targetVal","pos","elemWidth","_inputTop","curParents","-webkit-border-radius","-moz-border-radius","border-radius","-webkit-box-shadow","-moz-box-shadow","box-shadow","curIndex","_keyCode","_keyUpAndDown","_doPostAction","blur","tagParent","tagCls","stylesheet","_addStyleSheet","plen","curAttr","embId","_unique","_manySelect","pCls","_createDiv","_closed","_hover","curVal","arrs","ilen","PageRow","StartRow","done","proper","ress","_renderHTML","_executeClick","lastPost","renderRet","bindName","bindId","border-bottom","pheight","overflow","dataAttr","hover","padding-left","newArrs","_isString","refWin","cssText","elem","styleSheet","appendChild","createTextNode","destory","autoSearch","AreaSelect","tmpl_sel","dataSource","areaData","areaSel","$panel","$sel","$tree","tree","allloaded","wholeCount","innerCallChecked","autoSort","treeId","useOrigin","treeInit","ajaxProtoType","ajaxData","jstree","check_callback","_t","multiple","themes","icons","plugins","changed.jstree","node","addSel","removeSel","render_selected","select_all","child","get_node","n_tmp","innerChild","s1","s2","promise","remove_all","deselect_all","load_all","loaded","load_node","open_node.jstree","get_checked","check_node","findAll","children_1","findChild","findChildNode","fii","findChildIndex","fai","uncheck_node","children_2","hideCount","temp","dtd","Name","Provinces","createArea","initData","city_no_child","1100","1200","3100","5000","reject","getProvince","getCity","showMain","getSelected","area","uncheck_all","select_node","open_node","thread","setInterval","clearInterval","areaSelect","orgManage","orgmanage","createOrg","Org","_para","orgName","orgCode","bindField","showMySelf","showAll","allText","allValue","$origin","$div","OrgService","$bindValueField","useCache","$orgCode","completed","$data","querySubOrg","findShow","OrgCode","clearSelect","clearData","isClearSelect","setStatus","touchOne","index2","item_child","triggerChange","deleteByValue","find2","getSelectIndex","getIndex","refreshByIndex","refreshCompleted","findlast","findItem","$tmpl","query","getLastItem","getFirstItem","getNew","IncludeBlack","orgBack","records","OrgName","dk","tData","label","$dk","dkData","after","ling","renderOpr","tk","minWidth","autoWidth","change","fid","fc","viewInit","initPara","hostname","testUrl","pop","userInfo","userName","UName","isLogin","bindMenuEvent","findSelect","filter","isParent","childWrap","parentTitle","toggleClass","isHidden","slideDown","slideUp","menuTmpl","Area","ProvinceCode","provinceBack","ProvinceName","provinceCode","CityCode","cityBack","CityName","callBackFunc","getJSON","setOptionItems","optionView","setOption","getOptionSelected","idPara","pageInit","findMenuById","nx","menu","getMenuUrl","menuData","active","cp","opr","share","maintain","report","navMenus","company","newMenu","urlPara","a_type","child_1","urlp1","urlp2","contain","mm","nn","menus","input_limit","Limit","DataFilterModel","scrollControl","sizeControl","jquerySelector","number_reg","input_flag","$s","$s0","maxlength","limitLength","getAttribute","returnValue","maxLength","attributes","$source","types","limit","removeLimit","WaterMark","hideIfHasValue","place","onFocus","onBlur","onClick","ex","_o","parentNode","insertBefore","innerHTML","offsetHeight","lineHeight","unload","removeChild","setText","watermark","offsetTop","$menu","scroll","changeMenu","layerOut","layer","layerIn","action","icon","useService","session","initCompleted","initDoing","noInit","timeInputInit","float","ml","ctrl","getStyle","datepicker","isover","mouseover","mouseout","$next","stt","one","inputBlurInit","InputBlurModel","InputModel","nofocus","delayFunc","_msg","checkEmpty","v_root","obj_root","root_str","ss","ready","init_","currentMenu","timeOut","fail","readyInner"],"mappings":"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","file":"JunboJsUI.js","sourcesContent":["/**\r\n * JS RSA加解密封装\r\n * Created by tangfan on 2015/8/28.\r\n */\r\n/***********CryptoJS.js相关**********/\r\n/*\r\n CryptoJS v3.1.2\r\n code.google.com/p/crypto-js\r\n (c) 2009-2013 by Jeff Mott. All rights reserved.\r\n code.google.com/p/crypto-js/wiki/License\r\n */\r\nvar CryptoJS = CryptoJS || function (u, p) {\r\n var d = {}, l = d.lib = {}, s = function () {\r\n }, t = l.Base = {\r\n extend: function (a) {\r\n s.prototype = this;\r\n var c = new s;\r\n a && c.mixIn(a);\r\n c.hasOwnProperty(\"init\") || (c.init = function () {\r\n c.$super.init.apply(this, arguments)\r\n });\r\n c.init.prototype = c;\r\n c.$super = this;\r\n return c\r\n }, create: function () {\r\n var a = this.extend();\r\n a.init.apply(a, arguments);\r\n return a\r\n }, init: function () {\r\n }, mixIn: function (a) {\r\n for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]);\r\n a.hasOwnProperty(\"toString\") && (this.toString = a.toString)\r\n }, clone: function () {\r\n return this.init.prototype.extend(this)\r\n }\r\n },\r\n r = l.WordArray = t.extend({\r\n init: function (a, c) {\r\n a = this.words = a || [];\r\n this.sigBytes = c != p ? c : 4 * a.length\r\n }, toString: function (a) {\r\n return (a || v).stringify(this)\r\n }, concat: function (a) {\r\n var c = this.words, e = a.words, j = this.sigBytes;\r\n a = a.sigBytes;\r\n this.clamp();\r\n if (j % 4) for (var k = 0; k < a; k++) c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4); else if (65535 < e.length) for (k = 0; k < a; k += 4) c[j + k >>> 2] = e[k >>> 2]; else c.push.apply(c, e);\r\n this.sigBytes += a;\r\n return this\r\n }, clamp: function () {\r\n var a = this.words, c = this.sigBytes;\r\n a[c >>> 2] &= 4294967295 <<\r\n 32 - 8 * (c % 4);\r\n a.length = u.ceil(c / 4)\r\n }, clone: function () {\r\n var a = t.clone.call(this);\r\n a.words = this.words.slice(0);\r\n return a\r\n }, random: function (a) {\r\n for (var c = [], e = 0; e < a; e += 4) c.push(4294967296 * u.random() | 0);\r\n return new r.init(c, a)\r\n }\r\n }), w = d.enc = {}, v = w.Hex = {\r\n stringify: function (a) {\r\n var c = a.words;\r\n a = a.sigBytes;\r\n for (var e = [], j = 0; j < a; j++) {\r\n var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255;\r\n e.push((k >>> 4).toString(16));\r\n e.push((k & 15).toString(16))\r\n }\r\n return e.join(\"\")\r\n }, parse: function (a) {\r\n for (var c = a.length, e = [], j = 0; j < c; j += 2) e[j >>> 3] |= parseInt(a.substr(j,\r\n 2), 16) << 24 - 4 * (j % 8);\r\n return new r.init(e, c / 2)\r\n }\r\n }, b = w.Latin1 = {\r\n stringify: function (a) {\r\n var c = a.words;\r\n a = a.sigBytes;\r\n for (var e = [], j = 0; j < a; j++) e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255));\r\n return e.join(\"\")\r\n }, parse: function (a) {\r\n for (var c = a.length, e = [], j = 0; j < c; j++) e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4);\r\n return new r.init(e, c)\r\n }\r\n }, x = w.Utf8 = {\r\n stringify: function (a) {\r\n try {\r\n return decodeURIComponent(escape(b.stringify(a)))\r\n } catch (c) {\r\n throw Error(\"Malformed UTF-8 data\");\r\n }\r\n }, parse: function (a) {\r\n return b.parse(unescape(encodeURIComponent(a)))\r\n }\r\n },\r\n q = l.BufferedBlockAlgorithm = t.extend({\r\n reset: function () {\r\n this._data = new r.init;\r\n this._nDataBytes = 0\r\n }, _append: function (a) {\r\n \"string\" == typeof a && (a = x.parse(a));\r\n this._data.concat(a);\r\n this._nDataBytes += a.sigBytes\r\n }, _process: function (a) {\r\n var c = this._data, e = c.words, j = c.sigBytes, k = this.blockSize, b = j / (4 * k), b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0);\r\n a = b * k;\r\n j = u.min(4 * a, j);\r\n if (a) {\r\n for (var q = 0; q < a; q += k) this._doProcessBlock(e, q);\r\n q = e.splice(0, a);\r\n c.sigBytes -= j\r\n }\r\n return new r.init(q, j)\r\n }, clone: function () {\r\n var a = t.clone.call(this);\r\n a._data = this._data.clone();\r\n return a\r\n }, _minBufferSize: 0\r\n });\r\n l.Hasher = q.extend({\r\n cfg: t.extend(), init: function (a) {\r\n this.cfg = this.cfg.extend(a);\r\n this.reset()\r\n }, reset: function () {\r\n q.reset.call(this);\r\n this._doReset()\r\n }, update: function (a) {\r\n this._append(a);\r\n this._process();\r\n return this\r\n }, finalize: function (a) {\r\n a && this._append(a);\r\n return this._doFinalize()\r\n }, blockSize: 16, _createHelper: function (a) {\r\n return function (b, e) {\r\n return (new a.init(e)).finalize(b)\r\n }\r\n }, _createHmacHelper: function (a) {\r\n return function (b, e) {\r\n return (new n.HMAC.init(a,\r\n e)).finalize(b)\r\n }\r\n }\r\n });\r\n var n = d.algo = {};\r\n return d\r\n }(Math);\r\n(function () {\r\n var u = CryptoJS, p = u.lib.WordArray;\r\n u.enc.Base64 = {\r\n stringify: function (d) {\r\n var l = d.words, p = d.sigBytes, t = this._map;\r\n d.clamp();\r\n d = [];\r\n for (var r = 0; r < p; r += 3) for (var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++) d.push(t.charAt(w >>> 6 * (3 - v) & 63));\r\n if (l = t.charAt(64)) for (; d.length % 4;) d.push(l);\r\n return d.join(\"\")\r\n }, parse: function (d) {\r\n var l = d.length, s = this._map, t = s.charAt(64);\r\n t && (t = d.indexOf(t), -1 != t && (l = t));\r\n for (var t = [], r = 0, w = 0; w <\r\n l; w++) if (w % 4) {\r\n var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4), b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4);\r\n t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4);\r\n r++\r\n }\r\n return p.create(t, r)\r\n }, _map: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"\r\n }\r\n})();\r\n(function (u) {\r\n function p(b, n, a, c, e, j, k) {\r\n b = b + (n & a | ~n & c) + e + k;\r\n return (b << j | b >>> 32 - j) + n\r\n }\r\n\r\n function d(b, n, a, c, e, j, k) {\r\n b = b + (n & c | a & ~c) + e + k;\r\n return (b << j | b >>> 32 - j) + n\r\n }\r\n\r\n function l(b, n, a, c, e, j, k) {\r\n b = b + (n ^ a ^ c) + e + k;\r\n return (b << j | b >>> 32 - j) + n\r\n }\r\n\r\n function s(b, n, a, c, e, j, k) {\r\n b = b + (a ^ (n | ~c)) + e + k;\r\n return (b << j | b >>> 32 - j) + n\r\n }\r\n\r\n for (var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++) b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0;\r\n r = r.MD5 = v.extend({\r\n _doReset: function () {\r\n this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878])\r\n },\r\n _doProcessBlock: function (q, n) {\r\n for (var a = 0; 16 > a; a++) {\r\n var c = n + a, e = q[c];\r\n q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360\r\n }\r\n var a = this._hash.words, c = q[n + 0], e = q[n + 1], j = q[n + 2], k = q[n + 3], z = q[n + 4], r = q[n + 5], t = q[n + 6], w = q[n + 7], v = q[n + 8], A = q[n + 9], B = q[n + 10], C = q[n + 11], u = q[n + 12], D = q[n + 13], E = q[n + 14], x = q[n + 15], f = a[0], m = a[1], g = a[2], h = a[3], f = p(f, m, g, h, c, 7, b[0]), h = p(h, f, m, g, e, 12, b[1]), g = p(g, h, f, m, j, 17, b[2]), m = p(m, g, h, f, k, 22, b[3]), f = p(f, m, g, h, z, 7, b[4]), h = p(h, f, m, g, r, 12, b[5]), g = p(g, h, f, m, t, 17, b[6]), m = p(m, g, h, f, w, 22, b[7]),\r\n f = p(f, m, g, h, v, 7, b[8]), h = p(h, f, m, g, A, 12, b[9]), g = p(g, h, f, m, B, 17, b[10]), m = p(m, g, h, f, C, 22, b[11]), f = p(f, m, g, h, u, 7, b[12]), h = p(h, f, m, g, D, 12, b[13]), g = p(g, h, f, m, E, 17, b[14]), m = p(m, g, h, f, x, 22, b[15]), f = d(f, m, g, h, e, 5, b[16]), h = d(h, f, m, g, t, 9, b[17]), g = d(g, h, f, m, C, 14, b[18]), m = d(m, g, h, f, c, 20, b[19]), f = d(f, m, g, h, r, 5, b[20]), h = d(h, f, m, g, B, 9, b[21]), g = d(g, h, f, m, x, 14, b[22]), m = d(m, g, h, f, z, 20, b[23]), f = d(f, m, g, h, A, 5, b[24]), h = d(h, f, m, g, E, 9, b[25]), g = d(g, h, f, m, k, 14, b[26]), m = d(m, g, h, f, v, 20, b[27]), f = d(f, m, g, h, D, 5, b[28]), h = d(h, f,\r\n m, g, j, 9, b[29]), g = d(g, h, f, m, w, 14, b[30]), m = d(m, g, h, f, u, 20, b[31]), f = l(f, m, g, h, r, 4, b[32]), h = l(h, f, m, g, v, 11, b[33]), g = l(g, h, f, m, C, 16, b[34]), m = l(m, g, h, f, E, 23, b[35]), f = l(f, m, g, h, e, 4, b[36]), h = l(h, f, m, g, z, 11, b[37]), g = l(g, h, f, m, w, 16, b[38]), m = l(m, g, h, f, B, 23, b[39]), f = l(f, m, g, h, D, 4, b[40]), h = l(h, f, m, g, c, 11, b[41]), g = l(g, h, f, m, k, 16, b[42]), m = l(m, g, h, f, t, 23, b[43]), f = l(f, m, g, h, A, 4, b[44]), h = l(h, f, m, g, u, 11, b[45]), g = l(g, h, f, m, x, 16, b[46]), m = l(m, g, h, f, j, 23, b[47]), f = s(f, m, g, h, c, 6, b[48]), h = s(h, f, m, g, w, 10, b[49]), g = s(g, h, f, m,\r\n E, 15, b[50]), m = s(m, g, h, f, r, 21, b[51]), f = s(f, m, g, h, u, 6, b[52]), h = s(h, f, m, g, k, 10, b[53]), g = s(g, h, f, m, B, 15, b[54]), m = s(m, g, h, f, e, 21, b[55]), f = s(f, m, g, h, v, 6, b[56]), h = s(h, f, m, g, x, 10, b[57]), g = s(g, h, f, m, t, 15, b[58]), m = s(m, g, h, f, D, 21, b[59]), f = s(f, m, g, h, z, 6, b[60]), h = s(h, f, m, g, C, 10, b[61]), g = s(g, h, f, m, j, 15, b[62]), m = s(m, g, h, f, A, 21, b[63]);\r\n a[0] = a[0] + f | 0;\r\n a[1] = a[1] + m | 0;\r\n a[2] = a[2] + g | 0;\r\n a[3] = a[3] + h | 0\r\n }, _doFinalize: function () {\r\n var b = this._data, n = b.words, a = 8 * this._nDataBytes, c = 8 * b.sigBytes;\r\n n[c >>> 5] |= 128 << 24 - c % 32;\r\n var e = u.floor(a /\r\n 4294967296);\r\n n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360;\r\n n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360;\r\n b.sigBytes = 4 * (n.length + 1);\r\n this._process();\r\n b = this._hash;\r\n n = b.words;\r\n for (a = 0; 4 > a; a++) c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360;\r\n return b\r\n }, clone: function () {\r\n var b = v.clone.call(this);\r\n b._hash = this._hash.clone();\r\n return b\r\n }\r\n });\r\n t.MD5 = v._createHelper(r);\r\n t.HmacMD5 = v._createHmacHelper(r)\r\n})(Math);\r\n(function () {\r\n var u = CryptoJS, p = u.lib, d = p.Base, l = p.WordArray, p = u.algo, s = p.EvpKDF = d.extend({\r\n cfg: d.extend({\r\n keySize: 4,\r\n hasher: p.MD5,\r\n iterations: 1\r\n }), init: function (d) {\r\n this.cfg = this.cfg.extend(d)\r\n }, compute: function (d, r) {\r\n for (var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) {\r\n n && s.update(n);\r\n var n = s.update(d).finalize(r);\r\n s.reset();\r\n for (var a = 1; a < p; a++) n = s.finalize(n), s.reset();\r\n b.concat(n)\r\n }\r\n b.sigBytes = 4 * q;\r\n return b\r\n }\r\n });\r\n u.EvpKDF = function (d, l, p) {\r\n return s.create(p).compute(d,\r\n l)\r\n }\r\n})();\r\nCryptoJS.lib.Cipher || function (u) {\r\n var p = CryptoJS, d = p.lib, l = d.Base, s = d.WordArray, t = d.BufferedBlockAlgorithm, r = p.enc.Base64, w = p.algo.EvpKDF, v = d.Cipher = t.extend({\r\n cfg: l.extend(), createEncryptor: function (e, a) {\r\n return this.create(this._ENC_XFORM_MODE, e, a)\r\n }, createDecryptor: function (e, a) {\r\n return this.create(this._DEC_XFORM_MODE, e, a)\r\n }, init: function (e, a, b) {\r\n this.cfg = this.cfg.extend(b);\r\n this._xformMode = e;\r\n this._key = a;\r\n this.reset()\r\n }, reset: function () {\r\n t.reset.call(this);\r\n this._doReset()\r\n }, process: function (e) {\r\n this._append(e);\r\n return this._process()\r\n },\r\n finalize: function (e) {\r\n e && this._append(e);\r\n return this._doFinalize()\r\n }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (e) {\r\n return {\r\n encrypt: function (b, k, d) {\r\n return (\"string\" == typeof k ? c : a).encrypt(e, b, k, d)\r\n }, decrypt: function (b, k, d) {\r\n return (\"string\" == typeof k ? c : a).decrypt(e, b, k, d)\r\n }\r\n }\r\n }\r\n });\r\n d.StreamCipher = v.extend({\r\n _doFinalize: function () {\r\n return this._process(!0)\r\n }, blockSize: 1\r\n });\r\n var b = p.mode = {}, x = function (e, a, b) {\r\n var c = this._iv;\r\n c ? this._iv = u : c = this._prevBlock;\r\n for (var d = 0; d < b; d++) e[a + d] ^=\r\n c[d]\r\n }, q = (d.BlockCipherMode = l.extend({\r\n createEncryptor: function (e, a) {\r\n return this.Encryptor.create(e, a)\r\n }, createDecryptor: function (e, a) {\r\n return this.Decryptor.create(e, a)\r\n }, init: function (e, a) {\r\n this._cipher = e;\r\n this._iv = a\r\n }\r\n })).extend();\r\n q.Encryptor = q.extend({\r\n processBlock: function (e, a) {\r\n var b = this._cipher, c = b.blockSize;\r\n x.call(this, e, a, c);\r\n b.encryptBlock(e, a);\r\n this._prevBlock = e.slice(a, a + c)\r\n }\r\n });\r\n q.Decryptor = q.extend({\r\n processBlock: function (e, a) {\r\n var b = this._cipher, c = b.blockSize, d = e.slice(a, a + c);\r\n b.decryptBlock(e, a);\r\n x.call(this,\r\n e, a, c);\r\n this._prevBlock = d\r\n }\r\n });\r\n b = b.CBC = q;\r\n q = (p.pad = {}).Pkcs7 = {\r\n pad: function (a, b) {\r\n for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4) l.push(d);\r\n c = s.create(l, c);\r\n a.concat(c)\r\n }, unpad: function (a) {\r\n a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255\r\n }\r\n };\r\n d.BlockCipher = v.extend({\r\n cfg: v.cfg.extend({mode: b, padding: q}), reset: function () {\r\n v.reset.call(this);\r\n var a = this.cfg, b = a.iv, a = a.mode;\r\n if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor; else c = a.createDecryptor, this._minBufferSize = 1;\r\n this._mode = c.call(a,\r\n this, b && b.words)\r\n }, _doProcessBlock: function (a, b) {\r\n this._mode.processBlock(a, b)\r\n }, _doFinalize: function () {\r\n var a = this.cfg.padding;\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n a.pad(this._data, this.blockSize);\r\n var b = this._process(!0)\r\n } else b = this._process(!0), a.unpad(b);\r\n return b\r\n }, blockSize: 4\r\n });\r\n var n = d.CipherParams = l.extend({\r\n init: function (a) {\r\n this.mixIn(a)\r\n }, toString: function (a) {\r\n return (a || this.formatter).stringify(this)\r\n }\r\n }), b = (p.format = {}).OpenSSL = {\r\n stringify: function (a) {\r\n var b = a.ciphertext;\r\n a = a.salt;\r\n return (a ? s.create([1398893684,\r\n 1701076831]).concat(a).concat(b) : b).toString(r)\r\n }, parse: function (a) {\r\n a = r.parse(a);\r\n var b = a.words;\r\n if (1398893684 == b[0] && 1701076831 == b[1]) {\r\n var c = s.create(b.slice(2, 4));\r\n b.splice(0, 4);\r\n a.sigBytes -= 16\r\n }\r\n return n.create({ciphertext: a, salt: c})\r\n }\r\n }, a = d.SerializableCipher = l.extend({\r\n cfg: l.extend({format: b}), encrypt: function (a, b, c, d) {\r\n d = this.cfg.extend(d);\r\n var l = a.createEncryptor(c, d);\r\n b = l.finalize(b);\r\n l = l.cfg;\r\n return n.create({\r\n ciphertext: b,\r\n key: c,\r\n iv: l.iv,\r\n algorithm: a,\r\n mode: l.mode,\r\n padding: l.padding,\r\n blockSize: a.blockSize,\r\n formatter: d.format\r\n })\r\n },\r\n decrypt: function (a, b, c, d) {\r\n d = this.cfg.extend(d);\r\n b = this._parse(b, d.format);\r\n return a.createDecryptor(c, d).finalize(b.ciphertext)\r\n }, _parse: function (a, b) {\r\n return \"string\" == typeof a ? b.parse(a, this) : a\r\n }\r\n }), p = (p.kdf = {}).OpenSSL = {\r\n execute: function (a, b, c, d) {\r\n d || (d = s.random(8));\r\n a = w.create({keySize: b + c}).compute(a, d);\r\n c = s.create(a.words.slice(b), 4 * c);\r\n a.sigBytes = 4 * b;\r\n return n.create({key: a, iv: c, salt: d})\r\n }\r\n }, c = d.PasswordBasedCipher = a.extend({\r\n cfg: a.cfg.extend({kdf: p}), encrypt: function (b, c, d, l) {\r\n l = this.cfg.extend(l);\r\n d = l.kdf.execute(d,\r\n b.keySize, b.ivSize);\r\n l.iv = d.iv;\r\n b = a.encrypt.call(this, b, c, d.key, l);\r\n b.mixIn(d);\r\n return b\r\n }, decrypt: function (b, c, d, l) {\r\n l = this.cfg.extend(l);\r\n c = this._parse(c, l.format);\r\n d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt);\r\n l.iv = d.iv;\r\n return a.decrypt.call(this, b, c, d.key, l)\r\n }\r\n })\r\n}();\r\n(function () {\r\n for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++) a[c] = 128 > c ? c << 1 : c << 1 ^ 283;\r\n for (var e = 0, j = 0, c = 0; 256 > c; c++) {\r\n var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4, k = k >>> 8 ^ k & 255 ^ 99;\r\n l[e] = k;\r\n s[k] = e;\r\n var z = a[e], F = a[z], G = a[F], y = 257 * a[k] ^ 16843008 * k;\r\n t[e] = y << 24 | y >>> 8;\r\n r[e] = y << 16 | y >>> 16;\r\n w[e] = y << 8 | y >>> 24;\r\n v[e] = y;\r\n y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e;\r\n b[k] = y << 24 | y >>> 8;\r\n x[k] = y << 16 | y >>> 16;\r\n q[k] = y << 8 | y >>> 24;\r\n n[k] = y;\r\n e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1\r\n }\r\n var H = [0, 1, 2, 4, 8,\r\n 16, 32, 64, 128, 27, 54], d = d.AES = p.extend({\r\n _doReset: function () {\r\n for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++) if (j < d) e[j] = c[j]; else {\r\n var k = e[j - 1];\r\n j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24);\r\n e[j] = e[j - d] ^ k\r\n }\r\n c = this._invKeySchedule = [];\r\n for (d = 0; d < a; d++) j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>>\r\n 8 & 255]] ^ n[l[k & 255]]\r\n }, encryptBlock: function (a, b) {\r\n this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l)\r\n }, decryptBlock: function (a, c) {\r\n var d = a[c + 1];\r\n a[c + 1] = a[c + 3];\r\n a[c + 3] = d;\r\n this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s);\r\n d = a[c + 1];\r\n a[c + 1] = a[c + 3];\r\n a[c + 3] = d\r\n }, _doCryptBlock: function (a, b, c, d, e, j, l, f) {\r\n for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++) var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++], s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++], t =\r\n d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++], n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++], g = q, h = s, k = t;\r\n q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++];\r\n s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++];\r\n t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++];\r\n n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++];\r\n a[b] = q;\r\n a[b + 1] = s;\r\n a[b + 2] = t;\r\n a[b + 3] = n\r\n }, keySize: 8\r\n });\r\n u.AES = p._createHelper(d)\r\n})();\r\n\r\n/***********CryptoJS.js相关结束**********/\r\n\r\n/***********CtyptoJS mode-cfb-min.js相关******/\r\n/*\r\n CryptoJS v3.1.2\r\n code.google.com/p/crypto-js\r\n (c) 2009-2013 by Jeff Mott. All rights reserved.\r\n code.google.com/p/crypto-js/wiki/License\r\n */\r\nCryptoJS.mode.CFB = function () {\r\n function g(c, b, e, a) {\r\n var d = this._iv;\r\n d ? (d = d.slice(0), this._iv = void 0) : d = this._prevBlock;\r\n a.encryptBlock(d, 0);\r\n for (a = 0; a < e; a++) c[b + a] ^= d[a]\r\n }\r\n\r\n var f = CryptoJS.lib.BlockCipherMode.extend();\r\n f.Encryptor = f.extend({\r\n processBlock: function (c, b) {\r\n var e = this._cipher, a = e.blockSize;\r\n g.call(this, c, b, a, e);\r\n this._prevBlock = c.slice(b, b + a)\r\n }\r\n });\r\n f.Decryptor = f.extend({\r\n processBlock: function (c, b) {\r\n var e = this._cipher, a = e.blockSize, d = c.slice(b, b + a);\r\n g.call(this, c, b, a, e);\r\n this._prevBlock = d\r\n }\r\n });\r\n return f\r\n}();\r\n\r\n/***********CtyptoJS mode-cfb-min.js相关结束******/\r\n\r\n/***********CtyptoJS pad-ansix923-min.js相关******/\r\n/*\r\n CryptoJS v3.1.2\r\n code.google.com/p/crypto-js\r\n (c) 2009-2013 by Jeff Mott. All rights reserved.\r\n code.google.com/p/crypto-js/wiki/License\r\n */\r\nCryptoJS.pad.AnsiX923 = {\r\n pad: function (a, d) {\r\n var b = a.sigBytes, c = 4 * d, c = c - b % c, b = b + c - 1;\r\n a.clamp();\r\n a.words[b >>> 2] |= c << 24 - 8 * (b % 4);\r\n a.sigBytes += c\r\n }, unpad: function (a) {\r\n a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255\r\n }\r\n};\r\n\r\n\r\n/***********CtyptoJS pad-ansix923-min.js相关结束******/\r\n\r\n/***********CtyptoJS sha256.js相关******/\r\n/*\r\n CryptoJS v3.1.2\r\n code.google.com/p/crypto-js\r\n (c) 2009-2013 by Jeff Mott. All rights reserved.\r\n code.google.com/p/crypto-js/wiki/License\r\n */\r\nvar CryptoJS = CryptoJS || function (h, s) {\r\n var f = {}, t = f.lib = {}, g = function () {\r\n }, j = t.Base = {\r\n extend: function (a) {\r\n g.prototype = this;\r\n var c = new g;\r\n a && c.mixIn(a);\r\n c.hasOwnProperty(\"init\") || (c.init = function () {\r\n c.$super.init.apply(this, arguments)\r\n });\r\n c.init.prototype = c;\r\n c.$super = this;\r\n return c\r\n }, create: function () {\r\n var a = this.extend();\r\n a.init.apply(a, arguments);\r\n return a\r\n }, init: function () {\r\n }, mixIn: function (a) {\r\n for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]);\r\n a.hasOwnProperty(\"toString\") && (this.toString = a.toString)\r\n }, clone: function () {\r\n return this.init.prototype.extend(this)\r\n }\r\n },\r\n q = t.WordArray = j.extend({\r\n init: function (a, c) {\r\n a = this.words = a || [];\r\n this.sigBytes = c != s ? c : 4 * a.length\r\n }, toString: function (a) {\r\n return (a || u).stringify(this)\r\n }, concat: function (a) {\r\n var c = this.words, d = a.words, b = this.sigBytes;\r\n a = a.sigBytes;\r\n this.clamp();\r\n if (b % 4) for (var e = 0; e < a; e++) c[b + e >>> 2] |= (d[e >>> 2] >>> 24 - 8 * (e % 4) & 255) << 24 - 8 * ((b + e) % 4); else if (65535 < d.length) for (e = 0; e < a; e += 4) c[b + e >>> 2] = d[e >>> 2]; else c.push.apply(c, d);\r\n this.sigBytes += a;\r\n return this\r\n }, clamp: function () {\r\n var a = this.words, c = this.sigBytes;\r\n a[c >>> 2] &= 4294967295 <<\r\n 32 - 8 * (c % 4);\r\n a.length = h.ceil(c / 4)\r\n }, clone: function () {\r\n var a = j.clone.call(this);\r\n a.words = this.words.slice(0);\r\n return a\r\n }, random: function (a) {\r\n for (var c = [], d = 0; d < a; d += 4) c.push(4294967296 * h.random() | 0);\r\n return new q.init(c, a)\r\n }\r\n }), v = f.enc = {}, u = v.Hex = {\r\n stringify: function (a) {\r\n var c = a.words;\r\n a = a.sigBytes;\r\n for (var d = [], b = 0; b < a; b++) {\r\n var e = c[b >>> 2] >>> 24 - 8 * (b % 4) & 255;\r\n d.push((e >>> 4).toString(16));\r\n d.push((e & 15).toString(16))\r\n }\r\n return d.join(\"\")\r\n }, parse: function (a) {\r\n for (var c = a.length, d = [], b = 0; b < c; b += 2) d[b >>> 3] |= parseInt(a.substr(b,\r\n 2), 16) << 24 - 4 * (b % 8);\r\n return new q.init(d, c / 2)\r\n }\r\n }, k = v.Latin1 = {\r\n stringify: function (a) {\r\n var c = a.words;\r\n a = a.sigBytes;\r\n for (var d = [], b = 0; b < a; b++) d.push(String.fromCharCode(c[b >>> 2] >>> 24 - 8 * (b % 4) & 255));\r\n return d.join(\"\")\r\n }, parse: function (a) {\r\n for (var c = a.length, d = [], b = 0; b < c; b++) d[b >>> 2] |= (a.charCodeAt(b) & 255) << 24 - 8 * (b % 4);\r\n return new q.init(d, c)\r\n }\r\n }, l = v.Utf8 = {\r\n stringify: function (a) {\r\n try {\r\n return decodeURIComponent(escape(k.stringify(a)))\r\n } catch (c) {\r\n throw Error(\"Malformed UTF-8 data\");\r\n }\r\n }, parse: function (a) {\r\n return k.parse(unescape(encodeURIComponent(a)))\r\n }\r\n },\r\n x = t.BufferedBlockAlgorithm = j.extend({\r\n reset: function () {\r\n this._data = new q.init;\r\n this._nDataBytes = 0\r\n }, _append: function (a) {\r\n \"string\" == typeof a && (a = l.parse(a));\r\n this._data.concat(a);\r\n this._nDataBytes += a.sigBytes\r\n }, _process: function (a) {\r\n var c = this._data, d = c.words, b = c.sigBytes, e = this.blockSize, f = b / (4 * e), f = a ? h.ceil(f) : h.max((f | 0) - this._minBufferSize, 0);\r\n a = f * e;\r\n b = h.min(4 * a, b);\r\n if (a) {\r\n for (var m = 0; m < a; m += e) this._doProcessBlock(d, m);\r\n m = d.splice(0, a);\r\n c.sigBytes -= b\r\n }\r\n return new q.init(m, b)\r\n }, clone: function () {\r\n var a = j.clone.call(this);\r\n a._data = this._data.clone();\r\n return a\r\n }, _minBufferSize: 0\r\n });\r\n t.Hasher = x.extend({\r\n cfg: j.extend(), init: function (a) {\r\n this.cfg = this.cfg.extend(a);\r\n this.reset()\r\n }, reset: function () {\r\n x.reset.call(this);\r\n this._doReset()\r\n }, update: function (a) {\r\n this._append(a);\r\n this._process();\r\n return this\r\n }, finalize: function (a) {\r\n a && this._append(a);\r\n return this._doFinalize()\r\n }, blockSize: 16, _createHelper: function (a) {\r\n return function (c, d) {\r\n return (new a.init(d)).finalize(c)\r\n }\r\n }, _createHmacHelper: function (a) {\r\n return function (c, d) {\r\n return (new w.HMAC.init(a,\r\n d)).finalize(c)\r\n }\r\n }\r\n });\r\n var w = f.algo = {};\r\n return f\r\n }(Math);\r\n(function (h) {\r\n for (var s = CryptoJS, f = s.lib, t = f.WordArray, g = f.Hasher, f = s.algo, j = [], q = [], v = function (a) {\r\n return 4294967296 * (a - (a | 0)) | 0\r\n }, u = 2, k = 0; 64 > k;) {\r\n var l;\r\n a: {\r\n l = u;\r\n for (var x = h.sqrt(l), w = 2; w <= x; w++) if (!(l % w)) {\r\n l = !1;\r\n break a\r\n }\r\n l = !0\r\n }\r\n l && (8 > k && (j[k] = v(h.pow(u, 0.5))), q[k] = v(h.pow(u, 1 / 3)), k++);\r\n u++\r\n }\r\n var a = [], f = f.SHA256 = g.extend({\r\n _doReset: function () {\r\n this._hash = new t.init(j.slice(0))\r\n }, _doProcessBlock: function (c, d) {\r\n for (var b = this._hash.words, e = b[0], f = b[1], m = b[2], h = b[3], p = b[4], j = b[5], k = b[6], l = b[7], n = 0; 64 > n; n++) {\r\n if (16 > n) a[n] =\r\n c[d + n] | 0; else {\r\n var r = a[n - 15], g = a[n - 2];\r\n a[n] = ((r << 25 | r >>> 7) ^ (r << 14 | r >>> 18) ^ r >>> 3) + a[n - 7] + ((g << 15 | g >>> 17) ^ (g << 13 | g >>> 19) ^ g >>> 10) + a[n - 16]\r\n }\r\n r = l + ((p << 26 | p >>> 6) ^ (p << 21 | p >>> 11) ^ (p << 7 | p >>> 25)) + (p & j ^ ~p & k) + q[n] + a[n];\r\n g = ((e << 30 | e >>> 2) ^ (e << 19 | e >>> 13) ^ (e << 10 | e >>> 22)) + (e & f ^ e & m ^ f & m);\r\n l = k;\r\n k = j;\r\n j = p;\r\n p = h + r | 0;\r\n h = m;\r\n m = f;\r\n f = e;\r\n e = r + g | 0\r\n }\r\n b[0] = b[0] + e | 0;\r\n b[1] = b[1] + f | 0;\r\n b[2] = b[2] + m | 0;\r\n b[3] = b[3] + h | 0;\r\n b[4] = b[4] + p | 0;\r\n b[5] = b[5] + j | 0;\r\n b[6] = b[6] + k | 0;\r\n b[7] = b[7] + l | 0\r\n }, _doFinalize: function () {\r\n var a = this._data, d = a.words, b = 8 * this._nDataBytes, e = 8 * a.sigBytes;\r\n d[e >>> 5] |= 128 << 24 - e % 32;\r\n d[(e + 64 >>> 9 << 4) + 14] = h.floor(b / 4294967296);\r\n d[(e + 64 >>> 9 << 4) + 15] = b;\r\n a.sigBytes = 4 * d.length;\r\n this._process();\r\n return this._hash\r\n }, clone: function () {\r\n var a = g.clone.call(this);\r\n a._hash = this._hash.clone();\r\n return a\r\n }\r\n });\r\n s.SHA256 = g._createHelper(f);\r\n s.HmacSHA256 = g._createHmacHelper(f)\r\n})(Math);\r\n\r\n\r\n/***********CtyptoJS sha256.js相关结束******/","/**\r\n * doT模板引擎封装\r\n * Laura Doktorova https://github.com/olado/doT\r\n */\r\n(function () {\r\n function p(b, a, d) {\r\n return (\"string\" === typeof a ? a : a.toString()).replace(b.define || h, function (a, c, e, g) {\r\n 0 === c.indexOf(\"def.\") && (c = c.substring(4));\r\n c in d || (\":\" === e ? (b.defineParams && g.replace(b.defineParams, function (a, b, l) {\r\n d[c] = {arg: b, text: l}\r\n }), c in d || (d[c] = g)) : (new Function(\"def\", \"def['\" + c + \"']=\" + g))(d));\r\n return \"\"\r\n }).replace(b.use || h, function (a, c) {\r\n b.useParams && (c = c.replace(b.useParams, function (a, b, c, l) {\r\n if (d[c] && d[c].arg && l)return a = (c + \":\" + l).replace(/'|\\\\/g, \"_\"), d.__exp = d.__exp || {}, d.__exp[a] =\r\n d[c].text.replace(new RegExp(\"(^|[^\\\\w$])\" + d[c].arg + \"([^\\\\w$])\", \"g\"), \"$1\" + l + \"$2\"), b + \"def.__exp['\" + a + \"']\"\r\n }));\r\n var e = (new Function(\"def\", \"return \" + c))(d);\r\n return e ? p(b, e, d) : e\r\n })\r\n }\r\n\r\n function k(b) {\r\n return b.replace(/\\\\('|\\\\)/g, \"$1\").replace(/[\\r\\t\\n]/g, \" \")\r\n }\r\n\r\n var f = {\r\n version: \"1.0.3\", templateSettings: {\r\n evaluate: /\\{\\{([\\s\\S]+?(\\}?)+)\\}\\}/g,\r\n interpolate: /\\{\\{=([\\s\\S]+?)\\}\\}/g,\r\n encode: /\\{\\{!([\\s\\S]+?)\\}\\}/g,\r\n use: /\\{\\{#([\\s\\S]+?)\\}\\}/g,\r\n useParams: /(^|[^\\w$])def(?:\\.|\\[[\\'\\\"])([\\w$\\.]+)(?:[\\'\\\"]\\])?\\s*\\:\\s*([\\w$\\.]+|\\\"[^\\\"]+\\\"|\\'[^\\']+\\'|\\{[^\\}]+\\})/g,\r\n define: /\\{\\{##\\s*([\\w\\.$]+)\\s*(\\:|=)([\\s\\S]+?)#\\}\\}/g,\r\n defineParams: /^\\s*([\\w$]+):([\\s\\S]+)/,\r\n conditional: /\\{\\{\\?(\\?)?\\s*([\\s\\S]*?)\\s*\\}\\}/g,\r\n iterate: /\\{\\{~\\s*(?:\\}\\}|([\\s\\S]+?)\\s*\\:\\s*([\\w$]+)\\s*(?:\\:\\s*([\\w$]+))?\\s*\\}\\})/g,\r\n varname: \"it\",\r\n strip: !0,\r\n append: !0,\r\n selfcontained: !1,\r\n doNotSkipEncoded: !1\r\n }, template: void 0, compile: void 0\r\n }, m;\r\n f.encodeHTMLSource = function (b) {\r\n var a = {\r\n \"&\": \"&\",\r\n \"<\": \"<\",\r\n \">\": \">\",\r\n '\"': \""\",\r\n \"'\": \"'\",\r\n \"/\": \"/\"\r\n }, d = b ? /[&<>\"'\\/]/g : /&(?!#?\\w+;)|<|>|\"|'|\\//g;\r\n return function (b) {\r\n return b ?\r\n b.toString().replace(d, function (b) {\r\n return a[b] || b\r\n }) : \"\"\r\n }\r\n };\r\n m = function () {\r\n return this || (0, eval)(\"this\")\r\n }();\r\n \"undefined\" !== typeof module && module.exports ? module.exports = f : \"function\" === typeof define && define.amd ? define(function () {\r\n return f\r\n }) : m.doT = f;\r\n var r = {start: \"'+(\", end: \")+'\", startencode: \"'+encodeHTML(\"}, s = {\r\n start: \"';out+=(\",\r\n end: \");out+='\",\r\n startencode: \"';out+=encodeHTML(\"\r\n }, h = /$^/;\r\n f.template = function (b, a, d) {\r\n a = a || f.templateSettings;\r\n var n = a.append ? r : s, c, e = 0, g;\r\n b = a.use || a.define ? p(a, b, d || {}) : b;\r\n b = (\"var out='\" + (a.strip ?\r\n b.replace(/(^|\\r|\\n)\\t* +| +\\t*(\\r|\\n|$)/g, \" \").replace(/\\r|\\n|\\t|\\/\\*[\\s\\S]*?\\*\\//g, \"\") : b).replace(/'|\\\\/g, \"\\\\$&\").replace(a.interpolate || h, function (b, a) {\r\n return n.start + k(a) + n.end\r\n }).replace(a.encode || h, function (b, a) {\r\n c = !0;\r\n return n.startencode + k(a) + n.end\r\n }).replace(a.conditional || h, function (b, a, c) {\r\n return a ? c ? \"';}else if(\" + k(c) + \"){out+='\" : \"';}else{out+='\" : c ? \"';if(\" + k(c) + \"){out+='\" : \"';}out+='\"\r\n }).replace(a.iterate || h, function (b, a, c, d) {\r\n if (!a)return \"';} } out+='\";\r\n e += 1;\r\n g = d || \"i\" + e;\r\n a = k(a);\r\n return \"';var arr\" +\r\n e + \"=\" + a + \";if(arr\" + e + \"){var \" + c + \",\" + g + \"=-1,l\" + e + \"=arr\" + e + \".length-1;while(\" + g + \" p && (p = -50);\r\n g(this);\r\n return c.each(function () {\r\n var a = f(this);\r\n E(a);\r\n var c = this,\r\n b = c.id, g = -p + \"%\", d = 100 + 2 * p + \"%\", d = {\r\n position: \"absolute\",\r\n top: g,\r\n left: g,\r\n display: \"block\",\r\n width: d,\r\n height: d,\r\n margin: 0,\r\n padding: 0,\r\n background: \"#fff\",\r\n border: 0,\r\n opacity: 0\r\n }, g = _mobile ? {position: \"absolute\", visibility: \"hidden\"} : p ? d : {\r\n position: \"absolute\",\r\n opacity: 0\r\n }, l = \"checkbox\" == c[_type] ? e.checkboxClass || \"icheckbox\" : e.radioClass || \"i\" + r, z = f(_label + '[for=\"' + b + '\"]').add(a.closest(_label)), u = !!e.aria, y = m + \"-\" + Math.random().toString(36).substr(2, 6), h = '
\")[_callback](\"ifCreated\").parent().append(e.insert);\r\n d = f('').css(d).appendTo(h);\r\n a.data(m, {o: e, s: a.attr(\"style\")}).css(g);\r\n e.inheritClass && h[_add](c.className || \"\");\r\n e.inheritID && b && h.attr(\"id\", m + \"-\" + b);\r\n \"static\" == h.css(\"position\") && h.css(\"position\", \"relative\");\r\n A(a, !0, _update);\r\n if (z.length)z.on(_click + \".i mouseover.i mouseout.i \" + _touch, function (b) {\r\n var d = b[_type], e = f(this);\r\n if (!c[n]) {\r\n if (d == _click) {\r\n if (f(b.target).is(\"a\"))return;\r\n A(a, !1, !0)\r\n } else B && (/ut|nd/.test(d) ? (h[_remove](v), e[_remove](w)) : (h[_add](v), e[_add](w)));\r\n if (_mobile)b.stopPropagation(); else return !1\r\n }\r\n });\r\n a.on(_click + \".i focus.i blur.i keyup.i keydown.i keypress.i\", function (b) {\r\n var d = b[_type];\r\n b = b.keyCode;\r\n if (d == _click)return !1;\r\n if (\"keydown\" == d && 32 == b)return c[_type] == r && c[k] || (c[k] ? q(a, k) : x(a, k)), !1;\r\n if (\"keyup\" == d && c[_type] == r)!c[k] && x(a, k); else if (/us|ur/.test(d))h[\"blur\" == d ? _remove : _add](s)\r\n });\r\n d.on(_click + \" mousedown mouseup mouseover mouseout \" + _touch, function (b) {\r\n var d =\r\n b[_type], e = /wn|up/.test(d) ? t : v;\r\n if (!c[n]) {\r\n if (d == _click)A(a, !1, !0); else {\r\n if (/wn|er|in/.test(d))h[_add](e); else h[_remove](e + \" \" + t);\r\n if (z.length && B && e == v)z[/ut|nd/.test(d) ? _remove : _add](w)\r\n }\r\n if (_mobile)b.stopPropagation(); else return !1\r\n }\r\n })\r\n })\r\n }\r\n })(window.jQuery || window.Zepto);\r\n\r\n})();\r\n","/**\r\n * jQuery 扩展\r\n * Created by tangfan on 2015/8/28.\r\n * 当前包含有:\r\n * cookie\r\n */\r\n\r\n/**\r\n * Cookie\r\n */\r\n(function ($) {\r\n $.cookie = function (name, value, options) {\r\n if (typeof value != \"undefined\") {\r\n options = options || {};\r\n if (value === null) {\r\n value = \"\";\r\n options.expires = -1\r\n }\r\n var expires = \"\";\r\n if (options.expires && (typeof options.expires == \"number\" || options.expires.toUTCString)) {\r\n var date;\r\n if (typeof options.expires == \"number\") {\r\n date = new Date();\r\n date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000))\r\n } else {\r\n date = options.expires\r\n }\r\n expires = \"; expires=\" + date.toUTCString()\r\n }\r\n var path = options.path ? \"; path=\" + options.path : \"\";\r\n var domain = options.domain ? \"; domain=\" + options.domain : \"\";\r\n var secure = options.secure ? \"; secure\" : \"\";\r\n document.cookie = [name, \"=\", encodeURIComponent(value), expires, path, domain, secure].join(\"\")\r\n } else {\r\n var cookieValue = null;\r\n if (document.cookie && document.cookie != \"\") {\r\n var cookies = document.cookie.split(\";\");\r\n for (var i = 0; i < cookies.length; i++) {\r\n var cookie = $.trim(cookies[i]);\r\n if (cookie.substring(0, name.length + 1) == (name + \"=\")) {\r\n cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\r\n break\r\n }\r\n }\r\n }\r\n return cookieValue\r\n }\r\n };\r\n\r\n\tif ($.fn['extend']) {\r\n\t\t$.fn.extend({\r\n\t\t\tmask: function (opt) {\r\n\t\t\t\tvar defaults = {\r\n\t\t\t\t\topacity: 75,\r\n\t\t\t\t\tbackground: \"#fff\",\r\n\t\t\t\t\ttext: \"\"\r\n\t\t\t\t};\r\n\t\t\t\tvar o = $.extend({}, defaults, opt);\r\n\t\t\t\tvar parent = $(this);\r\n\t\t\t\tif (parent.data(\"mask\")) {\r\n\t\t\t\t\tif (o.text) {\r\n\t\t\t\t\t\tvar $find = parent.find(\".maskText\");\r\n\t\t\t\t\t\t$find.html(o.text);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar divHtml = ' ';\r\n\t\t\t\tparent.css({\"position\": \"relative\"});\r\n\t\t\t\t//$(this).wrap('');\r\n\t\t\t\tparent.append(divHtml);\r\n\t\t\t\tparent.data(\"mask\", true);\r\n\t\t\t\tif (o.text) {\r\n\t\t\t\t\tvar $text = $(\"

\" + o.text + \"

\");\r\n\t\t\t\t\tparent.append($text);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tunmask: function () {\r\n\t\t\t\tvar parent = $(this);\r\n\t\t\t\tparent.find(\".divMask\").fadeOut(\"normal\", function () {\r\n\t\t\t\t\t$(this).remove();\r\n\t\t\t\t\t//parent.find(\".maskText\").remove();\r\n\t\t\t\t}).end().find(\".maskText\").fadeOut(\"normal\");\r\n\t\t\t\tparent.data(\"mask\", false);\r\n\t\t\t\t//$(this).unwrap();\r\n\t\t\t},\r\n\t\t\tcheck: function () {\r\n\t\t\t\tvar $this = $(this),\r\n\t\t\t\t\treg = $this.attr(\"reg\"),\r\n\t\t\t\t\ttext = $this.val() || $this.text();\r\n\t\t\t\tif (!reg) return false;\r\n\t\t\t\tvar _reg = new RegExp(reg, \"gi\");\r\n\t\t\t\treturn _reg.test(text);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n $.extend({\r\n /**\r\n * 鏁板瓧鍗冨垎浣嶆牸寮忓寲\r\n * @public\r\n * @param mixed mVal 鏁板€?\r\n * @param int iAccuracy 灏忔暟浣嶇簿搴?榛樿涓?)\r\n * @return string\r\n */\r\n formatMoney: function (mVal, iAccuracy) {\r\n var fTmp = 0.00;//涓存椂鍙橀噺\r\n var iFra = 0;//灏忔暟閮ㄥ垎\r\n var iInt = 0;//鏁存暟閮ㄥ垎\r\n var aBuf = new Array(); //杈撳嚭缂撳瓨\r\n var bPositive = true; //淇濆瓨姝h礋鍊兼爣璁?true:姝f暟)\r\n /**\r\n * 杈撳嚭瀹氶暱瀛楃涓诧紝涓嶅琛?\r\n *
  • 闂寘鍑芥暟
  • \r\n * @param int iVal 鍊?\r\n * @param int iLen 杈撳嚭鐨勯暱搴?\r\n */\r\n function funZero(iVal, iLen) {\r\n var sTmp = iVal.toString();\r\n var sBuf = new Array();\r\n for (var i = 0, iLoop = iLen - sTmp.length; i < iLoop; i++)\r\n sBuf.push('0');\r\n sBuf.push(sTmp);\r\n return sBuf.join('');\r\n };\r\n\r\n if (typeof(iAccuracy) === 'undefined')\r\n iAccuracy = 2;\r\n bPositive = (mVal >= 0);//鍙栧嚭姝h礋鍙?\r\n fTmp = (isNaN(fTmp = parseFloat(mVal))) ? 0 : Math.abs(fTmp);//寮哄埗杞崲涓虹粷瀵瑰€兼暟娴偣\r\n //鎵€鏈夊唴瀹圭敤姝f暟瑙勫垯澶勭悊\r\n iInt = parseInt(fTmp); //鍒嗙鏁存暟閮ㄥ垎\r\n iFra = parseInt((fTmp - iInt) * Math.pow(10, iAccuracy) + 0.5); //鍒嗙灏忔暟閮ㄥ垎(鍥涜垗浜斿叆)\r\n\r\n do {\r\n aBuf.unshift(funZero(iInt % 1000, 3));\r\n } while ((iInt = parseInt(iInt / 1000)));\r\n aBuf[0] = parseInt(aBuf[0]).toString();//鏈€楂樻鍖哄幓鎺夊墠瀵?\r\n var retu = ((bPositive) ? '' : '-') + aBuf.join(',')\r\n if (iAccuracy > 0) {\r\n retu += '.' + ((0 === iFra) ? '00' : funZero(iFra, iAccuracy));\r\n }\r\n return retu;\r\n },\r\n /**\r\n *\r\n * @public\r\n * @param string sVal\r\n * @return float\r\n */\r\n unformatMoney: function (sVal) {\r\n var fTmp = parseFloat(sVal.replace(/,/g, ''));\r\n return (isNaN(fTmp) ? 0 : fTmp);\r\n }\r\n });\r\n})(jQuery || Zepto);","/**\r\n * JS功能扩展\r\n * Created by tangfan on 2015/8/28.\r\n * 1 日期格式化 Format\r\n * 2 日期的增加 DateAdd\r\n * 3 字符串格式化 padLeft\r\n * 4 字符串长度(中文算2个) lengthEx()\r\n */\r\n(function () {\r\n /**\r\n * 由于IE9以前版本没有对JSON对象的支持而新增此方法\r\n */\r\n if (!window[\"JSON\"]) {\r\n \"object\" != typeof JSON && (JSON = {}), function () {\r\n \"use strict\";\r\n function f(a) {\r\n return 10 > a ? \"0\" + a : a\r\n }\r\n\r\n function quote(a) {\r\n return escapable.lastIndex = 0, escapable.test(a) ? '\"' + a.replace(escapable, function (a) {\r\n var b = meta[a];\r\n return \"string\" == typeof b ? b : \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4)\r\n }) + '\"' : '\"' + a + '\"'\r\n }\r\n\r\n function str(a, b) {\r\n var c, d, e, f, h, g = gap, i = b[a];\r\n switch (i && \"object\" == typeof i && \"function\" == typeof i.toJSON && (i = i.toJSON(a)), \"function\" == typeof rep && (i = rep.call(b, a, i)), typeof i) {\r\n case\"string\":\r\n return quote(i);\r\n case\"number\":\r\n return isFinite(i) ? String(i) : \"null\";\r\n case\"boolean\":\r\n case\"null\":\r\n return String(i);\r\n case\"object\":\r\n if (!i)return \"null\";\r\n if (gap += indent, h = [], \"[object Array]\" === Object.prototype.toString.apply(i)) {\r\n for (f = i.length, c = 0; f > c; c += 1)h[c] = str(c, i) || \"null\";\r\n return e = 0 === h.length ? \"[]\" : gap ? \"[\\n\" + gap + h.join(\",\\n\" + gap) + \"\\n\" + g + \"]\" : \"[\" + h.join(\",\") + \"]\", gap = g, e\r\n }\r\n if (rep && \"object\" == typeof rep)for (f = rep.length, c = 0; f > c; c += 1)\"string\" == typeof rep[c] && (d = rep[c], e = str(d, i), e && h.push(quote(d) + (gap ? \": \" : \":\") + e)); else for (d in i)Object.prototype.hasOwnProperty.call(i, d) && (e = str(d, i), e && h.push(quote(d) + (gap ? \": \" : \":\") + e));\r\n return e = 0 === h.length ? \"{}\" : gap ? \"{\\n\" + gap + h.join(\",\\n\" + gap) + \"\\n\" + g + \"}\" : \"{\" + h.join(\",\") + \"}\", gap = g, e\r\n }\r\n }\r\n\r\n \"function\" != typeof Date.prototype.toJSON && (Date.prototype.toJSON = function () {\r\n return isFinite(this.valueOf()) ? this.getUTCFullYear() + \"-\" + f(this.getUTCMonth() + 1) + \"-\" + f(this.getUTCDate()) + \"T\" + f(this.getUTCHours()) + \":\" + f(this.getUTCMinutes()) + \":\" + f(this.getUTCSeconds()) + \"Z\" : null\r\n }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {\r\n return this.valueOf()\r\n });\r\n var cx, escapable, gap, indent, meta, rep;\r\n \"function\" != typeof JSON.stringify && (escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g, meta = {\r\n \"\\b\": \"\\\\b\",\r\n \"\t\": \"\\\\t\",\r\n \"\\n\": \"\\\\n\",\r\n \"\\f\": \"\\\\f\",\r\n \"\\r\": \"\\\\r\",\r\n '\"': '\\\\\"',\r\n \"\\\\\": \"\\\\\\\\\"\r\n }, JSON.stringify = function (a, b, c) {\r\n var d;\r\n if (gap = \"\", indent = \"\", \"number\" == typeof c)for (d = 0; c > d; d += 1)indent += \" \"; else\"string\" == typeof c && (indent = c);\r\n if (rep = b, b && \"function\" != typeof b && (\"object\" != typeof b || \"number\" != typeof b.length))throw new Error(\"JSON.stringify\");\r\n return str(\"\", {\"\": a})\r\n }), \"function\" != typeof JSON.parse && (cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g, JSON.parse = function (text, reviver) {\r\n function walk(a, b) {\r\n var c, d, e = a[b];\r\n if (e && \"object\" == typeof e)for (c in e)Object.prototype.hasOwnProperty.call(e, c) && (d = walk(e, c), void 0 !== d ? e[c] = d : delete e[c]);\r\n return reviver.call(a, b, e)\r\n }\r\n\r\n var j;\r\n if (text = String(text), cx.lastIndex = 0, cx.test(text) && (text = text.replace(cx, function (a) {\r\n return \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4)\r\n })), /^[\\],:{}\\s]*$/.test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, \"@\").replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \"]\").replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\")))return j = eval(\"(\" + text + \")\"), \"function\" == typeof reviver ? walk({\"\": j}, \"\") : j;\r\n throw new SyntaxError(\"JSON.parse\")\r\n })\r\n }();\r\n }\r\n Date.prototype.Format = function (fmt) { //author: meizz\r\n var o = {\r\n \"M+\": this.getMonth() + 1,\r\n \"d+\": this.getDate(),\r\n \"H+\": this.getHours(),\r\n \"m+\": this.getMinutes(),\r\n \"s+\": this.getSeconds(),\r\n \"q+\": Math.floor((this.getMonth() + 3) / 3),\r\n \"f+\": this.getMilliseconds()\r\n };\r\n if (/(y+)/.test(fmt))\r\n fmt = fmt.replace(RegExp.$1, (this.getFullYear() + \"\").substr(4 - RegExp.$1.length));\r\n for (var k in o)\r\n if (new RegExp(\"(\" + k + \")\").test(fmt))\r\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\"00\" + o[k]).substr((\"\" + o[k]).length)));\r\n return fmt;\r\n };\r\n\r\n Date.prototype.DateAdd = function (strInterval, Number) {\r\n var dtTmp = this;\r\n switch (strInterval) {\r\n case 's' :\r\n return new Date(Date.parse(dtTmp) + (1000 * Number));\r\n case 'n' :\r\n return new Date(Date.parse(dtTmp) + (60000 * Number));\r\n case 'h' :\r\n return new Date(Date.parse(dtTmp) + (3600000 * Number));\r\n case 'd' :\r\n return new Date(Date.parse(dtTmp) + (86400000 * Number));\r\n case 'w' :\r\n return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));\r\n case 'q' :\r\n return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number * 3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());\r\n case 'm' :\r\n return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());\r\n case 'y' :\r\n return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());\r\n }\r\n };\r\n\r\n String.prototype.padLeft = function (padChar, width) {\r\n var ret = this;\r\n while (ret.length < width) {\r\n if (ret.length + padChar.length < width) {\r\n ret = padChar + ret;\r\n }\r\n else {\r\n ret = padChar.substring(0, width - ret.length) + ret;\r\n }\r\n }\r\n return ret;\r\n };\r\n\r\n String.prototype.lengthEx = function () {\r\n var l = 0;\r\n var a = this.toString().split(\"\");\r\n for (var i = 0; i < a.length; i++) {\r\n if (a[i].charCodeAt(0) < 299) {\r\n l++;\r\n } else {\r\n l += 2;\r\n }\r\n }\r\n return l;\r\n };\r\n\r\n //Array.prototype.indexOf = function (val) {\r\n // for (var i = 0; i < this.length; i++) {\r\n // if (this[i] == val) return i;\r\n // }\r\n // return -1;\r\n //};\r\n //Array.prototype.remove = function(val) {\r\n // var index = this.indexOf(val);\r\n // if (index > -1) {\r\n // this.splice(index, 1);\r\n // }\r\n //};\r\n})();","/**\r\n * lambda 扩展\r\n * Created by tangfan on 2015/8/28.\r\n */\r\n(function (window) {\r\n var lambda = function (items) {\r\n if (lambda.type(items) === \"string\") return lambda._compile(items);\r\n return new lambda.prototype.init(items);\r\n },\r\n _lambda = window.lambda,\r\n __ = window._;\r\n\r\n lambda.prototype.init = function (items) {\r\n this.items = items;\r\n return this;\r\n };\r\n\r\n lambda.prototype.each = function (fn) {\r\n var name, i = 0, length = this.items.length, isObj = length === undefined || lambda.type(this.items) === \"function\";\r\n var its = this.items;\r\n if (isObj) {\r\n for (name in its) {\r\n fn.call(its[name], name, its[name]);\r\n }\r\n } else {\r\n for (; i < its.length;) {\r\n if (fn.call(its[i], i, its[i++]) === true) {\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n lambda.prototype.count = function (fn) {\r\n if (fn == null)\r\n return this.items.length;\r\n else\r\n return this.find(fn).items.length;\r\n };\r\n lambda.prototype.map = function (fn) {\r\n var result = [];\r\n this.each(function (index, item) {\r\n result[index] = fn(item);\r\n });\r\n return lambda(result);\r\n };\r\n\r\n lambda.prototype.first = function (fn) {\r\n if (fn != null) {\r\n return this.find(fn).first();\r\n }\r\n else {\r\n // If no clause was specified, then return the First element in the Array\r\n if (this.items.length > 0)\r\n return lambda([this.items[0]]);\r\n else\r\n return null;\r\n }\r\n };\r\n\r\n lambda.prototype.find = function (fn) {\r\n var newArr = [], self = this, i = 0;\r\n this.each(function (index, item) {\r\n if (fn(item, index)) newArr[i++] = item;\r\n });\r\n return lambda(newArr);\r\n };\r\n\r\n lambda.prototype.findIndex = function (fn) {\r\n var newArr = [], self = this, i = -1;\r\n this.each(function (index, item) {\r\n if (fn(item, index)) {\r\n i = index;\r\n return true;\r\n }\r\n });\r\n return i;\r\n };\r\n\r\n lambda.prototype.sortBy = function (clause) {\r\n var tempArray = [];\r\n for (var i = 0; i < this.items.length; i++) {\r\n tempArray[tempArray.length] = this.items[i];\r\n }\r\n return lambda(\r\n tempArray.sort(function (a, b) {\r\n var x = clause(a);\r\n var y = clause(b);\r\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\r\n })\r\n );\r\n };\r\n\r\n lambda.type = function (obj) {\r\n return obj == null ?\r\n String(obj) :\r\n {\r\n \"[object Array]\": \"array\",\r\n \"[object Boolean]\": \"boolean\",\r\n \"[object Date]\": \"date\",\r\n \"[object Function]\": \"function\",\r\n \"[object Number]\": \"number\",\r\n \"[object Object]\": \"object\",\r\n \"[object RegExp]\": \"regexp\",\r\n \"[object String]\": \"string\"\r\n }[Object.prototype.toString.call(obj)] || \"object\";\r\n };\r\n\r\n lambda._compile = function (condition) {\r\n var conditionStr = condition.split(\"=>\");\r\n if (conditionStr[0].indexOf(\"(\") === -1) {\r\n return function (item) {\r\n return eval(conditionStr[1].replace(new RegExp(\"\\\\b\" + conditionStr[0] + \"(?![A-Za-z0-9_])\", \"g\"), \"item\"));\r\n }\r\n } else {\r\n var tempStr = conditionStr[0].replace(/\\(/g, \"\").replace(/\\)/g, \"\").split(\",\");\r\n var tempItem = lambda.trim(tempStr[0]);\r\n var tempIndex = lambda.trim(tempStr[1]);\r\n return function (item, index) {\r\n return eval(conditionStr[1].replace(new RegExp(\"\\\\b\" + tempItem + \"(?![A-Za-z0-9_])\", \"g\"), \"item\").replace(new RegExp(\"\\\\b\" + tempIndex + \"(?![A-Za-z0-9_])\", \"g\"), \"index\"));\r\n }\r\n }\r\n };\r\n\r\n var trimLeft = /^\\s+/,\r\n trimRight = /\\s+$/,\r\n rnotwhite = /\\S/,\r\n trim = String.prototype.trim;\r\n\r\n // IE doesn't match non-breaking spaces with \\s\r\n if (rnotwhite.test(\"\\xA0\")) {\r\n trimLeft = /^[\\s\\xA0]+/;\r\n trimRight = /[\\s\\xA0]+$/;\r\n }\r\n\r\n lambda.trim = trim ?\r\n function (text) {\r\n return text == null ?\r\n \"\" :\r\n trim.call(text);\r\n } :\r\n // Otherwise use our own trimming functionality\r\n function (text) {\r\n return text == null ?\r\n \"\" :\r\n text.toString().replace(trimLeft, \"\").replace(trimRight, \"\");\r\n };\r\n\r\n lambda.prototype.init.prototype = lambda.prototype;\r\n\r\n lambda.noConflict = function (deep) {\r\n if (window._ === lambda) {\r\n window._ = __;\r\n }\r\n\r\n if (deep && window.lambda === lambda) {\r\n window.lambda = _lambda;\r\n }\r\n\r\n return lambda;\r\n };\r\n\r\n var root = this;\r\n\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = lambda = _;\r\n }\r\n exports.lambda = exports._ = lambda;\r\n } else {\r\n root.lambda = root._ = lambda;\r\n }\r\n}(window));","/**\r\n * 有限状态机\r\n * Created by tangfan on 2015/9/8.\r\n */\r\n/*\r\n\r\n Javascript State Machine Library - https://github.com/jakesgordon/javascript-state-machine\r\n\r\n Copyright (c) 2012, 2013, 2014, 2015, Jake Gordon and contributors\r\n Released under the MIT license - https://github.com/jakesgordon/javascript-state-machine/blob/master/LICENSE\r\n\r\n */\r\n\r\n(function () {\r\n\r\n var StateMachine = {\r\n\r\n //---------------------------------------------------------------------------\r\n\r\n VERSION: \"2.3.5\",\r\n\r\n //---------------------------------------------------------------------------\r\n\r\n Result: {\r\n SUCCEEDED: 1, // the event transitioned successfully from one state to another\r\n NOTRANSITION: 2, // the event was successfull but no state transition was necessary\r\n CANCELLED: 3, // the event was cancelled by the caller in a beforeEvent callback\r\n PENDING: 4 // the event is asynchronous and the caller is in control of when the transition occurs\r\n },\r\n\r\n Error: {\r\n INVALID_TRANSITION: 100, // caller tried to fire an event that was innapropriate in the current state\r\n PENDING_TRANSITION: 200, // caller tried to fire an event while an async transition was still pending\r\n INVALID_CALLBACK: 300 // caller provided callback function threw an exception\r\n },\r\n\r\n WILDCARD: '*',\r\n ASYNC: 'async',\r\n\r\n //---------------------------------------------------------------------------\r\n\r\n create: function(cfg, target) {\r\n\r\n var initial = (typeof cfg.initial == 'string') ? { state: cfg.initial } : cfg.initial; // allow for a simple string, or an object with { state: 'foo', event: 'setup', defer: true|false }\r\n var terminal = cfg.terminal || cfg['final'];\r\n var fsm = target || cfg.target || {};\r\n var events = cfg.events || [];\r\n var callbacks = cfg.callbacks || {};\r\n var map = {}; // track state transitions allowed for an event { event: { from: [ to ] } }\r\n var transitions = {}; // track events allowed from a state { state: [ event ] }\r\n\r\n var add = function(e) {\r\n var from = (e.from instanceof Array) ? e.from : (e.from ? [e.from] : [StateMachine.WILDCARD]); // allow 'wildcard' transition if 'from' is not specified\r\n map[e.name] = map[e.name] || {};\r\n for (var n = 0 ; n < from.length ; n++) {\r\n transitions[from[n]] = transitions[from[n]] || [];\r\n transitions[from[n]].push(e.name);\r\n\r\n map[e.name][from[n]] = e.to || from[n]; // allow no-op transition if 'to' is not specified\r\n }\r\n };\r\n\r\n if (initial) {\r\n initial.event = initial.event || 'startup';\r\n add({ name: initial.event, from: 'none', to: initial.state });\r\n }\r\n\r\n for(var n = 0 ; n < events.length ; n++)\r\n add(events[n]);\r\n\r\n for(var name in map) {\r\n if (map.hasOwnProperty(name))\r\n fsm[name] = StateMachine.buildEvent(name, map[name]);\r\n }\r\n\r\n for(var name in callbacks) {\r\n if (callbacks.hasOwnProperty(name))\r\n fsm[name] = callbacks[name]\r\n }\r\n\r\n fsm.current = 'none';\r\n fsm.is = function(state) { return (state instanceof Array) ? (state.indexOf(this.current) >= 0) : (this.current === state); };\r\n fsm.can = function(event) { return !this.transition && (map[event].hasOwnProperty(this.current) || map[event].hasOwnProperty(StateMachine.WILDCARD)); }\r\n fsm.cannot = function(event) { return !this.can(event); };\r\n fsm.transitions = function() { return transitions[this.current]; };\r\n fsm.isFinished = function() { return this.is(terminal); };\r\n fsm.error = cfg.error || function(name, from, to, args, error, msg, e) { throw e || msg; }; // default behavior when something unexpected happens is to throw an exception, but caller can override this behavior if desired (see github issue #3 and #17)\r\n\r\n if (initial && !initial.defer)\r\n fsm[initial.event]();\r\n\r\n return fsm;\r\n\r\n },\r\n\r\n //===========================================================================\r\n\r\n doCallback: function(fsm, func, name, from, to, args) {\r\n if (func) {\r\n try {\r\n return func.apply(fsm, [name, from, to].concat(args));\r\n }\r\n catch(e) {\r\n return fsm.error(name, from, to, args, StateMachine.Error.INVALID_CALLBACK, \"an exception occurred in a caller-provided callback function\", e);\r\n }\r\n }\r\n },\r\n\r\n beforeAnyEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onbeforeevent'], name, from, to, args); },\r\n afterAnyEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onafterevent'] || fsm['onevent'], name, from, to, args); },\r\n leaveAnyState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onleavestate'], name, from, to, args); },\r\n enterAnyState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onenterstate'] || fsm['onstate'], name, from, to, args); },\r\n changeState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onchangestate'], name, from, to, args); },\r\n\r\n beforeThisEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onbefore' + name], name, from, to, args); },\r\n afterThisEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onafter' + name] || fsm['on' + name], name, from, to, args); },\r\n leaveThisState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onleave' + from], name, from, to, args); },\r\n enterThisState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onenter' + to] || fsm['on' + to], name, from, to, args); },\r\n\r\n beforeEvent: function(fsm, name, from, to, args) {\r\n if ((false === StateMachine.beforeThisEvent(fsm, name, from, to, args)) ||\r\n (false === StateMachine.beforeAnyEvent( fsm, name, from, to, args)))\r\n return false;\r\n },\r\n\r\n afterEvent: function(fsm, name, from, to, args) {\r\n StateMachine.afterThisEvent(fsm, name, from, to, args);\r\n StateMachine.afterAnyEvent( fsm, name, from, to, args);\r\n },\r\n\r\n leaveState: function(fsm, name, from, to, args) {\r\n var specific = StateMachine.leaveThisState(fsm, name, from, to, args),\r\n general = StateMachine.leaveAnyState( fsm, name, from, to, args);\r\n if ((false === specific) || (false === general))\r\n return false;\r\n else if ((StateMachine.ASYNC === specific) || (StateMachine.ASYNC === general))\r\n return StateMachine.ASYNC;\r\n },\r\n\r\n enterState: function(fsm, name, from, to, args) {\r\n StateMachine.enterThisState(fsm, name, from, to, args);\r\n StateMachine.enterAnyState( fsm, name, from, to, args);\r\n },\r\n\r\n //===========================================================================\r\n\r\n buildEvent: function(name, map) {\r\n return function() {\r\n\r\n var from = this.current;\r\n var to = map[from] || map[StateMachine.WILDCARD] || from;\r\n var args = Array.prototype.slice.call(arguments); // turn arguments into pure array\r\n\r\n if (this.transition)\r\n return this.error(name, from, to, args, StateMachine.Error.PENDING_TRANSITION, \"event \" + name + \" inappropriate because previous transition did not complete\");\r\n\r\n if (this.cannot(name))\r\n return this.error(name, from, to, args, StateMachine.Error.INVALID_TRANSITION, \"event \" + name + \" inappropriate in current state \" + this.current);\r\n\r\n if (false === StateMachine.beforeEvent(this, name, from, to, args))\r\n return StateMachine.Result.CANCELLED;\r\n\r\n if (from === to) {\r\n StateMachine.afterEvent(this, name, from, to, args);\r\n return StateMachine.Result.NOTRANSITION;\r\n }\r\n\r\n // prepare a transition method for use EITHER lower down, or by caller if they want an async transition (indicated by an ASYNC return value from leaveState)\r\n var fsm = this;\r\n this.transition = function() {\r\n fsm.transition = null; // this method should only ever be called once\r\n fsm.current = to;\r\n StateMachine.enterState( fsm, name, from, to, args);\r\n StateMachine.changeState(fsm, name, from, to, args);\r\n StateMachine.afterEvent( fsm, name, from, to, args);\r\n return StateMachine.Result.SUCCEEDED;\r\n };\r\n this.transition.cancel = function() { // provide a way for caller to cancel async transition if desired (issue #22)\r\n fsm.transition = null;\r\n StateMachine.afterEvent(fsm, name, from, to, args);\r\n }\r\n\r\n var leave = StateMachine.leaveState(this, name, from, to, args);\r\n if (false === leave) {\r\n this.transition = null;\r\n return StateMachine.Result.CANCELLED;\r\n }\r\n else if (StateMachine.ASYNC === leave) {\r\n return StateMachine.Result.PENDING;\r\n }\r\n else {\r\n if (this.transition) // need to check in case user manually called transition() but forgot to return StateMachine.ASYNC\r\n return this.transition();\r\n }\r\n\r\n };\r\n }\r\n\r\n }; // StateMachine\r\n\r\n //===========================================================================\r\n\r\n //======\r\n // NODE\r\n //======\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = StateMachine;\r\n }\r\n exports.StateMachine = StateMachine;\r\n }\r\n //============\r\n // AMD/REQUIRE\r\n //============\r\n else if (typeof define === 'function' && define.amd) {\r\n define(function(require) { return StateMachine; });\r\n }\r\n //========\r\n // BROWSER\r\n //========\r\n else if (typeof window !== 'undefined') {\r\n window.StateMachine = StateMachine;\r\n }\r\n //===========\r\n // WEB WORKER\r\n //===========\r\n else if (typeof self !== 'undefined') {\r\n self.StateMachine = StateMachine;\r\n }\r\n\r\n}());","/*! Nestoria Slider - v1.0.13 - 2015-07-16\r\n * http://lokku.github.io/jquery-nstslider/\r\n * Copyright (c) 2015 Lokku Ltd.; Licensed MIT */\r\n(function ($) {\r\n /* \r\n * These are used for user interaction. This plugin assumes the user can\r\n * interact with one control at a time. For this reason it's safe to keep\r\n * these global.\r\n */\r\n var _$current_slider;\r\n var _is_mousedown;\r\n var _original_mousex;\r\n\r\n // both for keyboard and mouse interaction\r\n var _is_left_grip;\r\n\r\n // for keyboard interaction only\r\n var _before_keydown_value;\r\n var _before_keydown_pixel;\r\n var _before_keyup_value;\r\n var _before_keyup_pixel;\r\n\r\n // a fixed configuration for the single bar slider, used to decide where to\r\n // place the naked bar.\r\n var _naked_bar_deltas; // see populateNakedBarDeltas\r\n\r\n var _methods = {\r\n /*\r\n * This method must be called once during initialization.\r\n * It sets the behaviour of the naked bar in case of one handle.\r\n */\r\n 'setNakedBarDelta': function (position, handleWidth) {\r\n if (position === \"stickToSides\") {\r\n _naked_bar_deltas = {\r\n toEndWidth: handleWidth,\r\n toBeginLeft: 0,\r\n toBeginWidth: handleWidth\r\n };\r\n }\r\n else if (position === \"middle\") {\r\n // Position naked end of the bar at the middle value.\r\n _naked_bar_deltas = {\r\n toEndWidth: handleWidth / 2,\r\n toBeginLeft: handleWidth / 2,\r\n toBeginWidth: handleWidth / 2\r\n };\r\n }\r\n else {\r\n throw new Error('unknown position of setNakedBarDelta: ' + position);\r\n }\r\n },\r\n 'getSliderValuesAtPositionPx': function (leftPx, rightPx) {\r\n var $this = this,\r\n leftPxInValue, rightPxInValue,\r\n pixel_to_value_mapping_func = $this.data('pixel_to_value_mapping');\r\n\r\n if (typeof pixel_to_value_mapping_func !== 'undefined') {\r\n leftPxInValue = pixel_to_value_mapping_func(leftPx);\r\n rightPxInValue = pixel_to_value_mapping_func(rightPx);\r\n }\r\n else {\r\n var w = _methods.getSliderWidthPx.call($this) - $this.data('left_grip_width');\r\n leftPxInValue = _methods.inverse_rangemap_0_to_n.call($this, leftPx, w);\r\n rightPxInValue = _methods.inverse_rangemap_0_to_n.call($this, rightPx, w);\r\n }\r\n\r\n return [leftPxInValue, rightPxInValue];\r\n },\r\n /*\r\n * Move slider grips to the specified position. This method is\r\n * designed to run within the user interaction lifecycle. Only call\r\n * this method if the user has interacted with the sliders\r\n * actually...\r\n *\r\n * First the desired positions are validated. If values are ok, the\r\n * move is performed, otherwise it's just ignored because weird\r\n * values have been passed.\r\n */\r\n 'validateAndMoveGripsToPx': function (nextLeftGripPositionPx, nextRightGripPositionPx) {\r\n var $this = this;\r\n\r\n var draggableAreaLengthPx = _methods.getSliderWidthPx.call($this) - $this.data('left_grip_width');\r\n\r\n //\r\n // Validate & Move\r\n //\r\n if (nextRightGripPositionPx <= draggableAreaLengthPx &&\r\n nextLeftGripPositionPx >= 0 &&\r\n nextLeftGripPositionPx <= draggableAreaLengthPx &&\r\n (!$this.data('has_right_grip') || nextLeftGripPositionPx <= nextRightGripPositionPx)) {\r\n\r\n var prevMin = $this.data('cur_min'),\r\n prevMax = $this.data('cur_max');\r\n\r\n // note: also stores new cur_min, cur_max\r\n _methods.set_position_from_px.call($this, nextLeftGripPositionPx, nextRightGripPositionPx);\r\n\r\n // set the style of the grips according to the highlighted range\r\n _methods.refresh_grips_style.call($this);\r\n\r\n _methods.notify_changed_implicit.call($this, 'drag_move', prevMin, prevMax);\r\n }\r\n\r\n return $this;\r\n },\r\n /*\r\n * Update aria attributes of the slider based on the current\r\n * configuration of the slider.\r\n */\r\n 'updateAriaAttributes': function () {\r\n var $this = this,\r\n settings = $this.data('settings'),\r\n $leftGrip = $this.find(settings.left_grip_selector);\r\n\r\n //\r\n // double grips sliders is probably the most common case...\r\n // ... also, the values to be set in the two cases are quite\r\n // different.\r\n //\r\n if ($this.data('has_right_grip')) {\r\n\r\n var $rightGrip = $this.find(settings.right_grip_selector);\r\n\r\n //\r\n // grips are mutually binding their max/min values when 2 grips\r\n // are present. For example, we should imagine the left grip as\r\n // being constrained between [ rangeMin, valueMax ]\r\n //\r\n $leftGrip\r\n .attr('aria-valuemin', $this.data('range_min'))\r\n .attr('aria-valuenow', methods.get_current_min_value.call($this))\r\n .attr('aria-valuemax', methods.get_current_max_value.call($this));\r\n\r\n $rightGrip\r\n .attr('aria-valuemin', methods.get_current_min_value.call($this))\r\n .attr('aria-valuenow', methods.get_current_max_value.call($this))\r\n .attr('aria-valuemax', $this.data('range_max'));\r\n }\r\n else {\r\n $leftGrip\r\n .attr('aria-valuemin', $this.data('range_min'))\r\n .attr('aria-valuenow', methods.get_current_min_value.call($this))\r\n .attr('aria-valuemax', $this.data('range_max'));\r\n }\r\n\r\n return $this;\r\n },\r\n /*\r\n * Return the width in pixels of the slider bar, i.e., the maximum\r\n * number of pixels the user can slide the slider over. This function\r\n * should always be used internally to obtain the width of the\r\n * slider in pixels!\r\n */\r\n 'getSliderWidthPx': function () {\r\n var $this = this;\r\n\r\n //\r\n // .width() can actually return a floating point number! see\r\n // jquery docs!\r\n //\r\n return Math.round($this.width());\r\n },\r\n /*\r\n * Return the position of a given grip in pixel in integer format.\r\n * Use this method internally if you are literally going to get the\r\n * left CSS property from the provided grip.\r\n *\r\n * This method assumes a certain grip exists and will have the left\r\n * property.\r\n *\r\n * This is generally safe for the left grip, because it is basically\r\n * guaranteed to exist. But for the right grip you should be really\r\n * using getRightGripPositionPx instead.\r\n *\r\n */\r\n 'getGripPositionPx': function ($grip) {\r\n return parseInt($grip.css('left').replace('px', ''), 10);\r\n },\r\n /*\r\n * Just the same as getGripPositionPx, but there is no need to provide\r\n * the $slider.\r\n */\r\n 'getLeftGripPositionPx': function () {\r\n var $this = this,\r\n settings = $this.data('settings'),\r\n $leftGrip = $this.find(settings.left_grip_selector);\r\n\r\n return _methods.getGripPositionPx.call($this, $leftGrip);\r\n },\r\n /*\r\n * Return the position of the right Grip if it exists or return the\r\n * current position if not. Even if the right grip doesn't exist, its\r\n * position should be defined, as it determines the position of the\r\n * bar.\r\n */\r\n 'getRightGripPositionPx': function () {\r\n var $this = this,\r\n settings = $this.data('settings');\r\n\r\n if ($this.data('has_right_grip')) {\r\n return _methods.getGripPositionPx.call($this,\r\n $this.find(settings.right_grip_selector)\r\n );\r\n }\r\n\r\n // default\r\n var sliderWidthPx = _methods.getSliderWidthPx.call($this) - $this.data('left_grip_width');\r\n return _methods.rangemap_0_to_n.call($this, $this.data('cur_max'), sliderWidthPx);\r\n },\r\n /*\r\n * Return the width of the left grip. Like getSliderWidthPx, this\r\n * method deals with .width() returning a floating point number. All\r\n * the code in this plugin assumes an integer here!\r\n */\r\n 'getLeftGripWidth': function () {\r\n var $this = this,\r\n settings = $this.data('settings'),\r\n $leftGrip = $this.find(settings.left_grip_selector);\r\n\r\n return Math.round($leftGrip.outerWidth());\r\n },\r\n /*\r\n * Return the width of the right grip. The calling method should\r\n * check that the right grip actually exists. This method assumes it\r\n * does.\r\n */\r\n 'getRightGripWidth': function () {\r\n var $this = this,\r\n settings = $this.data('settings'),\r\n $rightGrip = $this.find(settings.right_grip_selector);\r\n\r\n return Math.round($rightGrip.outerWidth());\r\n },\r\n 'binarySearchValueToPxCompareFunc': function (s, a, i) {\r\n // Must return:\r\n //\r\n // s: element to search for\r\n // a: array we are looking in \r\n // i: position of the element we are looking for\r\n //\r\n // -1 (s < a[i])\r\n // 0 found (= a[i])\r\n // 1 (s > a[i])\r\n if (s === a[i]) {\r\n return 0;\r\n } // element found exactly\r\n if (s < a[i] && i === 0) {\r\n return 0;\r\n } // left extreme case e.g., a = [ 3, ... ], s = 1\r\n if (a[i - 1] <= s && s < a[i]) {\r\n return 0;\r\n } // s is between two elements, always return the rightmost\r\n if (s > a[i]) {\r\n return 1;\r\n }\r\n if (s <= a[i - 1]) {\r\n return -1;\r\n }\r\n $.error('cannot compare s: ' + s + ' with a[' + i + ']. a is: ' + a.join(','));\r\n },\r\n /*\r\n * Perform binary search to find searchElement into a generic array.\r\n * It uses a customized compareFunc to perform the comparison between\r\n * two elements of the array and a getElement function to pick the\r\n * element from the array (e.g., in case we want to pick a field of an\r\n * array of objects)\r\n */\r\n 'binarySearch': function (array, searchElement, getElementFunc, compareFunc) {\r\n var minIndex = 0;\r\n var maxIndex = array.length - 1;\r\n var currentIndex;\r\n var currentElement;\r\n\r\n while (minIndex <= maxIndex) {\r\n currentIndex = (minIndex + maxIndex) / 2 | 0;\r\n currentElement = getElementFunc(array, currentIndex);\r\n\r\n // lt = -1 (searchElement < currentElement)\r\n // eq = 0\r\n // gt = 1 (searchElement > currentElement)\r\n var lt_eq_gt = compareFunc(searchElement, array, currentIndex);\r\n\r\n if (lt_eq_gt > 0) {\r\n minIndex = currentIndex + 1;\r\n }\r\n else if (lt_eq_gt < 0) {\r\n maxIndex = currentIndex - 1;\r\n }\r\n else {\r\n return currentIndex;\r\n }\r\n }\r\n\r\n return -1;\r\n },\r\n /*\r\n * Returns true if this slider has limit, false otherwise. There can be\r\n * an upper limit and a lower limit for the sliders.\r\n * The lower/upper limits are values that are out of the slider range,\r\n * but that can be selected by the user when he moves a slider all the\r\n * way down the minimum and up to the maximum value.\r\n */\r\n 'haveLimits': function () {\r\n var $this = this,\r\n lowerLimit = $this.data('lower-limit'),\r\n upperLimit = $this.data('upper-limit'),\r\n haveLimits = false;\r\n\r\n if (typeof lowerLimit !== 'undefined' &&\r\n typeof upperLimit !== 'undefined') {\r\n\r\n haveLimits = true;\r\n }\r\n\r\n return haveLimits;\r\n },\r\n /*\r\n * This method is called whenever the style of the grips needs to get\r\n * updated.\r\n */\r\n 'refresh_grips_style': function () {\r\n var $this = this,\r\n settings = $this.data('settings');\r\n\r\n // Skip refreshing grips style if no hihglight is specified in\r\n // construction\r\n if (typeof settings.highlight === 'undefined') {\r\n return;\r\n }\r\n\r\n var highlightedRangeMin = $this.data('highlightedRangeMin');\r\n\r\n if (typeof highlightedRangeMin === 'undefined') {\r\n return;\r\n }\r\n\r\n var $leftGrip = $this.find(settings.left_grip_selector),\r\n $rightGrip = $this.find(settings.right_grip_selector),\r\n highlightedRangeMax = $this.data('highlightedRangeMax'),\r\n curMin = $this.data('cur_min'),\r\n curMax = $this.data('cur_max'),\r\n highlightGripClass = settings.highlight.grip_class;\r\n\r\n // curmin is within the highlighted range\r\n if (curMin < highlightedRangeMin || curMin > highlightedRangeMax) {\r\n // de-highlight grip\r\n $leftGrip.removeClass(highlightGripClass);\r\n }\r\n else {\r\n // highlight grip\r\n $leftGrip.addClass(highlightGripClass);\r\n }\r\n\r\n // time to highlight right grip\r\n if (curMax < highlightedRangeMin || curMax > highlightedRangeMax) {\r\n // de-highlight grip\r\n $rightGrip.removeClass(highlightGripClass);\r\n }\r\n else {\r\n // highlight grip\r\n $rightGrip.addClass(highlightGripClass);\r\n }\r\n },\r\n /* \r\n * Set left and right handle at the right position on the screen (pixels) \r\n * given the desired position in currency.\r\n * \r\n * e.g., _methods.set_position_from_val.call($this, 10000, 100000);\r\n * \r\n * may set the left handle at 100px and the right handle at\r\n * 200px;\r\n * \r\n */\r\n 'set_position_from_val': function (cur_min, cur_max) {\r\n var $this = this;\r\n // \r\n // We need to understand how much pixels cur_min and cur_max\r\n // correspond.\r\n //\r\n var range_min = $this.data('range_min'),\r\n range_max = $this.data('range_max');\r\n\r\n //\r\n // (safety) constrain the cur_min or the cur_max value between the\r\n // max/min ranges allowed for this slider.\r\n //\r\n if (cur_min < range_min) {\r\n cur_min = range_min;\r\n }\r\n if (cur_min > range_max) {\r\n cur_min = range_max;\r\n }\r\n\r\n if ($this.data('has_right_grip')) {\r\n if (cur_max > range_max) {\r\n cur_max = range_max;\r\n }\r\n if (cur_max < range_min) {\r\n cur_max = range_min;\r\n }\r\n }\r\n else {\r\n cur_max = $this.data('cur_max');\r\n }\r\n\r\n var leftPx = methods.value_to_px.call($this, cur_min),\r\n rightPx = methods.value_to_px.call($this, cur_max);\r\n\r\n _methods.set_handles_at_px.call($this, leftPx, rightPx);\r\n\r\n // save this position\r\n $this.data('cur_min', cur_min);\r\n\r\n if ($this.data('has_right_grip')) {\r\n $this.data('cur_max', cur_max);\r\n }\r\n\r\n return $this;\r\n },\r\n /*\r\n * Set the position of the handles at the specified pixel points (taking\r\n * the whole slider width as a maximum point).\r\n */\r\n 'set_position_from_px': function (leftPx, rightPx) {\r\n var $this = this;\r\n\r\n //\r\n // we need to find a value from the given value in pixels\r\n //\r\n\r\n // now set the position as requested...\r\n _methods.set_handles_at_px.call($this, leftPx, rightPx);\r\n\r\n var valueLeftRight = _methods.getSliderValuesAtPositionPx.call($this, leftPx, rightPx),\r\n leftPxInValue = valueLeftRight[0],\r\n rightPxInValue = valueLeftRight[1];\r\n\r\n // ... and save the one we've found.\r\n $this.data('cur_min', leftPxInValue);\r\n\r\n if ($this.data('has_right_grip')) {\r\n $this.data('cur_max', rightPxInValue);\r\n }\r\n\r\n return $this;\r\n },\r\n /*\r\n * Updates the CSS of grips and bar so that the left grip appears at\r\n * leftPx and the right grip appears at rightPx. Note: leftPx can be >\r\n * rightPx.\r\n */\r\n 'set_handles_at_px': function (leftPx, rightPx) {\r\n var $this = this;\r\n var settings = $this.data('settings');\r\n\r\n var left_grip_selector = settings.left_grip_selector,\r\n right_grip_selector = settings.right_grip_selector,\r\n value_bar_selector = settings.value_bar_selector;\r\n\r\n var handleWidth = $this.data('left_grip_width');\r\n\r\n // The left grip\r\n $this.find(left_grip_selector).css('left', leftPx + 'px');\r\n\r\n // The right grip\r\n $this.find(right_grip_selector).css('left', rightPx + 'px');\r\n\r\n // The value bar\r\n if ($this.data('has_right_grip')) {\r\n // If both the grips are there, the value bar must stick to\r\n // beginning and the end of the grips. \r\n $this.find(value_bar_selector)\r\n .css('left', leftPx + 'px')\r\n .css('width', (rightPx - leftPx + handleWidth) + 'px');\r\n }\r\n else {\r\n if (!_naked_bar_deltas) {\r\n _methods.populateNakedBarDeltas.call($this, leftPx, rightPx, handleWidth);\r\n }\r\n\r\n if (rightPx > leftPx) {\r\n // The naked end of the bar is on the right of the grip\r\n $this.find(value_bar_selector)\r\n .css('left', leftPx + 'px')\r\n .css('width', rightPx - leftPx + _naked_bar_deltas.toEndWidth + 'px');\r\n }\r\n else {\r\n // The naked end of the bar is on the left of the grip\r\n // NOTE: leftPx and rightPx are to be read swapped here.\r\n $this.find(value_bar_selector)\r\n .css('left', rightPx + _naked_bar_deltas.toBeginLeft + 'px')\r\n .css('width', (leftPx - rightPx + _naked_bar_deltas.toBeginWidth) + 'px');\r\n }\r\n }\r\n\r\n return $this;\r\n\r\n },\r\n 'drag_start_func_touch': function (e, settings, $left_grip, $right_grip, is_touch) {\r\n var $this = this,\r\n original_event = e.originalEvent,\r\n touch = original_event.touches[0];\r\n\r\n // for touch devices we need to make sure we allow the user to scroll\r\n // if the click was too far from the slider.\r\n var curY = touch.pageY,\r\n curX = touch.pageX;\r\n\r\n // is the user allowed to grab if he/she tapped too far from the\r\n // slider?\r\n var ydelta = Math.abs($this.offset().top - curY),\r\n slider_left = $this.offset().left,\r\n xldelta = slider_left - curX,\r\n xrdelta = curX - (slider_left + $this.width());\r\n\r\n if (ydelta > settings.touch_tolerance_value_bar_y ||\r\n xldelta > settings.touch_tolerance_value_bar_x ||\r\n xrdelta > settings.touch_tolerance_value_bar_x) {\r\n\r\n return;\r\n }\r\n\r\n original_event.preventDefault();\r\n _original_mousex = touch.pageX;\r\n\r\n // true : is touch event\r\n _methods.drag_start_func.call($this, touch, settings, $left_grip,\r\n $right_grip, is_touch);\r\n },\r\n 'drag_start_func': function (e, settings, $leftGrip, $rightGrip,\r\n is_touch) {\r\n\r\n var $this = this;\r\n\r\n $this.find(settings.left_grip_selector +\r\n ',' + settings.value_bar_selector +\r\n ',' + settings.right_grip_selector).removeClass(\r\n settings.animating_css_class\r\n );\r\n\r\n if (!methods.is_enabled.call($this)) {\r\n return;\r\n }\r\n\r\n //\r\n // if the user used the finger, he/she is allowed to touch anywhere.\r\n // but if the mouse is used, we want to enable the logic only for\r\n // left grip, right grip, bar/panel elements.\r\n //\r\n var $target = $(e.target);\r\n\r\n // ... if the highlight range was enabled we should check wether\r\n // the user has tapped or clicked the highlight panel...\r\n var targetIsPanelSelector = false;\r\n if (typeof settings.highlight === 'object') {\r\n targetIsPanelSelector = $target.is(settings.highlight.panel_selector);\r\n }\r\n\r\n if (is_touch === false && !$target.is(settings.left_grip_selector) && !$target.is(settings.right_grip_selector) && !$target.is(settings.value_bar_selector) && !targetIsPanelSelector && !$target.is($this)) {\r\n\r\n return;\r\n }\r\n\r\n // - - - -\r\n // the following logic finds the nearest slider grip and starts\r\n // dragging it.\r\n // - - - -\r\n\r\n _$current_slider = $this;\r\n\r\n var leftGripPositionPx = _methods.getGripPositionPx.call($this, $leftGrip),\r\n sliderWidthPx = _methods.getSliderWidthPx.call($this) - $this.data('left_grip_width'),\r\n lleft = $leftGrip.offset().left,\r\n rleft, // don't compute this yet (maybe not needed if 1 grip)\r\n curX,\r\n ldist,\r\n rdist,\r\n ldelta,\r\n rdelta;\r\n\r\n var rightGripPositionPx = _methods.getRightGripPositionPx.call($this);\r\n\r\n //\r\n // We need to do as if the click happened a bit more on the left.\r\n // That's because we will be setting the left CSS property at the\r\n // point where the click happened, meaning the slider grip will be\r\n // spanning to the right.\r\n //\r\n curX = Math.round(e.pageX) - ($this.data('left_grip_width') / 2);\r\n\r\n // calculate deltas from left and right grip\r\n ldist = Math.abs(lleft - curX);\r\n ldelta = curX - lleft;\r\n\r\n if ($this.data('has_right_grip')) {\r\n rleft = $rightGrip.offset().left;\r\n rdist = Math.abs(rleft - curX);\r\n rdelta = curX - rleft;\r\n }\r\n else {\r\n // no right grip... we make the right slider\r\n // unreachable!\r\n rdist = ldist * 2;\r\n rdelta = ldelta * 2;\r\n }\r\n\r\n // notify the beginning of a dragging...\r\n settings.user_drag_start_callback.call($this, e);\r\n\r\n if (ldist === rdist) {\r\n\r\n if (curX < lleft) {\r\n // move the left grip\r\n leftGripPositionPx += ldelta;\r\n _is_left_grip = true;\r\n }\r\n else {\r\n // move the right grip\r\n rightGripPositionPx += rdelta;\r\n _is_left_grip = false;\r\n }\r\n }\r\n else if (ldist < rdist) {\r\n\r\n // move the left grip\r\n leftGripPositionPx += ldelta;\r\n _is_left_grip = true;\r\n }\r\n else {\r\n // move the right grip\r\n rightGripPositionPx += rdelta;\r\n _is_left_grip = false;\r\n }\r\n\r\n //\r\n // Limit the right grip to the maximum allowed - as the user can\r\n // actually click beyond it!\r\n //\r\n // ...............\r\n // ^-- maximum clickable\r\n // ^--- maximum allowed (i.e., sliderWidth - gripWidth)\r\n //\r\n // if user clicks at sliderWidth, we will be setting CSS left of\r\n // right handle having:\r\n //\r\n // ...............R <-- out of bound :-(\r\n // ^-- maximum clickable\r\n // ^--- maximum allowed (i.e., sliderWidth - gripWidth)\r\n //\r\n // but we want:\r\n //\r\n // ..............R <-- within bound :-)\r\n // ^-- maximum clickable\r\n // ^--- maximum allowed (i.e., sliderWidth - gripWidth)\r\n //\r\n // Hence we limit.\r\n //\r\n\r\n if ($this.data('has_right_grip')) {\r\n // here we check the right handle only, because it should\r\n // always be the one that gets moved if the user clicks towards\r\n // the right extremity!\r\n if (rightGripPositionPx > sliderWidthPx) {\r\n rightGripPositionPx = sliderWidthPx;\r\n }\r\n }\r\n else {\r\n // in case we have one handle only, we will be moving the left\r\n // handle instead of the right one... hence we need to perform\r\n // this check on the left handle as well!\r\n if (leftGripPositionPx > sliderWidthPx) {\r\n leftGripPositionPx = sliderWidthPx;\r\n }\r\n }\r\n\r\n // this can happen because the user can click on the left handle!\r\n // (which is out of the left boundary)\r\n if (leftGripPositionPx < 0) {\r\n leftGripPositionPx = 0;\r\n }\r\n\r\n _is_mousedown = true;\r\n\r\n var prev_min = $this.data('cur_min'),\r\n prev_max = $this.data('cur_max');\r\n\r\n _methods.set_position_from_px.call($this, leftGripPositionPx, rightGripPositionPx);\r\n\r\n // set the style of the grips according to the highlighted range\r\n _methods.refresh_grips_style.call($this);\r\n\r\n _methods.notify_changed_implicit.call($this, 'drag_start', prev_min, prev_max);\r\n\r\n // no need to call preventDefault on touch events, as we called\r\n // preventDefault on the original event already\r\n if (Object.prototype.toString.apply(e) !== \"[object Touch]\") {\r\n e.preventDefault();\r\n }\r\n },\r\n 'drag_move_func_touch': function (e) {\r\n if (_is_mousedown === true) {\r\n var original_event = e.originalEvent;\r\n original_event.preventDefault();\r\n var touch = original_event.touches[0];\r\n _methods.drag_move_func(touch);\r\n }\r\n },\r\n 'drag_move_func': function (e) {\r\n if (_is_mousedown) {\r\n // our slider element.\r\n var $this = _$current_slider,\r\n settings = $this.data('settings'),\r\n sliderWidthPx = _methods.getSliderWidthPx.call($this) - $this.data('left_grip_width'),\r\n leftGripPositionPx = _methods.getLeftGripPositionPx.call($this);\r\n\r\n var rightGripPositionPx = _methods.getRightGripPositionPx.call($this);\r\n\r\n //\r\n // Here we are going to set the position in pixels based on\r\n // where the user has moved the mouse cursor. We obtain the\r\n // position of the mouse cursors via e.pageX, which returns the\r\n // absolute position of the mouse on the screen.\r\n //\r\n var absoluteMousePosition = Math.round(e.pageX);\r\n\r\n //\r\n // Compute the delta (in px) for the slider movement. It is the\r\n // difference between the new position of the cursor and the\r\n // old position of the cursor.\r\n //\r\n // Based on the delta we decide how to move the dragged handle.\r\n //\r\n // 0 : no movement\r\n // -delta: move left\r\n // +delta: move right\r\n //\r\n var delta = absoluteMousePosition - _original_mousex;\r\n\r\n //\r\n // User cannot drag the handles outside the slider bar area.\r\n //\r\n\r\n // 1) calculate the area within which the movement is\r\n // considered to be valid.\r\n var half_a_grip_width = $this.data('left_grip_width') / 2,\r\n drag_area_start = $this.offset().left + $this.data('left_grip_width') - half_a_grip_width,\r\n drag_area_end = drag_area_start + sliderWidthPx;\r\n\r\n if (settings.crossable_handles === false && $this.data('has_right_grip')) {\r\n // if handles are not crossable, we should define the left\r\n // and the right boundary of the movement.\r\n if (_is_left_grip) {\r\n drag_area_end = drag_area_start + rightGripPositionPx;\r\n }\r\n else {\r\n drag_area_start = drag_area_start + leftGripPositionPx;\r\n }\r\n }\r\n\r\n // 2) by default we accept to move the slider according to both\r\n // the deltas (i.e., left or right)\r\n var ignore_positive_delta = 0,\r\n ignore_negative_delta = 0;\r\n\r\n // 3) but if the user is moving the mouse beyond the draggable\r\n // area, we should only accept a movement in one direction.\r\n if (absoluteMousePosition < drag_area_start) {\r\n ignore_positive_delta = 1;\r\n ignore_negative_delta = 0;\r\n }\r\n if (absoluteMousePosition > drag_area_end) {\r\n ignore_negative_delta = 1;\r\n ignore_positive_delta = 0;\r\n }\r\n\r\n //\r\n // Here we decide whether to invert the grip being moved.\r\n //\r\n if (settings.crossable_handles === true &&\r\n $this.data('has_right_grip')) {\r\n\r\n if (_is_left_grip) {\r\n\r\n // ... if we are using the left grip\r\n if (rightGripPositionPx <= sliderWidthPx) {\r\n\r\n // the inversion logic should only be active when the\r\n // slider is not at the extremity\r\n if (leftGripPositionPx + delta > rightGripPositionPx) {\r\n\r\n _is_left_grip = false;\r\n\r\n // TWEAK: keep the position of the left handle fixed\r\n // at the one of the right handle as the user may\r\n // have moved the mouse too fast, thus giving\r\n // leftGripPositionPx > rightGripPositionPx.\r\n //\r\n // Basically here we avoid:\r\n // \r\n // Initial State:\r\n //\r\n // ------L-R------ (leftGripPositionPx < rightGripPositionPx)\r\n //\r\n // Fast Mouse Move:\r\n //\r\n // --------R--L--- (leftGripPositionPx + delta)\r\n // --------R-L---- (leftGripPositionPx [ still > rightGripPositionPx! ])\r\n //\r\n // _is_left_grip becomes false (this code)\r\n // \r\n leftGripPositionPx = rightGripPositionPx;\r\n }\r\n }\r\n }\r\n else {\r\n // ... converse logic\r\n if (leftGripPositionPx >= 0) {\r\n if (rightGripPositionPx + delta < leftGripPositionPx) {\r\n\r\n // current_max = current_min;\r\n _is_left_grip = true;\r\n\r\n rightGripPositionPx = leftGripPositionPx;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //\r\n // Decide the position of the new handles.\r\n //\r\n var nextLeftGripPositionPx = leftGripPositionPx,\r\n nextRightGripPositionPx = rightGripPositionPx;\r\n\r\n if ((delta > 0 && !ignore_positive_delta) ||\r\n (delta < 0 && !ignore_negative_delta)) {\r\n\r\n if (_is_left_grip) {\r\n nextLeftGripPositionPx += delta;\r\n }\r\n else {\r\n nextRightGripPositionPx += delta;\r\n }\r\n }\r\n\r\n _methods.validateAndMoveGripsToPx.call($this, nextLeftGripPositionPx, nextRightGripPositionPx);\r\n\r\n // prepare for next movement\r\n _original_mousex = absoluteMousePosition;\r\n\r\n\r\n // no need to call preventDefault on touch events, as we called\r\n // preventDefault on the original event already\r\n if (Object.prototype.toString.apply(e) !== \"[object Touch]\") {\r\n e.preventDefault();\r\n }\r\n }\r\n },\r\n 'drag_end_func_touch': function (e) {\r\n var original_event = e.originalEvent;\r\n original_event.preventDefault();\r\n var touch = original_event.touches[0];\r\n _methods.drag_end_func(touch);\r\n },\r\n 'drag_end_func': function (/* e */) {\r\n var $this = _$current_slider;\r\n if (typeof $this !== 'undefined') {\r\n _is_mousedown = false;\r\n _original_mousex = undefined;\r\n\r\n _methods.notify_mouse_up_implicit.call($this, _is_left_grip);\r\n\r\n // require another click on a handler before going into here again!\r\n _$current_slider = undefined;\r\n\r\n // put back the class once user finished dragging\r\n var settings = $this.data('settings');\r\n $this.find(settings.left_grip_selector +\r\n ',' + settings.value_bar_selector +\r\n ',' + settings.right_grip_selector).addClass(\r\n settings.animating_css_class\r\n );\r\n }\r\n },\r\n 'get_rounding_for_value': function (v) {\r\n var $this = this;\r\n var rounding = $this.data('rounding');\r\n var rounding_ranges = $this.data('rounding_ranges');\r\n\r\n if (typeof rounding_ranges === 'object') {\r\n\r\n // then it means the rounding is not fixed, we should find the\r\n // value in the roundings_array.\r\n var roundingIdx = _methods.binarySearch.call($this, rounding_ranges, v,\r\n // pick an element from the array\r\n function (array, index) {\r\n return array[index].range;\r\n },\r\n\r\n // compare search element with current element\r\n // < 0 search < current\r\n // 0 equals\r\n // > 0 search > current\r\n function (search, array, currentIdx) {\r\n\r\n // first check if this is our element\r\n\r\n // this is our element if the search value is:\r\n if (search < array[currentIdx].range) {\r\n\r\n // we can have a match or search in the left half\r\n if (currentIdx > 0) {\r\n if (search >= array[currentIdx - 1].range) {\r\n return 0;\r\n }\r\n else {\r\n // go left\r\n return -1;\r\n }\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n else {\r\n // we must search in the next half\r\n return 1;\r\n }\r\n }\r\n );\r\n\r\n rounding = 1;\r\n if (roundingIdx > -1) {\r\n rounding = parseInt(rounding_ranges[roundingIdx].value, 10);\r\n }\r\n else {\r\n var lastIdx = rounding_ranges.length - 1;\r\n if (v >= rounding_ranges[lastIdx].range) {\r\n rounding = rounding_ranges[lastIdx].value;\r\n }\r\n }\r\n }\r\n return rounding;\r\n },\r\n /*\r\n * Calls the user mouseup callback with the right parameters. Relies on\r\n * $data('beforestart_min/max') in addition to the isLeftGrip parameter.\r\n *\r\n * NOTE: saves the new beforestart_min and begforestart_max as well.\r\n */\r\n 'notify_mouse_up_implicit': function (isLeftGrip) {\r\n var $this = this,\r\n current_min_value = methods.get_current_min_value.call($this),\r\n current_max_value = methods.get_current_max_value.call($this),\r\n didValuesChange = false;\r\n\r\n // check if we changed.\r\n if (($this.data('beforestart_min') !== current_min_value) ||\r\n ($this.data('beforestart_max') !== current_max_value)\r\n ) {\r\n // values have changed!\r\n didValuesChange = true;\r\n\r\n // save the new values\r\n $this.data('beforestart_min', current_min_value);\r\n $this.data('beforestart_max', current_max_value);\r\n }\r\n\r\n\r\n var settings = $this.data('settings');\r\n\r\n settings.user_mouseup_callback.call($this,\r\n methods.get_current_min_value.call($this),\r\n methods.get_current_max_value.call($this),\r\n isLeftGrip,\r\n didValuesChange\r\n );\r\n\r\n return $this;\r\n },\r\n /*\r\n * NOTE: this method may take the previous min/max value as input.\r\n * if no arguments are provided the method blindly notifies.\r\n */\r\n 'notify_changed_implicit': function (cause, prevMin, prevMax) {\r\n var $this = this;\r\n\r\n var force = false;\r\n if (cause === 'init' || cause === 'refresh') {\r\n force = true;\r\n }\r\n\r\n var curMin = methods.get_current_min_value.call($this),\r\n curMax = methods.get_current_max_value.call($this);\r\n\r\n if (!force) {\r\n prevMin = methods.round_value_according_to_rounding.call($this, prevMin);\r\n prevMax = methods.round_value_according_to_rounding.call($this, prevMax);\r\n }\r\n\r\n if (force || curMin !== prevMin || curMax !== prevMax) {\r\n\r\n _methods.notify_changed_explicit.call($this, cause, prevMin, prevMax, curMin, curMax);\r\n\r\n force = 1;\r\n }\r\n\r\n return force;\r\n },\r\n 'notify_changed_explicit': function (cause, prevMin, prevMax, curMin, curMax) {\r\n var $this = this,\r\n settings = $this.data('settings');\r\n\r\n // maybe update aria attributes for accessibility\r\n if ($this.data('aria_enabled')) {\r\n _methods.updateAriaAttributes.call($this);\r\n }\r\n\r\n settings.value_changed_callback.call($this, cause, curMin, curMax, prevMin, prevMax);\r\n\r\n return $this;\r\n },\r\n 'validate_params': function (settings) {\r\n var $this = this;\r\n var min_value = $this.data('range_min'),\r\n max_value = $this.data('range_max'),\r\n cur_min = $this.data('cur_min'),\r\n lower_limit = $this.data('lower-limit'),\r\n upper_limit = $this.data('upper-limit');\r\n\r\n var have_limits = _methods.haveLimits.call($this);\r\n\r\n if (typeof min_value === 'undefined') {\r\n $.error(\"the data-range_min attribute was not defined\");\r\n }\r\n if (typeof max_value === 'undefined') {\r\n $.error(\"the data-range_max attribute was not defined\");\r\n }\r\n if (typeof cur_min === 'undefined') {\r\n $.error(\"the data-cur_min attribute must be defined\");\r\n }\r\n if (min_value > max_value) {\r\n $.error(\"Invalid input parameter. must be min < max\");\r\n }\r\n\r\n if (have_limits && lower_limit > upper_limit) {\r\n $.error('Invalid data-lower-limit or data-upper-limit');\r\n }\r\n if ($this.find(settings.left_grip_selector).length === 0) {\r\n $.error(\"Cannot find element pointed by left_grip_selector: \" + settings.left_grip_selector);\r\n }\r\n /* \r\n * NOTE: only validate right grip selector if it is not\r\n * undefined otherwise just assume that if it isn't\r\n * found isn't there. This is because we initialize the\r\n * slider at once and let the markup decide if the\r\n * slider is there or not.\r\n */\r\n if (typeof settings.right_grip_selector !== 'undefined') {\r\n if ($this.find(settings.right_grip_selector).length === 0) {\r\n $.error(\"Cannot find element pointed by right_grip_selector: \" + settings.right_grip_selector);\r\n }\r\n }\r\n\r\n // same thing for the value bar selector\r\n if (typeof settings.value_bar_selector !== 'undefined') {\r\n if ($this.find(settings.value_bar_selector).length === 0) {\r\n $.error(\"Cannot find element pointed by value_bar_selector\" + settings.value_bar_selector);\r\n }\r\n }\r\n },\r\n /*\r\n * Maps a value between [minRange -- maxRange] into [0 -- n].\r\n * The target range will be an integer number.\r\n */\r\n 'rangemap_0_to_n': function (val, n) {\r\n var $this = this;\r\n var rangeMin = $this.data('range_min');\r\n var rangeMax = $this.data('range_max');\r\n\r\n if (val <= rangeMin) {\r\n return 0;\r\n }\r\n if (val >= rangeMax) {\r\n return n;\r\n }\r\n\r\n return Math.floor((n * val - n * rangeMin) / (rangeMax - rangeMin));\r\n },\r\n /*\r\n * Maps a value between [0 -- max] back into [minRange -- maxRange].\r\n * The target range can be a floating point number.\r\n */\r\n 'inverse_rangemap_0_to_n': function (val, max) {\r\n var $this = this;\r\n var rangeMin = $this.data('range_min');\r\n var rangeMax = $this.data('range_max');\r\n\r\n if (val <= 0) {\r\n return rangeMin;\r\n }\r\n if (val >= max) {\r\n return rangeMax;\r\n }\r\n\r\n //\r\n // To do this we first map 0 -- max relatively withing [minRange\r\n // and maxRange], that is between [0 and (maxRange-minRange)].\r\n //\r\n var relativeMapping = (rangeMax - rangeMin) * val / max;\r\n\r\n // ... then we bring this to the actual value by adding rangeMin.\r\n return relativeMapping + rangeMin;\r\n }\r\n\r\n };\r\n var methods = {\r\n\r\n 'teardown': function () {\r\n var $this = this;\r\n\r\n // remove all data set with .data()\r\n $this.removeData();\r\n\r\n // unbind the document as well\r\n $(document)\r\n .unbind('mousemove.nstSlider')\r\n .unbind('mouseup.nstSlider');\r\n\r\n // unbind events bound to the container element\r\n $this.parent()\r\n .unbind('mousedown.nstSlider')\r\n .unbind('touchstart.nstSlider')\r\n .unbind('touchmove.nstSlider')\r\n .unbind('touchend.nstSlider');\r\n\r\n // unbind events bound to the current element\r\n $this.unbind('keydown.nstSlider')\r\n .unbind('keyup.nstSlider');\r\n\r\n return $this;\r\n },\r\n 'init': function (options) {\r\n var settings = $.extend({\r\n 'animating_css_class': 'nst-animating',\r\n // this is the distance from the value bar by which we should\r\n // grab the left or the right handler.\r\n 'touch_tolerance_value_bar_y': 30, // px\r\n 'touch_tolerance_value_bar_x': 15, // px\r\n // where is the left grip?\r\n 'left_grip_selector': '.nst-slider-grip-left',\r\n // where is the right grip?\r\n // undefined = (only left grip bar)\r\n 'right_grip_selector': undefined,\r\n\r\n // Specify highlight like this if you want to highlight a range\r\n // in the slider.\r\n //\r\n // 'highlight' : {\r\n // 'grip_class' : '.nsti-slider-hi',\r\n // 'panel_selector' : '.nst-slider-highlight-panel'\r\n // },\r\n 'highlight': undefined,\r\n\r\n // Lets you specify the increment rounding for the slider handles\r\n // for when the user moves them.\r\n // It can be a string, indicating a fixed increment, or an object\r\n // indicating the increment based on the value to be rounded.\r\n //\r\n // This can be specified in the following form: {\r\n // '1' : '100', \r\n // '10' : '1000', /* rounding = 10 for values in [100-999] */\r\n // '50' : '10000',\r\n // }\r\n 'rounding': undefined,\r\n\r\n // if the bar is not wanted\r\n 'value_bar_selector': undefined,\r\n\r\n // Allow handles to cross each other while one of them is being\r\n // dragged. This option is ignored if just one handle is used.\r\n 'crossable_handles': true,\r\n\r\n 'value_changed_callback': function (/*cause, vmin, vmax*/) {\r\n return;\r\n },\r\n 'user_mouseup_callback': function (/*vmin, vmax, left_grip_moved*/) {\r\n return;\r\n },\r\n 'user_drag_start_callback': function () {\r\n return;\r\n }\r\n }, options);\r\n\r\n //\r\n // we need to unbind events attached to the document,\r\n // as if we replace html elements and re-initialize, we\r\n // don't want to double-bind events!\r\n //\r\n var $document = $(document);\r\n\r\n // make sure only one event is bound to the document\r\n $document.unbind('mouseup.nstSlider');\r\n $document.unbind('mousemove.nstSlider');\r\n\r\n $document.bind('mousemove.nstSlider', _methods.drag_move_func);\r\n $document.bind('mouseup.nstSlider', _methods.drag_end_func);\r\n\r\n return this.each(function () {\r\n //\r\n // $this is like:\r\n //\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //\r\n // It is supposed to be enclosed in a container\r\n //\r\n var $this = $(this),\r\n $container = $this.parent();\r\n\r\n // enable: the user is able to move the grips of this slider.\r\n $this.data('enabled', true);\r\n\r\n // fix some values first\r\n var rangeMin = $this.data('range_min'),\r\n rangeMax = $this.data('range_max'),\r\n valueMin = $this.data('cur_min'),\r\n valueMax = $this.data('cur_max');\r\n\r\n // assume 0 if valueMax is not specified\r\n if (typeof valueMax === 'undefined') {\r\n valueMax = valueMin;\r\n }\r\n\r\n if (rangeMin === '') {\r\n rangeMin = 0;\r\n }\r\n if (rangeMax === '') {\r\n rangeMax = 0;\r\n }\r\n if (valueMin === '') {\r\n valueMin = 0;\r\n }\r\n if (valueMax === '') {\r\n valueMax = 0;\r\n }\r\n\r\n $this.data('range_min', rangeMin);\r\n $this.data('range_max', rangeMax);\r\n $this.data('cur_min', valueMin);\r\n $this.data('cur_max', valueMax);\r\n\r\n // halt on error\r\n _methods.validate_params.call($this, settings);\r\n\r\n $this.data('settings', settings);\r\n\r\n // override rounding from markup if defined in configuration\r\n if (typeof settings.rounding !== 'undefined') {\r\n methods.set_rounding.call($this, settings.rounding);\r\n }\r\n else if (typeof $this.data('rounding') !== 'undefined') {\r\n methods.set_rounding.call($this, $this.data('rounding'));\r\n }\r\n else {\r\n methods.set_rounding.call($this, 1);\r\n }\r\n\r\n var left_grip = $this.find(settings.left_grip_selector)[0],\r\n $left_grip = $(left_grip),\r\n $right_grip = $($this.find(settings.right_grip_selector)[0]);\r\n\r\n // make sure left grip can be tabbed if the user hasn't\r\n // defined their own tab index\r\n if (typeof $left_grip.attr('tabindex') === 'undefined') {\r\n $left_grip.attr('tabindex', 0);\r\n }\r\n\r\n // no right handler means single handler\r\n var has_right_grip = false;\r\n if ($this.find(settings.right_grip_selector).length > 0) {\r\n has_right_grip = true;\r\n\r\n // make sure right grip can be tabbed if the user hasn't\r\n // defined their own tab index\r\n if (typeof $right_grip.attr('tabindex') === 'undefined') {\r\n $right_grip.attr('tabindex', 0);\r\n }\r\n }\r\n $this.data('has_right_grip', has_right_grip);\r\n\r\n // enable aria attributes update?\r\n if ($this.data('aria_enabled') === true) {\r\n // setup aria role attributes on each grip\r\n $left_grip\r\n .attr('role', 'slider')\r\n .attr('aria-disabled', 'false');\r\n\r\n if (has_right_grip) {\r\n $right_grip\r\n .attr('role', 'slider')\r\n .attr('aria-disabled', 'false');\r\n }\r\n }\r\n\r\n //\r\n // deal with keypresses here\r\n //\r\n $this.bind('keyup.nstSlider', function (e) {\r\n if ($this.data('enabled')) {\r\n switch (e.which) {\r\n case 37: // left\r\n case 38: // up\r\n case 39: // right \r\n case 40: // down\r\n\r\n if (_before_keydown_value === _before_keyup_value) {\r\n\r\n // we should search for the next value change...\r\n // ... in which direction? depends on whe\r\n\r\n var searchUntil = _methods.getSliderWidthPx.call($this),\r\n val,\r\n i,\r\n setAtPixel;\r\n\r\n if (_before_keydown_pixel - _before_keyup_pixel < 0) {\r\n // the grip was moved towards the right\r\n\r\n for (i = _before_keyup_pixel; i <= searchUntil; i++) {\r\n // if the value at pixel i is different than\r\n // the current value then we are good to go.\r\n //\r\n val = methods.round_value_according_to_rounding.call($this,\r\n _methods.getSliderValuesAtPositionPx.call($this, i, i)[1]\r\n );\r\n if (val !== _before_keyup_value) {\r\n setAtPixel = i;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n // the grip was moved towards the left\r\n\r\n for (i = _before_keyup_pixel; i >= 0; i--) {\r\n\r\n // if the value at pixel i is different than\r\n // the current value then we are good to go.\r\n //\r\n val = methods.round_value_according_to_rounding.call($this,\r\n _methods.getSliderValuesAtPositionPx.call($this, i, i)[1]\r\n );\r\n if (val !== _before_keyup_value) {\r\n setAtPixel = i;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n // we need to set the slider at this position\r\n if (_is_left_grip) {\r\n _methods.validateAndMoveGripsToPx.call($this, setAtPixel, _methods.getRightGripPositionPx.call($this));\r\n }\r\n else {\r\n _methods.validateAndMoveGripsToPx.call($this, _methods.getLeftGripPositionPx.call($this), setAtPixel);\r\n }\r\n\r\n //\r\n // call the mouseup callback when the key is up!\r\n //\r\n _methods.notify_mouse_up_implicit.call($this, _is_left_grip);\r\n }\r\n }\r\n\r\n // clear values \r\n _before_keydown_value = undefined;\r\n _before_keydown_pixel = undefined;\r\n _before_keyup_value = undefined;\r\n _before_keyup_pixel = undefined;\r\n }\r\n });\r\n $this.bind('keydown.nstSlider', function (evt) {\r\n if ($this.data('enabled')) {\r\n\r\n var moveHandleBasedOnKeysFunc = function ($grip, e) {\r\n\r\n var nextLeft = _methods.getLeftGripPositionPx.call($this),\r\n nextRight = _methods.getRightGripPositionPx.call($this);\r\n\r\n if (typeof _before_keydown_value === 'undefined') {\r\n _before_keydown_pixel = _is_left_grip ? nextLeft : nextRight;\r\n\r\n _before_keydown_value = _is_left_grip ? methods.get_current_min_value.call($this) : methods.get_current_max_value.call($this);\r\n }\r\n\r\n switch (e.which) {\r\n case 37: // left\r\n case 40: // down\r\n if (_is_left_grip) {\r\n nextLeft--;\r\n } else {\r\n nextRight--;\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case 38: // up\r\n case 39: // right \r\n if (_is_left_grip) {\r\n nextLeft++;\r\n } else {\r\n nextRight++;\r\n }\r\n\r\n e.preventDefault();\r\n break;\r\n }\r\n\r\n _before_keyup_pixel = _is_left_grip ? nextLeft : nextRight;\r\n\r\n // may write into cur_min, cur_max data...\r\n _methods.validateAndMoveGripsToPx.call($this, nextLeft,\r\n nextRight);\r\n\r\n _before_keyup_value = _is_left_grip ? methods.get_current_min_value.call($this) : methods.get_current_max_value.call($this);\r\n };\r\n\r\n // default\r\n if (has_right_grip && $this.find(':focus').is($right_grip)) {\r\n _is_left_grip = false;\r\n moveHandleBasedOnKeysFunc.call($this, $right_grip, evt);\r\n }\r\n else {\r\n _is_left_grip = true;\r\n moveHandleBasedOnKeysFunc.call($this, $left_grip, evt);\r\n }\r\n }\r\n });\r\n\r\n // determine size of grips\r\n var left_grip_width = _methods.getLeftGripWidth.call($this),\r\n right_grip_width = has_right_grip ?\r\n _methods.getRightGripWidth.call($this) : left_grip_width;\r\n\r\n $this.data('left_grip_width', left_grip_width);\r\n $this.data('right_grip_width', right_grip_width);\r\n\r\n $this.data('value_bar_selector', settings.value_bar_selector);\r\n\r\n // set behaviour of naked bar in case of one handle\r\n if (!has_right_grip) {\r\n var bStickToSides = valueMax === rangeMax || valueMax === rangeMin;\r\n _methods.setNakedBarDelta.call($this,\r\n bStickToSides ? \"stickToSides\" : \"middle\",\r\n left_grip_width\r\n );\r\n }\r\n\r\n // this will set the range to the right extreme in such a case.\r\n if (rangeMin === rangeMax || valueMin === valueMax) {\r\n methods.set_range.call($this, rangeMin, rangeMax);\r\n }\r\n else {\r\n\r\n // set the initial position\r\n _methods.set_position_from_val.call($this,\r\n $this.data('cur_min'), $this.data('cur_max'));\r\n }\r\n\r\n _methods.notify_changed_implicit.call($this, 'init');\r\n\r\n // handle mouse movement\r\n $this.data('beforestart_min', methods.get_current_min_value.call($this));\r\n $this.data('beforestart_max', methods.get_current_max_value.call($this));\r\n\r\n // pass a closure, so that 'this' will be the current slider bar,\r\n // not the container.\r\n $this.bind('mousedown.nstSlider', function (e) {\r\n _methods.drag_start_func.call($this, e, settings, $left_grip, $right_grip, false);\r\n });\r\n\r\n $container.bind('touchstart.nstSlider', function (e) {\r\n _methods.drag_start_func_touch.call($this, e, settings, $left_grip, $right_grip, true);\r\n });\r\n $container.bind('touchend.nstSlider', function (e) {\r\n _methods.drag_end_func_touch.call($this, e);\r\n });\r\n $container.bind('touchmove.nstSlider', function (e) {\r\n _methods.drag_move_func_touch.call($this, e);\r\n });\r\n\r\n // if the data-histogram attribute exists, then use this\r\n // histogram to set the step distribution\r\n var step_histogram = $this.data('histogram');\r\n if (typeof step_histogram !== 'undefined') {\r\n methods.set_step_histogram.call($this, step_histogram);\r\n }\r\n }); // -- each slider\r\n },\r\n 'get_range_min': function () {\r\n var $this = this;\r\n return $this.data('range_min');\r\n },\r\n 'get_range_max': function () {\r\n var $this = this;\r\n return $this.data('range_max');\r\n },\r\n 'get_current_min_value': function () {\r\n var $this = $(this);\r\n\r\n var rangeMin = methods.get_range_min.call($this),\r\n rangeMax = methods.get_range_max.call($this);\r\n\r\n var currentMin = $this.data('cur_min');\r\n\r\n var min;\r\n if (rangeMin >= currentMin) {\r\n min = rangeMin;\r\n }\r\n else {\r\n min = methods.round_value_according_to_rounding.call($this, currentMin);\r\n }\r\n\r\n if (_methods.haveLimits.call($this)) {\r\n if (min <= rangeMin) {\r\n return $this.data('lower-limit');\r\n }\r\n else if (min >= rangeMax) {\r\n return $this.data('upper-limit');\r\n }\r\n }\r\n else {\r\n if (min <= rangeMin) {\r\n return rangeMin;\r\n }\r\n else if (min >= rangeMax) {\r\n return rangeMax;\r\n }\r\n }\r\n\r\n return min;\r\n },\r\n 'get_current_max_value': function () {\r\n var $this = $(this);\r\n\r\n var rangeMin = methods.get_range_min.call($this),\r\n rangeMax = methods.get_range_max.call($this);\r\n\r\n var currentMax = $this.data('cur_max');\r\n\r\n var max;\r\n if (rangeMax <= currentMax) {\r\n max = rangeMax;\r\n }\r\n else {\r\n max = methods.round_value_according_to_rounding.call($this, currentMax);\r\n }\r\n\r\n\r\n if (_methods.haveLimits.call($this)) {\r\n if (max >= rangeMax) {\r\n return $this.data('upper-limit');\r\n }\r\n else if (max <= rangeMin) {\r\n return $this.data('lower-limit');\r\n }\r\n }\r\n else {\r\n if (max >= rangeMax) {\r\n return rangeMax;\r\n }\r\n else if (max <= rangeMin) {\r\n return rangeMin;\r\n }\r\n }\r\n\r\n return max;\r\n },\r\n 'is_handle_to_left_extreme': function () {\r\n var $this = this;\r\n if (_methods.haveLimits.call($this)) {\r\n return $this.data('lower-limit') === methods.get_current_min_value.call($this);\r\n }\r\n else {\r\n return methods.get_range_min.call($this) === methods.get_current_min_value.call($this);\r\n }\r\n },\r\n 'is_handle_to_right_extreme': function () {\r\n var $this = this;\r\n if (_methods.haveLimits.call($this)) {\r\n return $this.data('upper-limit') === methods.get_current_max_value.call($this);\r\n }\r\n else {\r\n return methods.get_range_max.call($this) === methods.get_current_max_value.call($this);\r\n }\r\n },\r\n // just call set_position on the current values\r\n 'refresh': function () {\r\n var $this = this;\r\n\r\n // re-set the slider step if specified\r\n var lastStepHistogram = $this.data('last_step_histogram');\r\n if (typeof lastStepHistogram !== 'undefined') {\r\n methods.set_step_histogram.call($this, lastStepHistogram);\r\n }\r\n\r\n // re-center given values\r\n _methods.set_position_from_val.call($this,\r\n methods.get_current_min_value.call($this),\r\n methods.get_current_max_value.call($this)\r\n );\r\n\r\n // re-highlight the range\r\n var highlightRangeMin = $this.data('highlightedRangeMin');\r\n if (typeof highlightRangeMin === 'number') {\r\n // a highlight range is present, we must update it\r\n var highlightRangeMax = $this.data('highlightedRangeMax');\r\n methods.highlight_range.call($this, highlightRangeMin, highlightRangeMax);\r\n }\r\n\r\n _methods.notify_changed_implicit.call($this, 'refresh');\r\n return $this;\r\n },\r\n 'disable': function () {\r\n var $this = this,\r\n settings = $this.data('settings');\r\n\r\n $this.data('enabled', false)\r\n .find(settings.left_grip_selector)\r\n .attr('aria-disabled', 'true')\r\n .end()\r\n .find(settings.right_grip_selector)\r\n .attr('aria-disabled', 'true')\r\n .end()\r\n .find(\".bar\")\r\n .attr('aria-disabled', 'true');\r\n\r\n return $this;\r\n },\r\n 'enable': function () {\r\n var $this = this,\r\n settings = $this.data('settings');\r\n\r\n $this.data('enabled', true)\r\n .find(settings.left_grip_selector)\r\n .attr('aria-disabled', 'false')\r\n .end()\r\n .find(settings.right_grip_selector)\r\n .attr('aria-disabled', 'false')\r\n .end()\r\n .find(\".bar\")\r\n .attr('aria-disabled', 'false');\r\n\r\n return $this;\r\n },\r\n 'is_enabled': function () {\r\n var $this = this;\r\n return $this.data('enabled');\r\n },\r\n /*\r\n * This one is the public method, called externally.\r\n * It sets the position and notifies in fact.\r\n */\r\n 'set_position': function (min, max) {\r\n var $this = this;\r\n\r\n var prev_min = $this.data('cur_min'),\r\n prev_max = $this.data('cur_max');\r\n\r\n if (min > max) {\r\n _methods.set_position_from_val.call($this, max, min);\r\n }\r\n else {\r\n _methods.set_position_from_val.call($this, min, max);\r\n }\r\n\r\n // set the style of the grips according to the highlighted range\r\n _methods.refresh_grips_style.call($this);\r\n\r\n _methods.notify_changed_implicit.call($this, 'set_position', prev_min, prev_max);\r\n\r\n // this is for the future, therefore \"before the next\r\n // interaction starts\"\r\n $this.data('beforestart_min', min);\r\n $this.data('beforestart_max', max);\r\n },\r\n /*\r\n * This tells the slider to increment its step non linearly over the\r\n * current range, based on the histogram on where results are.\r\n *\r\n * the input parameter 'histogram' identifies an empirical probability\r\n * density function (PDF).\r\n *\r\n */\r\n 'set_step_histogram': function (histogram) {\r\n var $this = this;\r\n\r\n $this.data('last_step_histogram', histogram);\r\n\r\n if (typeof histogram === 'undefined') {\r\n $.error('got an undefined histogram in set_step_histogram');\r\n _methods.unset_step_histogram.call($this);\r\n }\r\n\r\n var sliderWidthPx = _methods.getSliderWidthPx.call($this) - $this.data('left_grip_width'),\r\n nbuckets = histogram.length;\r\n\r\n if (sliderWidthPx <= 0) {\r\n // that means the slider is not visible...\r\n return;\r\n }\r\n\r\n //\r\n // we need to transform this pdf into a cdf, and use it to obtain\r\n // two mappings: pixel to value and value to pixel.\r\n //\r\n // 1) normalize the pdf to sum to sliderWidthPx first\r\n var i;\r\n var histogram_sum = 0;\r\n for (i = 0; i < nbuckets; i++) {\r\n histogram_sum += histogram[i];\r\n }\r\n\r\n //\r\n // if the sum of the histogram is 0 it means that all is 0 in the \r\n // histogram! (i.e, flat histogram). In this case we already know\r\n // what's going to be the answer...\r\n //\r\n if (histogram_sum === 0) {\r\n // ... and the answer is: a linear scale between min_range and\r\n // max range!\r\n methods.unset_step_histogram.call($this);\r\n\r\n return $this;\r\n }\r\n\r\n // coefficient for normalization\r\n var coeff = parseFloat(histogram_sum) / sliderWidthPx;\r\n\r\n // go normalize the histogram using this coefficient!\r\n for (i = 0; i < nbuckets; i++) {\r\n histogram[i] = histogram[i] / coeff;\r\n }\r\n\r\n // 2) now that the histogram is normalized, extract the cumulative\r\n // distribution function (CDF). This is an always increasing function\r\n // that ranges between 0 and sliderWidthPx;\r\n //\r\n // We also build the inverted cdf, just the cdf read the other way\r\n // around.\r\n //\r\n var cdf = [histogram[0]]; // points to pixels\r\n for (i = 1; i < nbuckets; i++) {\r\n var cdf_x = cdf[i - 1] + histogram[i];\r\n cdf.push(cdf_x);\r\n }\r\n cdf.push(sliderWidthPx);\r\n\r\n\r\n // the first value here is always min_range as the cdf is supposed\r\n // to start from 0 (also first pixel = min_range)\r\n var pixel_to_value_lookup = [$this.data('range_min')];\r\n\r\n var last_filled = 0; // we've already filled 0\r\n\r\n // now stretch over the rest of the cdf\r\n var last_price_for_cdf_bucket = pixel_to_value_lookup[0];\r\n\r\n var cdf_bucket_count = 0;\r\n while (last_filled <= sliderWidthPx) { // do until all pixels are filled\r\n\r\n // get next item from cdf\r\n var fill_up_to_px = parseInt(cdf.shift(), 10);\r\n var price_for_cdf_bucket =\r\n _methods.inverse_rangemap_0_to_n.call($this, cdf_bucket_count + 1, nbuckets + 1);\r\n\r\n cdf_bucket_count++;\r\n\r\n // how many pixels do we have to fill\r\n var fill_tot = fill_up_to_px - last_filled;\r\n\r\n // interpolate and fill\r\n var diff = price_for_cdf_bucket - last_price_for_cdf_bucket;\r\n for (i = last_filled; i < fill_up_to_px; i++) {\r\n var next_price_for_cdf_bucket =\r\n last_price_for_cdf_bucket + (diff * (i - last_filled + 1) / fill_tot);\r\n\r\n pixel_to_value_lookup.push(next_price_for_cdf_bucket);\r\n\r\n last_filled++;\r\n\r\n last_price_for_cdf_bucket = next_price_for_cdf_bucket;\r\n }\r\n\r\n if (last_filled === sliderWidthPx) {\r\n break;\r\n }\r\n }\r\n pixel_to_value_lookup[pixel_to_value_lookup.length - 1] = $this.data('range_max');\r\n\r\n // 3) build lookup functions to extract pixels and values from the\r\n // cdf and the inverted cdf.\r\n //\r\n var pixel_to_value_mapping = function (pixel) {\r\n return pixel_to_value_lookup[parseInt(pixel, 10)];\r\n };\r\n\r\n var value_to_pixel_mapping = function (value) {\r\n //\r\n // Binary search into the array of pixels, returns always the\r\n // rightmost pixel if there is no exact match.\r\n //\r\n var suggestedPixel = _methods.binarySearch.call($this, pixel_to_value_lookup, value,\r\n function (a, i) {\r\n return a[i];\r\n }, // access a value in the array\r\n _methods.binarySearchValueToPxCompareFunc\r\n );\r\n\r\n // exact match\r\n if (pixel_to_value_lookup[suggestedPixel] === value) {\r\n return suggestedPixel;\r\n }\r\n\r\n // approx match: we need to check if it's closer to the value\r\n // at suggestedPixel or the value at suggestedPixel-1\r\n if (Math.abs(pixel_to_value_lookup[suggestedPixel - 1] - value) <\r\n Math.abs(pixel_to_value_lookup[suggestedPixel] - value)) {\r\n\r\n return suggestedPixel - 1;\r\n }\r\n return suggestedPixel;\r\n };\r\n\r\n //\r\n // these two functions will be stored and then used internally to\r\n // decide what value to display given a certain pixel, and what\r\n // pixel to put the slider on given a certain value.\r\n //\r\n $this.data('pixel_to_value_mapping', pixel_to_value_mapping);\r\n $this.data('value_to_pixel_mapping', value_to_pixel_mapping);\r\n\r\n return $this;\r\n },\r\n /*\r\n * Remove the pixel-to-value and the value-to-pixel mappings from the\r\n * slider so that the slider can follow a linear step over the current\r\n * range again.\r\n */\r\n 'unset_step_histogram': function () {\r\n var $this = this;\r\n\r\n $this.removeData('pixel_to_value_mapping');\r\n $this.removeData('value_to_pixel_mapping');\r\n $this.removeData('last_step_histogram');\r\n\r\n return $this;\r\n },\r\n 'set_range': function (rangeMin, rangeMax) {\r\n var $this = this;\r\n\r\n // get the current values\r\n var oldMin = methods.get_current_min_value.call($this),\r\n oldMax = methods.get_current_max_value.call($this);\r\n\r\n // set range\r\n $this.data('range_min', rangeMin);\r\n $this.data('range_max', rangeMax);\r\n\r\n // try to re-center old values in the new range.\r\n // NOTE: this may set different values!\r\n _methods.set_position_from_val.call($this, oldMin, oldMax);\r\n\r\n /*\r\n * Re-highlight ranges if any are defined.\r\n */\r\n // var highlightRangeMin = $this.data('highlightedRangeMin');\r\n // if (typeof rangeMin === 'number') {\r\n // // a highlight range is present, we must update it\r\n // var highlightRangeMax = $this.data('highlightedRangeMax');\r\n // methods.highlight_range.call($this, highlightRangeMin, highlightRangeMax);\r\n // }\r\n\r\n // pass old min and max in the notify_changed_implicit method, so that we\r\n // notify if we need to\r\n _methods.notify_changed_implicit.call($this, 'set_range', oldMin, oldMax);\r\n\r\n return $this;\r\n },\r\n /*\r\n * This method highlights the range of the slider apart from the\r\n * position of the slider grips.\r\n * To work well, the slider must have background color set to\r\n * transparent in the CSS or not set.\r\n */\r\n 'highlight_range': function (rangeMin, rangeMax) {\r\n var $this = this;\r\n var settings = $this.data('settings');\r\n\r\n if (typeof settings.highlight === \"undefined\") {\r\n $.error('you cannot call highlight_range if you haven\\' specified the \"highlight\" parameter in construction!');\r\n }\r\n\r\n // avoid empty string\r\n if (!rangeMin) {\r\n rangeMin = 0;\r\n }\r\n if (!rangeMax) {\r\n rangeMax = 0;\r\n }\r\n\r\n // we need to map rangeMin and rangeMax into pixels.\r\n var leftPx = methods.value_to_px.call($this, rangeMin),\r\n rightPx = methods.value_to_px.call($this, rangeMax),\r\n barWidth = rightPx - leftPx + $this.data('left_grip_width');\r\n\r\n // set position\r\n var $highlightPanel = $this.find(\r\n settings.highlight.panel_selector\r\n );\r\n\r\n $highlightPanel.css('left', leftPx + \"px\");\r\n $highlightPanel.css('width', barWidth + \"px\");\r\n\r\n // keep the latest highlighted range, because if set_range is called\r\n // we must be able to update the highlighting.\r\n $this.data('highlightedRangeMin', rangeMin);\r\n $this.data('highlightedRangeMax', rangeMax);\r\n\r\n // now decide wether the handler should be highlight\r\n _methods.refresh_grips_style.call($this);\r\n\r\n return $this;\r\n },\r\n /*\r\n * Sets the increment rounding for the slider, see input parameters section\r\n * for more information.\r\n */\r\n 'set_rounding': function (rounding) {\r\n var $this = this;\r\n\r\n if (typeof rounding === 'string' && rounding.indexOf('{') > -1) {\r\n // probably a json string\r\n rounding = $.parseJSON(rounding);\r\n }\r\n\r\n $this.data('rounding', rounding);\r\n\r\n // build an array of roundings and sort it by value to facilitate search\r\n // when the range is going to be set.\r\n var roundings_array = [];\r\n if (typeof rounding === 'object') {\r\n // initial object has the form { value : range }\r\n var rounding_value;\r\n for (rounding_value in rounding) { // skip_javascript_test\r\n if (rounding.hasOwnProperty(rounding_value)) {\r\n var rounding_range = rounding[rounding_value];\r\n roundings_array.push({\r\n 'range': rounding_range,\r\n 'value': rounding_value\r\n });\r\n }\r\n }\r\n\r\n // now sort it by rounding range\r\n roundings_array.sort(function (a, b) {\r\n return a.range - b.range;\r\n });\r\n\r\n $this.data('rounding_ranges', roundings_array);\r\n }\r\n else {\r\n $this.removeData('rounding_ranges');\r\n }\r\n\r\n return $this;\r\n },\r\n 'get_rounding': function () {\r\n var $this = this;\r\n return $this.data('rounding');\r\n },\r\n /*\r\n * This method rounds a given value to the closest integer defined\r\n * according to the rounding. Examples:\r\n * rounding: 10 v: 12.3 --> 10\r\n * rounding: 1 v: 12.3 --> 12\r\n * rounding: 10 v: 12.6 --> 13\r\n */\r\n 'round_value_according_to_rounding': function (v) {\r\n var $this = this;\r\n var rounding = _methods.get_rounding_for_value.call($this, v);\r\n\r\n if (rounding > 0) {\r\n // We bring ourselves in a space of unitary roundings. You can\r\n // imagine now that sliders range between a certain minimum and \r\n // maximum, and we always increase/decrease of one.\r\n var increment = v / rounding;\r\n\r\n // This is the proposed value.\r\n var increment_int = parseInt(increment, 10);\r\n\r\n // delta is a positive number between 0 and 1 that tells us how\r\n // close is the slider to integer + 1 (i.e., the next rounding).\r\n // 0 means the grip is exactly on integer\r\n // 1 means the grip is on integer + 1.\r\n var delta = increment - increment_int;\r\n\r\n // now use delta to modify or not the current value.\r\n if (delta > 0.5) {\r\n increment_int++;\r\n }\r\n\r\n // we now move the \r\n var rounded = increment_int * rounding;\r\n\r\n return rounded;\r\n }\r\n else {\r\n $.error('rounding must be > 0, got ' + rounding + ' instead');\r\n }\r\n return v;\r\n },\r\n /*\r\n * Utility function. Given a value within the range of the slider,\r\n * converts the value in pixels. If a value_to_pixel_mapping function\r\n * is defined it will be used, otherwise a linear mapping is used for\r\n * the conversion.\r\n */\r\n 'value_to_px': function (value) {\r\n var $this = this,\r\n value_to_pixel_mapping_func = $this.data('value_to_pixel_mapping');\r\n\r\n // try using non-linear mapping if it's there...\r\n if (typeof value_to_pixel_mapping_func !== 'undefined') {\r\n return value_to_pixel_mapping_func(value);\r\n }\r\n\r\n // ... use linear mapping otherwise\r\n var w = _methods.getSliderWidthPx.call($this) - $this.data('left_grip_width');\r\n return _methods.rangemap_0_to_n.call($this, value, w);\r\n }\r\n };\r\n\r\n var __name__ = 'nstSlider';\r\n\r\n $.fn[__name__] = function (method) {\r\n /*\r\n * Just a router for method calls\r\n */\r\n if (methods[method]) {\r\n if (this.data('initialized') === true) {\r\n // call a method\r\n return methods[method].apply(this,\r\n Array.prototype.slice.call(arguments, 1)\r\n );\r\n }\r\n else {\r\n throw new Error('method ' + method + ' called on an uninitialized instance of ' + __name__);\r\n }\r\n }\r\n else if (typeof method === 'object' || !method) {\r\n // call init, user passed the settings as parameters\r\n this.data('initialized', true);\r\n return methods.init.apply(this, arguments);\r\n }\r\n else {\r\n $.error('Cannot call method ' + method);\r\n }\r\n };\r\n})(jQuery);\r\n","/*!\r\n * tipso - A Lightweight Responsive jQuery Tooltip Plugin v1.0.1\r\n * Copyright (c) 2014 Bojan Petkovski\r\n * http://tipso.object505.com\r\n * Licensed under the MIT license\r\n * http://object505.mit-license.org/\r\n */\r\n;\r\n(function ($, window, document, undefined) {\r\n var pluginName = \"tipso\",\r\n defaults = {\r\n speed: 400,\r\n //background: '#55b555',\r\n //color: '#ffffff',\r\n position: 'top',\r\n width: 200,\r\n delay: 200,\r\n offsetX: 0,\r\n offsetY: 0,\r\n content: null,\r\n ajaxContentUrl: null,\r\n useTitle: true,\r\n onBeforeShow: null,\r\n onShow: null,\r\n onHide: null,\r\n theme: \"\"\r\n };\r\n\r\n function Plugin(element, options) {\r\n this.element = $(element);\r\n this.settings = $.extend({}, defaults, options);\r\n this._defaults = defaults;\r\n this._name = pluginName;\r\n this._title = this.element.attr('title');\r\n this.mode = 'hide';\r\n this.mouseon = false;\r\n this.init();\r\n }\r\n\r\n $.extend(Plugin.prototype, {\r\n init: function () {\r\n var obj = this,\r\n $e = this.element;\r\n $e.addClass('tipso_style').removeAttr('title');\r\n if (this.settings.theme) {\r\n $e.addClass(this.settings.theme);\r\n }\r\n if (isTouchSupported()) {\r\n $e.on('click' + '.' + pluginName, function (e) {\r\n obj.mode == 'hide' ? obj.show() : obj.hide();\r\n e.stopPropagation();\r\n });\r\n $(document).on('click', function () {\r\n if (obj.mode == 'show') {\r\n obj.hide();\r\n }\r\n });\r\n } else {\r\n $e.on('mouseover' + '.' + pluginName, function () {\r\n obj.mouseon = true;\r\n obj.show();\r\n });\r\n $e.on('mouseout' + '.' + pluginName, function () {\r\n if (obj.mouseTimeout) {\r\n window.clearTimeout(obj.mouseTimeout);\r\n }\r\n obj.mouseon = false;\r\n obj.mouseTimeout = setTimeout(function () {\r\n if (!obj.mouseon) {\r\n obj.hide();\r\n }\r\n }, 200)\r\n });\r\n }\r\n },\r\n tooltip: function () {\r\n if (!this.tipso_bubble) {\r\n this.tipso_bubble = $(\r\n '
    '\r\n );\r\n if (this.settings.theme) {\r\n this.tipso_bubble.addClass(this.settings.theme);\r\n }\r\n }\r\n return this.tipso_bubble;\r\n },\r\n show: function () {\r\n var tipso_bubble = this.tooltip(),\r\n obj = this,\r\n $win = $(window);\r\n if ($.isFunction(obj.settings.onBeforeShow)) {\r\n obj.settings.onBeforeShow($(this));\r\n }\r\n tipso_bubble.css({\r\n //background: obj.settings.background,\r\n //color: obj.settings.color,\r\n width: obj.settings.width\r\n }).hide();\r\n tipso_bubble.find('.tipso_content').html(obj.content());\r\n reposition(obj);\r\n $win.resize(function () {\r\n reposition(obj);\r\n });\r\n tipso_bubble.on(\"mouseover\", function () {\r\n obj.mouseon = true;\r\n }).on(\"mouseout\", function () {\r\n if (obj.mouseTimeout) {\r\n window.clearTimeout(obj.mouseTimeout);\r\n }\r\n obj.mouseon = false;\r\n setTimeout(function () {\r\n if (!obj.mouseon) {\r\n obj.hide();\r\n }\r\n }, 200)\r\n });\r\n obj.timeout = window.setTimeout(function () {\r\n tipso_bubble.appendTo('body').stop(true, true).fadeIn(obj.settings\r\n .speed, function () {\r\n obj.mode = 'show';\r\n if ($.isFunction(obj.settings.onShow)) {\r\n obj.settings.onShow($(this));\r\n }\r\n });\r\n }, obj.settings.delay);\r\n },\r\n hide: function () {\r\n var obj = this,\r\n tipso_bubble = this.tooltip();\r\n window.clearTimeout(obj.timeout);\r\n obj.timeout = null;\r\n tipso_bubble.stop(true, true).fadeOut(obj.settings.speed,\r\n function () {\r\n $(this).remove();\r\n if ($.isFunction(obj.settings.onHide) && obj.mode == 'show') {\r\n obj.settings.onHide($(this));\r\n }\r\n obj.mode = 'hide';\r\n });\r\n },\r\n destroy: function () {\r\n var $e = this.element;\r\n $e.off('.' + pluginName);\r\n $e.removeData(pluginName);\r\n $e.removeClass('tipso_style').attr('title', this._title);\r\n },\r\n content: function () {\r\n var content,\r\n $e = this.element,\r\n obj = this,\r\n title = this._title;\r\n if (obj.settings.ajaxContentUrl) {\r\n content = $.ajax({\r\n type: \"GET\",\r\n url: obj.settings.ajaxContentUrl,\r\n async: false\r\n }).responseText;\r\n } else if (obj.settings.content) {\r\n content = obj.settings.content;\r\n } else {\r\n if (obj.settings.useTitle === true) {\r\n content = title;\r\n } else {\r\n content = $e.data('tipso');\r\n }\r\n }\r\n return content;\r\n },\r\n update: function (key, value) {\r\n var obj = this;\r\n if (value) {\r\n obj.settings[key] = value;\r\n } else {\r\n return obj.settings[key];\r\n }\r\n }\r\n });\r\n\r\n function isTouchSupported() {\r\n var msTouchEnabled = window.navigator.msMaxTouchPoints;\r\n var generalTouchEnabled = \"ontouchstart\" in document.createElement(\r\n \"div\");\r\n if (msTouchEnabled || generalTouchEnabled) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function realHeight(obj) {\r\n var clone = obj.clone();\r\n clone.css(\"visibility\", \"hidden\");\r\n $('body').append(clone);\r\n var height = clone.outerHeight();\r\n clone.remove();\r\n return height;\r\n }\r\n\r\n function reposition(thisthat) {\r\n var tipso_bubble = thisthat.tooltip(),\r\n $e = thisthat.element,\r\n obj = thisthat,\r\n $win = $(window),\r\n arrow = 10,\r\n pos_top, pos_left, diff;\r\n switch (obj.settings.position) {\r\n case 'top':\r\n pos_left = $e.offset().left + ($e.outerWidth() / 2) - (tipso_bubble\r\n .outerWidth() / 2);\r\n pos_top = $e.offset().top - realHeight(tipso_bubble) - arrow;\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: -8\r\n });\r\n if (pos_top < $win.scrollTop()) {\r\n pos_top = $e.offset().top + $e.outerHeight() + arrow;\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-bottom-color': obj.settings.background,\r\n 'border-top-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('bottom');\r\n } else {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-top-color': obj.settings.background,\r\n 'border-bottom-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('top');\r\n }\r\n break;\r\n case 'bottom':\r\n pos_left = $e.offset().left + ($e.outerWidth() / 2) - (tipso_bubble\r\n .outerWidth() / 2);\r\n pos_top = $e.offset().top + $e.outerHeight() + arrow;\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: -8\r\n });\r\n if (pos_top + realHeight(tipso_bubble) > $win.scrollTop() + $win.outerHeight()) {\r\n pos_top = $e.offset().top - realHeight(tipso_bubble) - arrow;\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-top-color': obj.settings.background,\r\n 'border-bottom-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('top');\r\n } else {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-bottom-color': obj.settings.background,\r\n 'border-top-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass(obj.settings.position);\r\n }\r\n break;\r\n case 'left':\r\n pos_left = $e.offset().left - tipso_bubble.outerWidth() - arrow;\r\n pos_top = $e.offset().top + ($e.outerHeight() / 2) - (realHeight(\r\n tipso_bubble) / 2);\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginTop: -8,\r\n marginLeft: ''\r\n });\r\n if (pos_left < $win.scrollLeft()) {\r\n pos_left = $e.offset().left + $e.outerWidth() + arrow;\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-right-color': obj.settings.background,\r\n 'border-left-color': 'transparent',\r\n 'border-top-color': 'transparent',\r\n 'border-bottom-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('right');\r\n } else {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-left-color': obj.settings.background,\r\n 'border-right-color': 'transparent',\r\n 'border-top-color': 'transparent',\r\n 'border-bottom-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass(obj.settings.position);\r\n }\r\n break;\r\n case 'right':\r\n pos_left = $e.offset().left + $e.outerWidth() + arrow;\r\n pos_top = $e.offset().top + ($e.outerHeight() / 2) - (realHeight(\r\n tipso_bubble) / 2);\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginTop: -8,\r\n marginLeft: ''\r\n });\r\n if (pos_left + arrow + obj.settings.width > $win.scrollLeft() +\r\n $win.outerWidth()) {\r\n pos_left = $e.offset().left - tipso_bubble.outerWidth() - arrow;\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-left-color': obj.settings.background,\r\n 'border-right-color': 'transparent',\r\n 'border-top-color': 'transparent',\r\n 'border-bottom-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('left');\r\n } else {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-right-color': obj.settings.background,\r\n 'border-left-color': 'transparent',\r\n 'border-top-color': 'transparent',\r\n 'border-bottom-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass(obj.settings.position);\r\n }\r\n break;\r\n }\r\n if (pos_left < $win.scrollLeft() && (obj.settings.position == 'bottom' ||\r\n obj.settings.position == 'top')) {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: pos_left - 8\r\n });\r\n pos_left = 0;\r\n }\r\n if (pos_left + obj.settings.width > $win.outerWidth() && (obj.settings.position ==\r\n 'bottom' || obj.settings.position == 'top')) {\r\n diff = $win.outerWidth() - (pos_left + obj.settings.width);\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: -diff - 8,\r\n marginTop: ''\r\n });\r\n pos_left = pos_left + diff;\r\n }\r\n if (pos_left < $win.scrollLeft() && (obj.settings.position == 'left' ||\r\n obj.settings.position == 'right')) {\r\n pos_left = $e.offset().left + ($e.outerWidth() / 2) - (tipso_bubble.outerWidth() /\r\n 2);\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: -8,\r\n marginTop: ''\r\n });\r\n pos_top = $e.offset().top - realHeight(tipso_bubble) - arrow;\r\n if (pos_top < $win.scrollTop()) {\r\n pos_top = $e.offset().top + $e.outerHeight() + arrow;\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-bottom-color': obj.settings.background,\r\n 'border-top-color': 'transparent',\r\n 'border-left-color': 'transparent',\r\n 'border-right-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('bottom');\r\n } else {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-top-color': obj.settings.background,\r\n 'border-bottom-color': 'transparent',\r\n 'border-left-color': 'transparent',\r\n 'border-right-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('top');\r\n }\r\n if (pos_left + obj.settings.width > $win.outerWidth()) {\r\n diff = $win.outerWidth() - (pos_left + obj.settings.width);\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: -diff - 8,\r\n marginTop: ''\r\n });\r\n pos_left = pos_left + diff;\r\n }\r\n if (pos_left < $win.scrollLeft()) {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: pos_left - 8\r\n });\r\n pos_left = 0;\r\n }\r\n }\r\n if (pos_left + obj.settings.width > $win.outerWidth() && (obj.settings.position ==\r\n 'left' || obj.settings.position == 'right')) {\r\n pos_left = $e.offset().left + ($e.outerWidth() / 2) - (tipso_bubble.outerWidth() /\r\n 2);\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: -8,\r\n marginTop: ''\r\n });\r\n pos_top = $e.offset().top - realHeight(tipso_bubble) - arrow;\r\n if (pos_top < $win.scrollTop()) {\r\n pos_top = $e.offset().top + $e.outerHeight() + arrow;\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-bottom-color': obj.settings.background,\r\n 'border-top-color': 'transparent',\r\n 'border-left-color': 'transparent',\r\n 'border-right-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('bottom');\r\n } else {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n 'border-top-color': obj.settings.background,\r\n 'border-bottom-color': 'transparent',\r\n 'border-left-color': 'transparent',\r\n 'border-right-color': 'transparent'\r\n });\r\n tipso_bubble.removeClass('top bottom left right');\r\n tipso_bubble.addClass('top');\r\n }\r\n if (pos_left + obj.settings.width > $win.outerWidth()) {\r\n diff = $win.outerWidth() - (pos_left + obj.settings.width);\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: -diff - 8,\r\n marginTop: ''\r\n });\r\n pos_left = pos_left + diff;\r\n }\r\n if (pos_left < $win.scrollLeft()) {\r\n tipso_bubble.find('.tipso_arrow').css({\r\n marginLeft: pos_left - 8\r\n });\r\n pos_left = 0;\r\n }\r\n }\r\n tipso_bubble.css({\r\n left: pos_left + obj.settings.offsetX,\r\n top: pos_top + obj.settings.offsetY\r\n });\r\n }\r\n\r\n $[pluginName] = $.fn[pluginName] = function (options) {\r\n var args = arguments;\r\n if (options === undefined || typeof options === 'object') {\r\n if (!(this instanceof $)) {\r\n $.extend(defaults, options);\r\n }\r\n return this.each(function () {\r\n var cached = $.data(this, 'plugin_' + pluginName);\r\n if (cached) {\r\n try {\r\n cached.destroy();\r\n } catch (err) {\r\n //block\r\n }\r\n }\r\n $.data(this, 'plugin_' + pluginName, new Plugin(this, options));\r\n });\r\n } else if (typeof options === 'string' && options[0] !== '_' && options !==\r\n 'init') {\r\n var returns;\r\n this.each(function () {\r\n var instance = $.data(this, 'plugin_' + pluginName);\r\n if (!instance) {\r\n instance = $.data(this, 'plugin_' + pluginName, new Plugin(\r\n this, options));\r\n }\r\n if (instance instanceof Plugin && typeof instance[options] ===\r\n 'function') {\r\n returns = instance[options].apply(instance, Array.prototype.slice\r\n .call(args, 1));\r\n }\r\n if (options === 'destroy') {\r\n $.data(this, 'plugin_' + pluginName, null);\r\n }\r\n });\r\n return returns !== undefined ? returns : this;\r\n }\r\n };\r\n})(jQuery, window, document);","/*!\r\n * jQuery resizeend - A jQuery plugin that allows for window resize-end event handling.\r\n * \r\n * Copyright (c) 2015 Erik Nielsen\r\n * \r\n * Licensed under the MIT license:\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * \r\n * Project home:\r\n * http://312development.com\r\n * \r\n * Version: 0.2.0\r\n * \r\n */\r\n\r\n(function(plugin) {\r\n var chicago = window.Chicago || {\r\n utils: {\r\n now: Date.now || function() {\r\n return new Date().getTime();\r\n },\r\n uid: function(prefix) {\r\n return(prefix || \"id\") + chicago.utils.now() + \"RAND\" + Math.ceil(Math.random() * 1e5);\r\n },\r\n is: {\r\n number: function(obj) {\r\n return !isNaN(parseFloat(obj)) && isFinite(obj);\r\n },\r\n fn: function(obj) {\r\n return typeof obj === \"function\";\r\n },\r\n object: function(obj) {\r\n return Object.prototype.toString.call(obj) === \"[object Object]\";\r\n }\r\n },\r\n debounce: function(fn, wait, immediate) {\r\n var timeout;\r\n return function() {\r\n var context = this,\r\n args = arguments,\r\n later = function() {\r\n timeout = null;\r\n if(!immediate) {\r\n fn.apply(context, args);\r\n }\r\n },\r\n callNow = immediate && !timeout;\r\n if(timeout) {\r\n clearTimeout(timeout);\r\n }\r\n timeout = setTimeout(later, wait);\r\n if(callNow) {\r\n fn.apply(context, args);\r\n }\r\n };\r\n }\r\n },\r\n $: window.jQuery || null\r\n };\r\n if(typeof define === \"function\" && define.amd) {\r\n define(\"chicago\", function() {\r\n chicago.load = function(res, req, onload, config) {\r\n var resources = res.split(\",\"),\r\n load = [];\r\n var base = (config.config && config.config.chicago && config.config.chicago.base ? config.config.chicago.base : \"\").replace(/\\/+$/g, \"\");\r\n if(!base) {\r\n throw new Error(\"Please define base path to jQuery resize.end in the requirejs config.\");\r\n }\r\n var i = 0;\r\n while(i < resources.length) {\r\n var resource = resources[i].replace(/\\./g, \"/\");\r\n load.push(base + \"/\" + resource);\r\n i += 1;\r\n }\r\n req(load, function() {\r\n onload(chicago);\r\n });\r\n };\r\n return chicago;\r\n });\r\n }\r\n if(window && window.jQuery) {\r\n return plugin(chicago, window, window.document);\r\n } else {\r\n if(!window.jQuery) {\r\n throw new Error(\"jQuery resize.end requires jQuery\");\r\n }\r\n }\r\n})(function(_c, win, doc) {\r\n _c.$win = _c.$(win);\r\n _c.$doc = _c.$(doc);\r\n if(!_c.events) {\r\n _c.events = {};\r\n }\r\n _c.events.resizeend = {\r\n defaults: {\r\n delay: 250\r\n },\r\n setup: function() {\r\n var args = arguments,\r\n options = {\r\n delay: _c.$.event.special.resizeend.defaults.delay\r\n },\r\n fn;\r\n if(_c.utils.is.fn(args[0])) {\r\n fn = args[0];\r\n } else {\r\n if(_c.utils.is.number(args[0])) {\r\n options.delay = args[0];\r\n } else {\r\n if(_c.utils.is.object(args[0])) {\r\n options = _c.$.extend({}, options, args[0]);\r\n }\r\n }\r\n }\r\n var uid = _c.utils.uid(\"resizeend\"),\r\n _data = _c.$.extend({\r\n delay: _c.$.event.special.resizeend.defaults.delay\r\n }, options),\r\n timer = _data,\r\n handler = function(e) {\r\n if(timer) {\r\n clearTimeout(timer);\r\n }\r\n timer = setTimeout(function() {\r\n timer = null;\r\n e.type = \"resizeend.chicago.dom\";\r\n return _c.$(e.target).trigger(\"resizeend\", e);\r\n }, _data.delay);\r\n };\r\n _c.$(this).data(\"chicago.event.resizeend.uid\", uid);\r\n return _c.$(this).on(\"resize\", _c.utils.debounce(handler, 100)).data(uid, handler);\r\n },\r\n teardown: function() {\r\n var uid = _c.$(this).data(\"chicago.event.resizeend.uid\");\r\n _c.$(this).off(\"resize\", _c.$(this).data(uid));\r\n _c.$(this).removeData(uid);\r\n return _c.$(this).removeData(\"chicago.event.resizeend.uid\");\r\n }\r\n };\r\n (function() {\r\n _c.$.event.special.resizeend = _c.events.resizeend;\r\n _c.$.fn.resizeend = function(options, callback) {\r\n return this.each(function() {\r\n _c.$(this).on(\"resizeend\", options, callback);\r\n });\r\n };\r\n })();\r\n});","/**\r\n * 基本库\r\n * @module JunboCore\r\n * @author tangfan\r\n * @desc 包含所有前端调用JS的基本方法(模板方法、随机数、时间戳、地址拼接、类型检测、日志输出等)\r\n * @version 1.5.3.2015.08.25.00038\r\n */\r\nif (!window['jQuery']) {\r\n\tif (window['Zepto']) {\r\n\t\twindow['jQuery'] = Zepto;\r\n\t}\r\n}\r\n//* Created by tangfan on 2015/8/28.\r\n//* 2015-09-02\r\n//* get msg 参数时 隔除upload关键字 用于用户自定义\r\nvar JunboCore = jc = (function ($) {\r\n /**\r\n * @class\r\n */\r\n var Core = function () {\r\n /**\r\n * 管理库的核心数据\r\n * 存储有启动数据/标记数据等\r\n */\r\n var data = {\r\n httpRoot: \"http://\" + window.location.host.toString(),\r\n root: \"###root###\",\r\n useRoot: true,\r\n rootFlag: \"self\",\r\n config: {\r\n /**\r\n * 是否为debug输出\r\n */\r\n debug: false,\r\n /**\r\n * 是否自动隐藏layer\r\n */\r\n autoHideLayer: true,\r\n /**\r\n * 消息定义ID\r\n */\r\n msg: \"\"\r\n }\r\n },\r\n $module = $(this),\r\n $$this = this\r\n ;\r\n $$this.defaultUrl = \"index.aspx\";\r\n\r\n /**\r\n * 此属性用于其它模块调用\r\n * JunboCore~$$module\r\n * @type *|HTMLElement\r\n */\r\n this.$$module = $module;\r\n\r\n /**\r\n * 填充doT模板到指定的id\r\n * @param {String} template_id 模板的ID\r\n * @param {String} content_id 要填充到的ID\r\n * @param {*} data 需要填充的数据\r\n */\r\n this.tmpl = function (template_id, content_id, data) {\r\n this.tmplByStr($(\"#\" + template_id).html(), content_id, data);\r\n };\r\n\r\n /**\r\n * 返回实际的模板html数据\r\n * @param {String} template 模板字符串\r\n * @param {Object} data\r\n */\r\n this.tmplHtml = function (template, data) {\r\n try {\r\n if (typeof doT != \"undefined\") {\r\n if (template == \"undefined\") {\r\n this.log(\"doT模板文档未定义!\");\r\n return;\r\n }\r\n var evalText = doT.template(template);\r\n return evalText(data);\r\n } else {\r\n this.log(\"未载入doT模板js!\")\r\n }\r\n } catch (err) {\r\n this.log(err);\r\n }\r\n };\r\n\r\n /**\r\n * 根据doT的文本模板渲染到指定ID\r\n * @param {String} template 模板内容\r\n * @param {String} content_id 填充到的ID\r\n * @param {Object} data 数据内容\r\n */\r\n this.tmplByStr = function (template, content_id, data) {\r\n try {\r\n if (typeof doT != \"undefined\") {\r\n if (template == \"undefined\") {\r\n this.log(\"doT模板文档未定义!\");\r\n return;\r\n }\r\n var evalText = doT.template(template);\r\n if (document.getElementById(content_id) != undefined) {\r\n $(\"#\" + content_id).html(evalText(data));\r\n }\r\n } else {\r\n this.log(\"未载入doT模板js!\")\r\n }\r\n } catch (err) {\r\n this.log(err);\r\n }\r\n };\r\n\r\n /**\r\n * URL转码 将对象转为地址栏参数方式\r\n * @param param\r\n * @param key\r\n * @param encode\r\n * @returns {string}\r\n */\r\n this.urlEncode = function (param, key, encode) {\r\n if (param == null) return '';\r\n var paramStr = '';\r\n var t = typeof (param);\r\n if (t == 'string' || t == 'number' || t == 'boolean') {\r\n paramStr += '&' + key + '=' + ((encode == null || encode) ? encodeURIComponent(param) : param);\r\n } else {\r\n for (var i in param) {\r\n var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);\r\n paramStr += $$this.urlEncode(param[i], k, encode);\r\n }\r\n }\r\n return paramStr;\r\n };\r\n\r\n this.urlDecode = function (url) {\r\n var urls = [];\r\n if (!url) {\r\n url = window.location.href;\r\n urls = url.slice(window.location.href.indexOf('?') + 1).split('&');\r\n } else {\r\n urls = url.slice(url.indexOf('?') + 1).split('&');\r\n }\r\n var res = {};\r\n $.each(urls, function (i, k) {\r\n var l = k.match(/(.+)\\=(.+)/);\r\n if (l && l.length === 3) {\r\n var d = l[2], di = d.indexOf(\"#\");//#后面的去除\r\n if (di > -1 && i === urls.length - 1) {\r\n d = d.substr(0, di);\r\n }\r\n res[l[1]] = d;\r\n }\r\n });\r\n return res;\r\n };\r\n\r\n this.htmlEncode = function (str) {\r\n var s = \"\";\r\n if (!str) return \"\";\r\n if (str.length == 0) return \"\";\r\n if ($$this.getType(str) !== \"string\") return str;\r\n s = str.replace(/&/g, \">\");\r\n s = s.replace(//g, \">\");\r\n s = s.replace(/ /g, \" \");\r\n s = s.replace(/\\'/g, \"'\");\r\n s = s.replace(/\\\"/g, \""\");\r\n s = s.replace(/\\n/g, \"
    \");\r\n return s;\r\n };\r\n\r\n this.htmlDecode = function (str) {\r\n var s = \"\";\r\n if (!str) return \"\";\r\n if (str.length == 0) return \"\";\r\n s = str.replace(/>/g, \"&\");\r\n s = s.replace(/</g, \"<\");\r\n s = s.replace(/>/g, \">\");\r\n s = s.replace(/ /g, \" \");\r\n s = s.replace(/'/g, \"\\'\");\r\n s = s.replace(/"/g, \"\\\"\");\r\n s = s.replace(/
    /g, \"\\n\");\r\n return s;\r\n };\r\n\r\n /**\r\n * 生成一个view\r\n */\r\n this.createView = function (para, render) {\r\n var o = $.extend({}, {\r\n id: \"\",\r\n template: \"\"\r\n }, para);\r\n o.render = render || function () {\r\n return jc.tmplByStr(o.template, o.id, o);\r\n };\r\n return o;\r\n };\r\n\r\n /**\r\n * 设置数据\r\n * @param {String} flag 数据标志\r\n */\r\n //* @event module#dataChange 数据变化\r\n //* @event {String} module#dataChange.flag 数据标志\r\n //* @event {Object} module#dataChange.obj 数据\r\n this.set = function (flag, obj) {\r\n try {\r\n if (arguments.length == 1) {\r\n data = $.extend({}, data, flag);\r\n return data;\r\n }\r\n var d = data[flag] || {};\r\n if (d != \"undefined\") {\r\n data[flag] = $.extend({}, d, obj);\r\n $module.trigger(\"dataChange\", {flag: flag, target: data[flag]});\r\n } else {\r\n $module.trigger(\"dataChange\", \"undefined\");\r\n }\r\n return d;\r\n } catch (err) {\r\n this.log(err);\r\n }\r\n };\r\n\r\n /**\r\n * 获取核心数据\r\n * @param {String} flag 数据标志\r\n * @returns {*}\r\n */\r\n this.get = function (flag) {\r\n switch (arguments.length) {\r\n case 0:\r\n return data;\r\n break;\r\n case 1:\r\n return data[flag];\r\n case 2:\r\n var v_1 = arguments[0];\r\n var v_2 = arguments[1];\r\n switch (v_1) {\r\n case \"url\":\r\n if (v_2) {\r\n return getUrlVar(v_2);\r\n }\r\n return getUrlVars();\r\n break;\r\n case \"msg\":\r\n return this.tool.msg[v_2];\r\n break;\r\n default:\r\n return \"unkown function!\";\r\n break;\r\n }\r\n break;\r\n break;\r\n case 3:\r\n var v1 = arguments[0];\r\n var v2 = arguments[1];\r\n var v3 = arguments[2];\r\n switch (v1) {\r\n case \"msg\":\r\n var def = \"异常代码:\" + v3 + \"\";\r\n if (this.tool.msg[v2] instanceof Function) {\r\n if (v3 == 100) {\r\n return \"\";\r\n }\r\n // 隔除upload关键字\r\n if (v2 !== \"upload\") {\r\n if (v3 <= 399 || v3 == 502 || v3 == 900) {\r\n return this.tool.msg[\"login\"](v3) || def;\r\n }\r\n }\r\n return this.tool.msg[v2](v3) || def;\r\n }\r\n break;\r\n default:\r\n return \"unkown function!\";\r\n break;\r\n }\r\n break;\r\n\r\n }\r\n };\r\n\r\n var getUrlVars = function () {\r\n var vars = [], hash;\r\n var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');\r\n for (var i = 0; i < hashes.length; i++) {\r\n hash = hashes[i].split('=');\r\n if (hash.length > 1) {\r\n vars.push(hash[0]);\r\n vars[hash[0]] = hash[1].replace(/[#|\\?].+/, \"\");\r\n }\r\n }\r\n return vars;\r\n };\r\n var getUrlVar = function (name) {\r\n return getUrlVars()[name];\r\n };\r\n\r\n /**\r\n * 生成一个时间戳\r\n * @returns {number}\r\n */\r\n this.getTimespan = function () {\r\n return new Date().getTime();\r\n };\r\n\r\n /**\r\n * 获取随机数\r\n * @param {Number} n 获取从0至n的随机数\r\n * @returns {number} 返回的随机数\r\n */\r\n this.getRandom = function (n) {\r\n return Math.floor(Math.random() * n + 1)\r\n };\r\n\r\n /**\r\n * 地址拼接\r\n * @param url1\r\n * @param url2\r\n */\r\n this.combineUrl = function (url1, url2) {\r\n url1 = $.trim(url1);\r\n url2 = $.trim(url2);\r\n if (url1 == \"\") return url2;\r\n if (url2 == \"\") return url1;\r\n if (/http/.test(url2)) return url2;\r\n if (/^\\.\\./.test(url2)) return url2;\r\n var u1C = url1.charAt(url1.length - 1) == \"/\";\r\n var u2C = url2.charAt(0) == \"/\";\r\n if (u1C && u2C) return url1.slice(0, url1.length - 1) + url2;\r\n if (!u1C && u2C) return url1 + url2;\r\n if (u1C && !u2C) return url1 + url2;\r\n if (!u1C && !u2C) return url1 + \"/\" + url2;\r\n };\r\n\r\n /**\r\n * 拼接哪个系统的url\r\n * @param id\r\n * @param url\r\n */\r\n this.combineXxUrl = function (id, url) {\r\n if (data.root && data.root.hasOwnProperty(id)) {\r\n var root = data.root[id];\r\n switch (typeof root) {\r\n case \"string\":\r\n return this.combineUrl(root, url);\r\n //case \"object\":\r\n default:\r\n if (data.config.debug && root.hasOwnProperty(\"debug\")) {\r\n return this.combineUrl(root[\"debug\"], url);\r\n } else {\r\n return this.combineUrl(root[\"release\"] || root[\"url\"], url);\r\n }\r\n break;\r\n }\r\n } else {\r\n return this.combineUrl(id, url);\r\n //return \"not set [\" + id + \"] root error!\";\r\n }\r\n };\r\n\r\n /**\r\n * 拼结服务地址\r\n * @param url\r\n * @returns {*}\r\n */\r\n this.combineJbUrl = function (url) {\r\n var root = data.root[data.rootFlag];\r\n switch (typeof root) {\r\n case \"string\":\r\n return this.combineUrl(data.root[data.rootFlag], url);\r\n case \"object\":\r\n if (data.config.debug && root.hasOwnProperty(\"debug\")) {\r\n return this.combineUrl(root[\"debug\"], url);\r\n } else {\r\n return this.combineUrl(root[\"release\"] || root[\"url\"], url);\r\n }\r\n break;\r\n default:\r\n return url;\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * 拼接根路径\r\n * @param {String} url\r\n */\r\n this.combineRoot = function (url) {\r\n var type = this.getType(data.httpRoot);\r\n var type2 = this.getType(url);\r\n if (type === \"string\") {\r\n return this.combineUrl(data.httpRoot, url);\r\n } else if (type === \"object\") {\r\n if (data.config.release) {\r\n if (data.httpRoot.hasOwnProperty(\"release\")) {\r\n return this.combineUrl(data.httpRoot[\"release\"], type2 === \"object\" ? url[\"release\"] : url);\r\n }\r\n } else {\r\n if (data.config.debug) {\r\n if (data.httpRoot.hasOwnProperty(\"debug\")) {\r\n return this.combineUrl(data.httpRoot[\"debug\"], type2 === \"object\" ? url[\"debug\"] : url);\r\n }\r\n } else {\r\n if (data.httpRoot.hasOwnProperty(\"test\")) {\r\n return this.combineUrl(data.httpRoot[\"test\"], type2 === \"object\" ? url[\"test\"] : url);\r\n }\r\n }\r\n }\r\n }\r\n return url;\r\n };\r\n\r\n /**\r\n * 获取类型\r\n * @param obj\r\n */\r\n this.getType = function (obj) {\r\n return obj == null ?\r\n String(obj) :\r\n {\r\n \"[object Array]\": \"array\",\r\n \"[object Boolean]\": \"boolean\",\r\n \"[object Date]\": \"date\",\r\n \"[object Function]\": \"function\",\r\n \"[object Number]\": \"number\",\r\n \"[object Object]\": \"object\",\r\n \"[object RegExp]\": \"regexp\",\r\n \"[object String]\": \"string\"\r\n }[Object.prototype.toString.call(obj)] || \"object\";\r\n };\r\n\r\n /**\r\n * 判断类型是否为一个函数\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\n this.isFunction = function (obj) {\r\n return this.getType(obj) === \"function\";\r\n };\r\n\r\n var url_debug = this.get(\"url\", \"debug\");\r\n\r\n /**\r\n * 输出信息\r\n * @param str 输出信息至控制台\r\n */\r\n this.log = function (str) {\r\n var program;\r\n if (this.getType(url_debug) === \"string\") {\r\n program = url_debug === \"true\";\r\n } else {\r\n program = data.config.debug;\r\n }\r\n if (program && window.console && window.console.log) {\r\n var time = new Date();\r\n var time_str = time.Format(\"yyyy-MM-dd HH:mm:ss\");\r\n var _str = time_str + \" # \";\r\n if (typeof str == \"object\") {\r\n _str += \": %O \";\r\n console.log(_str, str);\r\n } else {\r\n if (arguments.length == 2) {\r\n _str += str + \" # %O\";\r\n console.log(_str, arguments[1]);\r\n } else {\r\n console.log(_str + str);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 工具类\r\n */\r\n this.tool = (function () {\r\n function Tool() {\r\n this.check = this.check || new Check();\r\n /**\r\n * 检查类\r\n */\r\n function Check() {\r\n var _this = this;\r\n // 匹配账号 字母 数字 下划线等\r\n var reg_account = /^[\\d|\\w]+$/;\r\n // 匹配含中文、字母、数字等\r\n var reg_long_text = /^[\\u4e00-\\u9fa5\\da-zA-Z]+$/;\r\n // 匹配含中文、字母、数字及标点等\r\n var reg_long_text2 = /^[\\u4e00-\\u9fa5\\da-zA-Z~!@#$%^&*()_+=\\-\\.,<>\\\\\\[\\]\\{\\}\\?\\:\\;'\",。、;‘:“”¥!()?——·\\|]+$/;\r\n // 匹配中文字母数字括号破折号\r\n var reg_long_text3 = /^[\\u4e00-\\u9fa5\\da-zA-Z()—\\(\\)\\-]+$/;\r\n // 匹配中文/字母\r\n var reg_ec = /^[\\u4e00-\\u9fa5a-zA-Z]+$/;\r\n // 匹配为纯数字\r\n var reg_number = /^[\\d]+$/;\r\n // 匹配纯中文\r\n var reg_chinese = /^[\\u4e00-\\u9fa5]+$/;\r\n /**\r\n * 检查输入是否为空\r\n * @param para\r\n * @param {String} tips 展示的内容\r\n * @param {String} id 展示ID\r\n * @returns {boolean} true时表示不为空!\r\n */\r\n this.checkInput = function (para, tips, id) {\r\n if (para == 'undefined' || $.trim(para) == \"\") {\r\n _this.showTips(tips, id);\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n /**\r\n * 检查账号是否只含有数字、字母、下划线等\r\n * @param para\r\n */\r\n this.checkAccount = function (para) {\r\n return reg_account.test(para);\r\n };\r\n\r\n /**\r\n * 检查长文本是否只含有数字、字母、中文等\r\n * @param para\r\n */\r\n this.checkLongText = function (para) {\r\n return reg_long_text.test(para);\r\n };\r\n this.checkLongText2 = function (para) {\r\n return reg_long_text2.test(para);\r\n };\r\n this.checkLongText3 = function (para) {\r\n return reg_long_text3.test(para);\r\n };\r\n /**\r\n * 匹配汉字和字母\r\n * @param para\r\n * @returns {boolean}\r\n */\r\n this.checkEc = function (para) {\r\n return reg_ec.test(para);\r\n };\r\n /**\r\n * 检查是否是纯数字\r\n * @param para\r\n */\r\n this.checkNumber = function (para) {\r\n return reg_number.test(para);\r\n };\r\n\r\n /**\r\n * 匹配纯中文\r\n * @param para\r\n * @returns {boolean}\r\n */\r\n this.checkChinese = function (para) {\r\n return reg_chinese.test(para);\r\n };\r\n\r\n this.checkEmail = function (para) {\r\n return /^([a-zA-Z0-9_\\.\\-])+@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/.test(para);\r\n };\r\n\r\n /**\r\n * 显示提示\r\n * @param content 提示内容\r\n * @param id 内容ID\r\n * @param align 文本排版\r\n * @param delay 显示延迟\r\n */\r\n this.showTips = function (content, id, align, delay) {\r\n if (!window[\"dialog\"]) {\r\n console.log(\"未引用dialog文件-\" + content);\r\n return;\r\n }\r\n var d = dialog({\r\n content: content,\r\n quickClose: true,\r\n align: align || \"left\",\r\n autofocus: false\r\n });\r\n var ele = id;\r\n var $ele = null;\r\n var type = $$this.getType(ele);\r\n if (type === \"string\") {\r\n ele = document.getElementById(id);\r\n $ele = $(id.charAt(0) === '#' ? id : (\"#\" + id))\r\n } else if (ele instanceof $) {\r\n ele = ele[0];\r\n $ele = ele;\r\n } else {\r\n ele = id;\r\n $ele = $(ele);\r\n }\r\n d.show(ele);\r\n if ($ele) {\r\n $ele.focus();\r\n }\r\n setTimeout(function () {\r\n d.close().remove();\r\n }, delay || 2000);\r\n };\r\n }\r\n\r\n this.wrapRed = this.wrapRed || new WrapRed();\r\n /**\r\n * 标记类\r\n */\r\n function WrapRed() {\r\n var wrap = $(\"\")\r\n /**\r\n * 标记 默认为红色\r\n * @param str 需要标记的字\r\n */\r\n this.wrap = function () {\r\n var len = arguments.length;\r\n if (len == 1) {\r\n return w1(arguments[0]);\r\n } else if (len == 2) {\r\n return w2(arguments[0], arguments[1]);\r\n }\r\n };\r\n\r\n var w1 = function (str) {\r\n if ($.trim(str) == \"\") return \"\";\r\n return wrap.html(str);\r\n };\r\n\r\n var w2 = function (color, str) {\r\n if ($.trim(str) == \"\") return \"\";\r\n return wrap.css({color: color}).html(str);\r\n }\r\n };\r\n\r\n /**\r\n * 获取消息\r\n * @type {{login: Function}}\r\n */\r\n this.msg = {\r\n login: function (code) {\r\n code = parseInt(code, 10);\r\n var msg = \"内部错误\";\r\n switch (code) {\r\n case -1:\r\n msg = \"服务调用返回异常\";\r\n break;\r\n case -3:\r\n msg = \"网络超时\";\r\n break;\r\n case -4:\r\n msg = \"网络异常\";\r\n break;\r\n case 101:\r\n msg = \"服务器内部错误\";\r\n break;\r\n case 102:\r\n msg = \"服务器繁忙\";\r\n break;\r\n case 111:\r\n msg = \"无对应的RSA私钥\";\r\n break;\r\n case 112:\r\n msg = \"RSA解密失败\";\r\n break;\r\n case 113:\r\n msg = \"AES解密失败\";\r\n break;\r\n case 121:\r\n msg = \"接口调用端时间戳错误\";\r\n break;\r\n case 123:\r\n msg = \"接口调用端参数格式错误\";\r\n break;\r\n case 124:\r\n msg = \"参数格式解析错误\";\r\n break;\r\n case 131:\r\n msg = \"无操作权限\";\r\n break;\r\n case 132:\r\n msg = \"验证码错误\";\r\n break;\r\n case 301:\r\n msg = \"用户账号或密码错误\";\r\n break;\r\n case 302:\r\n msg = \"用户账号已存在\";\r\n break;\r\n case 303:\r\n msg = \"账号不存在\";// \"用户被设置黑名单\";\r\n break;\r\n case 304:\r\n msg = \"用户不存在\";\r\n break;\r\n case 305:\r\n msg = \"渠道不存在\";\r\n break;\r\n case 309:\r\n msg = \"组织不存在\";// \"组织被设置黑名单\";\r\n break;\r\n case 502:\r\n msg = \"服务地址不存在\";\r\n break;\r\n case 900:\r\n msg = \"无数据\";\r\n break;\r\n case 1302:\r\n msg = \"验证码已过期\";\r\n break;\r\n default:\r\n msg = \"内部错误\";\r\n break;\r\n }\r\n if (data.config.debug) {\r\n msg += \"(\" + code + \")\";\r\n }\r\n return msg;\r\n }\r\n };\r\n\r\n this.dialog = function (obj, func) {\r\n var para = null;\r\n if (obj) {\r\n var par = {\r\n title: \"提示\",\r\n content: \"未设置提示内容\",\r\n okValue: \"确定\",\r\n ok: function () {\r\n },\r\n cancel: null,\r\n cancelValue: \"取消\"\r\n };\r\n para = (function (s) {\r\n var def = undefined;\r\n if ($$this.getType(s) === \"object\") {\r\n def = $.extend(par, s);\r\n } else {\r\n def = $.extend(par, {content: s});\r\n }\r\n return {\r\n title: def[\"title\"],\r\n content: def[\"content\"],\r\n okValue: def[\"okValue\"],\r\n ok: def[\"ok\"],\r\n cancel: def[\"cancel\"],\r\n cancelValue: def[\"cancelValue\"]\r\n }\r\n })(obj);\r\n if (!obj[\"autoWidth\"]) {\r\n para[\"width\"] = obj[\"width\"] || 480;\r\n }\r\n if (!obj[\"autoHeight\"]) {\r\n para[\"height\"] = obj[\"height\"] || 50;\r\n }\r\n if ((para[\"ok\"] && !para[\"cancel\"] || !para[\"ok\"] && para[\"cancel\"])) {\r\n if (para[\"ok\"]) {\r\n para[\"onclose\"] = para[\"ok\"];\r\n para[\"ok\"] = function () {\r\n };\r\n } else if (para[\"cancel\"]) {\r\n para[\"onclose\"] = para[\"cancel\"];\r\n para[\"cancel\"] = function () {\r\n };\r\n }\r\n }\r\n }\r\n return dialog(para || {}).showModal();\r\n };\r\n\r\n this.dialog.resetDialog = function (dia, content, cb) {\r\n if (dia) {\r\n dia.title(\"提示\");\r\n dia.width(480);\r\n dia.button([{\r\n value: \"确定\", callback: function () {\r\n //if ($$this.getType(cb) === \"function\") {\r\n // cb.apply(this, arguments);\r\n //}\r\n }\r\n }]);\r\n function close() {\r\n if ($$this.getType(cb) === \"function\") {\r\n cb.apply(this, arguments);\r\n }\r\n }\r\n\r\n dia.removeEventListener(\"close\", close);\r\n dia.addEventListener(\"close\", close);\r\n dia.content(content);\r\n }\r\n };\r\n\r\n this.dialog.reset = function (dia, obj) {\r\n if (obj) {\r\n if (obj[\"content\"]) {\r\n dia.content(obj[\"content\"]);\r\n }\r\n if (obj[\"title\"]) {\r\n dia.title(obj[\"title\"]);\r\n }\r\n if (obj[\"button\"]) {\r\n dia.button(obj[\"button\"]);\r\n }\r\n } else {\r\n dia.content('Loading..');\r\n dia.title(\"\");\r\n dia.button([]);\r\n }\r\n };\r\n\r\n }\r\n\r\n return new Tool();\r\n })();\r\n\r\n /**\r\n * 消息\r\n * @param code\r\n */\r\n this.msg = function (code) {\r\n return this.get(\"msg\", data.config.msg || \"login\", code);\r\n };\r\n\r\n /**\r\n * 判断浏览器\r\n */\r\n this.browser = (function () {\r\n var sys = {};\r\n var ua = window.navigator.userAgent.toLowerCase();\r\n var _isWeiXin = null;\r\n /**\r\n * 判断是否是微信客户端\r\n * @returns {*}\r\n */\r\n sys.isWeiXin = function () {\r\n if (_isWeiXin != null) return _isWeiXin;\r\n _isWeiXin = /micromessenger/.test(ua);\r\n return _isWeiXin;\r\n };\r\n\r\n sys.isIE = function () {\r\n return /msie/.test(ua);\r\n }();\r\n\r\n sys.ieVersion = function () {\r\n if (sys.isIE) {\r\n var match = ua.match(/(?:msie )(\\d+\\.\\d+)/);\r\n if (match && match.length === 2) {\r\n return parseFloat(match[1]);\r\n }\r\n }\r\n return undefined;\r\n }();\r\n\r\n //if (window.ActiveXObject) {\r\n // sys.ie = ua.match(/msie ([\\d.]+)/)[1];\r\n //}\r\n //else if (window.MessageEvent && !document.getBoxObjectFor) {\r\n // sys.chrome = ua.match(/chrome\\/([\\d.]+)/)[1];\r\n //}\r\n //else if (document.getBoxObjectFor) {\r\n // sys.firefox = ua.match(/firefox\\/([\\d.]+)/)[1];\r\n //}\r\n //else if (window.opera) {\r\n // sys.opera = ua.match(/opera.([\\d.]+)/)[1];\r\n //}\r\n //else if (window.openDatabase) {\r\n // sys.safari = ua.match(/version\\/([\\d.]+)/)[1];\r\n //}\r\n\r\n sys.supportCSS3 = function () {\r\n if ('MozTransform' in document.documentElement.style || 'WebkitTransform' in\r\n document.documentElement.style || 'OTransform' in document.documentElement.style\r\n || 'msTransform' in document.documentElement.style) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n sys.name = (function () {\r\n if (sys.isIE) return \"ie/\" + sys.ieVersion;\r\n if (/micromessenger/.test(ua)) return \"weixin\";\r\n if (/chrome/.test(ua)) return \"chrome/\" + (function (u) {\r\n var match = u.match(/(?:chrome\\/)(\\d+\\.\\d+)/);\r\n if (match && match.length === 2) return match[1];\r\n }(ua));\r\n return \"other\";\r\n })();\r\n\r\n /**\r\n * 浏览器支持项\r\n * @type {{placeholder}}\r\n */\r\n sys.support = {\r\n /**\r\n * 是否支持placeholder。true为是\r\n */\r\n placeholder: (function () {\r\n var attr = \"placeholder\";\r\n var input = document.createElement(\"input\");\r\n return attr in input;\r\n })(),\r\n transform: (function () {\r\n return \"transform\" in document.documentElement.style;\r\n })(),\r\n check: function (flag) {\r\n return flag in document.documentElement.style;\r\n }\r\n };\r\n return sys;\r\n })();\r\n\r\n /**\r\n * 事件绑定\r\n */\r\n this.attachEvent = function (elm, evType, fn, useCapture) {\r\n if (elm.addEventListener) {\r\n elm.addEventListener(evType, fn, useCapture); //DOM2.0\r\n return true;\r\n }\r\n else if (elm.attachEvent) {\r\n var r = elm.attachEvent(\"on\" + evType, fn); //IE5+\r\n return r;\r\n }\r\n else {\r\n elm['on' + evType] = fn; //DOM 0\r\n }\r\n };\r\n\r\n /**\r\n * 添加事件 抠自qq\r\n * @param k\r\n * @param l\r\n * @param j\r\n * @param i\r\n * @returns {*}\r\n */\r\n this.addEvent = function (k, l, j, i) {\r\n if (k && j) {\r\n if (k.addEventListener) {\r\n k[i ? \"removeEventListener\" : \"addEventListener\"](l, j, false);\r\n }\r\n else if (k.attachEvent) {\r\n k[i ? \"detachEvent\" : \"attachEvent\"](\"on\" + l, j);\r\n }\r\n else {\r\n k[\"on\" + l] = i ? null : j;\r\n }\r\n }\r\n return k;\r\n };\r\n this.removeEvent = document.removeEventListener ? function (element, type, fn) {\r\n element.removeEventListener(type, fn, false)\r\n } : function (element, type, fn) {\r\n element.detachEvent(\"on\" + type, fn)\r\n };\r\n\r\n this.guid = (function () {\r\n var counter = 0;\r\n return function (prefix, length) {\r\n var len = length || 16,\r\n guid = (+new Date()).toString(32),\r\n i = 0;\r\n for (; i < 5; i++) {\r\n var ran = Math.floor(Math.random() * 65535).toString(32);\r\n if (i % 2 === 0) {\r\n guid = ran + guid;\r\n } else {\r\n guid += ran;\r\n }\r\n }\r\n var res = guid + (counter++).toString(32);\r\n len = len >= 1 && len <= res.length ? len : res.length;\r\n return (prefix || '_jb_') + res.substr(0, len);\r\n };\r\n })();\r\n\r\n /**\r\n * 扩展方法\r\n * @param id 需要扩展的标记 当前有 msg 用于扩展消息提示\r\n * @returns {string}\r\n */\r\n this.extend = function (id) {\r\n switch (id) {\r\n case \"msg\":\r\n if (arguments.length != 3) return \"msg arguments error!\";\r\n var id = arguments[1];\r\n var list = arguments[2];\r\n if (!list || list.length == 0) return \"msg list error!\";\r\n this.tool.msg[id] = function (code) {\r\n return list[code];\r\n };\r\n return \"done!\";\r\n case \"method\":\r\n if (arguments.length != 3) return \"method arguments error!\";\r\n var v1 = arguments[1];\r\n var v2 = arguments[2];\r\n if (v2 instanceof Function) {\r\n this[v1] = v2;\r\n } else {\r\n return \"method is not a function!\";\r\n }\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * 是否为DEBUG状态\r\n * @returns string|boolean|debug|SWFUpload.debug|j.debug|g.debug|*\r\n */\r\n this.debug = function () {\r\n return data.config.debug;\r\n };\r\n\r\n this.mobile = (function () {\r\n var Mobile = function () {\r\n var mobile = [\"134\", \"135\", \"136\", \"137\", \"138\", \"139\", \"147\", \"150\", \"151\", \"152\", \"157\", \"158\", \"159\", \"178\", \"182\", \"183\", \"184\", \"187\", \"188\"];\r\n var lt_mobile = [\"130\", \"131\", \"132\", \"155\", \"156\", \"145\", \"176\", \"185\", \"186\"];\r\n var dx_mobile = [\"133\", \"153\", \"177\", \"180\", \"181\", \"189\"];\r\n\r\n var check = function (phone, list) {\r\n if (phone.length == 11) {\r\n var u = phone.substring(0, 3);\r\n var g = $.grep(list, function (k, i) {\r\n return k === u;\r\n });\r\n return g.length > 0;\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * 是否是移动号码\r\n * @param phone\r\n * @returns {boolean}\r\n */\r\n this.is_mmPhone = function (phone) {\r\n return check(phone, mobile);\r\n };\r\n\r\n /**\r\n * 是否是联通号码\r\n * @param phone\r\n * @returns {boolean}\r\n */\r\n this.is_ltPhone = function (phone) {\r\n return check(phone, lt_mobile);\r\n };\r\n\r\n /**\r\n * 是否是电信号码\r\n * @param phone\r\n * @returns {boolean}\r\n */\r\n this.is_dxPhone = function (phone) {\r\n return check(phone, dx_mobile);\r\n };\r\n\r\n /**\r\n * 验证是否是11位数字\r\n * @param phone\r\n * @returns {boolean}\r\n */\r\n this.is_phone = function (phone) {\r\n return /^1\\d{10}$/.test(phone);\r\n }\r\n };\r\n return new Mobile();\r\n })(this);\r\n\r\n this.clipboard = (function () {\r\n var ClipBoard = function (config) {\r\n\r\n this.copy = function (text) {\r\n window.prompt(\"复制内容,请依次按: Ctrl+C, Enter\", text);\r\n }\r\n };\r\n return new ClipBoard();\r\n })();\r\n };\r\n var JunboCore = function () {\r\n this.version = \"$$$version$$$.$$$date$$$.$$$litter|00112$$$\";\r\n this[this.version] = \"$$$versionDesc$$$\";\r\n };\r\n JunboCore.prototype = new Core();\r\n return new JunboCore();\r\n}(jQuery || Zepto));\r\n","/**\r\n * Junbo库表格扩展:JunboCore.createTable\r\n * Created by tangfan on 2015/8/28.\r\n */\r\nvar JunboCore = (function ($, junboCore) {\r\n // 初始化数据\r\n junboCore.set(\"tableView\", junboCore.createView({ //需要将表格填充到何处\r\n id: \"table\",\r\n //当无数据时,展示\r\n mark: \"-\",\r\n //表格内容tbody的ID\r\n bodyId: \"\",\r\n footer: true,\r\n template: \"
    \\n
    \\n {{?it[\\\"title\\\"]}}\\n {{?it[\\\"title\\\"][\\\"show\\\"]}}\\n
    \\n {{=it[\\\"title\\\"][\\\"name\\\"]}}\\n {{?it[\\\"title\\\"][\\\"innerHTML\\\"]}}\\n {{=it[\\\"title\\\"][\\\"innerHTML\\\"]}}\\n {{??it[\\\"title\\\"][\\\"buttons\\\"]}}\\n
    \\n {{~it[\\\"title\\\"][\\\"buttons\\\"]:item:index}}\\n {{=item.text}}\\n {{~}}\\n
    \\n {{?}}\\n
    \\n {{?}}\\n {{?}}\\n \\n \\n {{?it[\\\"columns-merge\\\"]}}\\n {{~it[\\\"columns-merge\\\"]:item:index}}\\n {{?!item.colspan}}\\n \\n {{?}}\\n {{~}}\\n {{??}}\\n {{ for (var i in it.columns) { }}\\n {{?!it.columns[i].colspan}}\\n \\n {{?}}\\n {{ } }}\\n {{?}}\\n \\n \\n \\n {{ for (var i in it.columns) { }}\\n \\n {{ } }}\\n \\n {{?it[\\\"columns-sub\\\"] && it[\\\"columns-sub-show\\\"]}}\\n \\n {{~it[\\\"columns-sub\\\"]:item:index}}\\n \\n {{~}}\\n \\n {{?}}\\n \\n \\n\\n \\n \\n \\n \\n
    {{=it.columns[i].name}}
    {{=item.name}}
    \\n {{?it[\\\"noResult\\\"] && it[\\\"noResult\\\"].show}}\\n
    \\n {{? jc.isFunction(it[\\\"noResult\\\"].msg) }}\\n {{=it[\\\"noResult\\\"].msg()}}\\n {{??}}\\n {{=it[\\\"noResult\\\"].msg}}\\n {{?}}\\n
    \\n {{?}}\\n
    \\n {{ if (it.footer) { }}\\n
    \\n
    \\n \\n {{=it.totalCount || 0}}\\n \\n {{=it.itemCount || 0}}\\n \\n / \\n 转到第\\n \\n \\n GO\\n
    \\n
      \\n
      \\n {{ } }}\\n
      \",\r\n rowTemplate: \"{{~it.data:v:k }}\\n \\n {{~(it[\\\"columns-merge\\\"] || it.columns):c:i }}\\n {{? c.bindFiled != \\\"undefined\\\" }}\\n {{=c.getValue(v)}}\\n {{??}}\\n {{=v}}\\n {{?}}\\n {{~}}\\n \\n{{~}}\",\r\n //是否需要提前渲染标题及其它内容\r\n renderFirst: true,\r\n //内部变量,是否已渲染\r\n isRendered: false\r\n }, function () {\r\n var args = arguments.length > 0 ? arguments[0] : null,\r\n force = args === \"forceFresh\",//是否强制刷新\r\n __this = this\r\n ;\r\n if ((this.renderFirst && !this.isRendered) || force) {\r\n this.isRendered = true;\r\n this.forceFresh = false;\r\n //处理标头下拉框\r\n var findNoName = $.grep(this.columns, function (k, i) {\r\n var r = !k.name && k.exp;\r\n if (r) {\r\n k.flag = i;\r\n return true;\r\n }\r\n });\r\n if (findNoName.length > 0) {\r\n var select = /select{(.+)}/;\r\n var tmpl = \"
      {{=it.SelectText}}\";\r\n var optionTmpl = \"\";\r\n __this.selects = [];\r\n __this.selectValues = [];\r\n $.each(findNoName, function (i, k) {\r\n var m = k.exp.match(select);\r\n if (m.length > 1) {\r\n var data = {\r\n Id: i,\r\n SelectText: \"\",\r\n Index: k.flag,\r\n Data: \"\"\r\n };\r\n var e = m[1].split(\",\");\r\n if (e.length > 0) {\r\n var selectBind = \"\";\r\n $.each(e, function (e1, e2) {\r\n var g = e2.match(/(.+)#(.+)/);\r\n if (g.length >= 2) {\r\n var textSpl = g[2].split(\"+\");\r\n var text = textSpl[0];\r\n var bind = textSpl.length >= 2 ? textSpl[1] : \"\";\r\n var sel = false;\r\n var d;\r\n if (/\\*/.test(text)) {\r\n if (!/\\/\\*/.test(text)) {\r\n text = text.substr(0, text.length - 1);\r\n data.SelectText = text;\r\n sel = true;\r\n selectBind = bind;\r\n } else {\r\n text = text.replace(\"/*\", \"*\");\r\n }\r\n } else {\r\n if (e1 == 0) {\r\n data.SelectText = text;\r\n }\r\n }\r\n d = {\r\n Id: junboCore.guid(\"jb-select-\"),\r\n Value: g[1],\r\n Text: text,\r\n Bind: bind,\r\n Selected: sel\r\n };\r\n } else if (g.length == 0) {\r\n var e22 = e2.split(\"+\");\r\n d = {\r\n Id: junboCore.guid(\"jb-select\"),\r\n Value: e22[0],\r\n Text: e22[0],\r\n Bind: e22.length >= 2 ? e22[1] : \"\",\r\n Selected: false\r\n };\r\n }\r\n data.Data += junboCore.tmplHtml(optionTmpl, d);\r\n if ($.grep(__this.selectValues, function (k, i) {\r\n return k == d.Value;\r\n }).length == 0) {\r\n __this.selectValues.push(d.Value);\r\n }\r\n });\r\n if (selectBind) {\r\n k.bindFiled = selectBind;\r\n }\r\n k.name = junboCore.tmplHtml(tmpl, data);\r\n k.columnStyle = (k.columnStyle || \"\") + \";padding:0;\";\r\n __this.selects.push(k);\r\n }\r\n }\r\n })\r\n }\r\n //处理标头可排序框\r\n var findUpDown = $.grep(this.columns, function (k, i) {\r\n var r = k.updown && k.name;\r\n if (r) {\r\n k.flag = i;\r\n return true;\r\n }\r\n });\r\n if (findUpDown.length > 0) {\r\n var tmp = \"
      {{=it.name}}
      \";\r\n $.each(findUpDown, function (i, k) {\r\n k.name = junboCore.tmplHtml(tmp, $.extend({name: k.name}, k.updown));\r\n k.updown = false;\r\n });\r\n }\r\n junboCore.tmplByStr(this.template, this.id, this);\r\n //if (__this.selects && __this.selects.length > 0) {\r\n // $.each(__this.selects, function (i, k) {\r\n // if (!k.$) {\r\n // k.$ = $(k.name);\r\n // }\r\n // })\r\n //}\r\n junboCore.log(\"reset table [\" + this.bodyId + \"]\" + (force ? \",use new columns!\" : \"\"));\r\n }\r\n junboCore.tmplByStr(this.rowTemplate, this.bodyId, this);\r\n junboCore.log(\"reset table data!\");\r\n }));\r\n /**\r\n * @param {object} para 表格参数\r\n * @param {String} para.id 表格填充ID 必填\r\n * @param {String} para.bodyId 表格数据填充ID 调用方自由定义 不填时,自动生成\r\n * @param {String} para.footer 是否含有分页等底部控件 默认值true\r\n * @param {Boolean} para.renderFirst 是否首次渲染表格 默认false\r\n * @param {String} para.mark 当无数据时显示\r\n * @param {Array} para.columns 表格列参数 表格所有参数必填\r\n * @param {Number} para.columns[].width 表格列宽度\r\n * @param {String} para.columns[].name 表格列标题\r\n * @param {String} para.columns[].bindFiled 表格列绑定数据的字段名\r\n * @param {Function} para.columns[].dataConvert 表格列绑定数据的转换\r\n * @param {String} para.columns[].needTitle 是否需要显示title\r\n * @param {String} para.postUrl 提交的地址\r\n * @param {String} para.rootId 是否指定root路径ID,不指定时,使用初始化时指定的id\r\n * @param {String} para.listFiled 列表字段 默认值 Records\r\n * @param {String} para.countFiled 总数字段 默认值 TotalCount\r\n * @param {String} para.pageIndexFiled 查询使用的页码索引字段 默认值 StartRow\r\n * @param {String} para.pagePerFiled 查询使用的每页平均数量字段 默认值 PageRow\r\n * @param {String} para.trBindFiled 每行绑定的数据ID 默认值 Id\r\n * @param {Function} para.dataFormat 是否需要格式化服务返回的数据\r\n * @param {Function} para.renderCompleted 每次渲染完表格时被调用\r\n * @param {Object} para.title 标题控制\r\n * @param {Boolean} para.title.show 是否展示\r\n * @param {String} para.title.name 标题名称\r\n * @param {Object} para.noResult 无数据时显示提示框\r\n * @param {Boolean} para.noResult.show 是否显示 。默认值为false\r\n * @param {String|Function} para.noResult.msg 显示 内容 可以为字符串 也可以为方法,返回字符串\r\n * @param {String} para.noResult.style 显示内容加入自定义的类显示样式\r\n * @returns {Table} 返回一个表格新类\r\n */\r\n junboCore.createTable = function (para) {\r\n var data = junboCore.get();\r\n var view = $.extend(true, {\r\n listFiled: \"Records\",\r\n countFiled: \"TotalCount\",\r\n pageIndexFiled: \"StartRow\",\r\n pagePerFiled: \"PageRow\",\r\n trBindFiled: \"Id\",\r\n renderCompleted: null,\r\n rootId: data.rootFlag,\r\n invalidClass: \"invalid\", //失效时的类名\r\n highlightClass: \"\",//高亮时的类名\r\n ignoreCode: {},//忽略的code,相当于返回空内容时\r\n noResult: {//无数据时控制显示\r\n show: false,\r\n msg: \"未设置无数据时显示内容\"\r\n },\r\n title: {\r\n show: false,\r\n name: \"标题\",\r\n buttons: [],\r\n activeClass: \"active\",\r\n disabled: false,\r\n setClassName: function (state, className, value) {\r\n if (!this.buttons) return;\r\n var cls = \"\", type = junboCore.getType(className), classes;\r\n switch (type) {\r\n case \"object\":\r\n if (classes = className[\"className\"]) {\r\n cls = classes.split(\" \")[0];\r\n }\r\n break;\r\n default:\r\n cls = String(className);\r\n break;\r\n }\r\n for (var item in this.buttons) {\r\n if (!this.buttons.hasOwnProperty(item)) continue;\r\n var prop = this.buttons[item];\r\n if (value === undefined) {\r\n prop[state] = prop.className === cls;\r\n } else {\r\n if (prop.className === cls) {\r\n prop[state] = value;\r\n }\r\n }\r\n }\r\n },\r\n setDisabled: function (className, disabled) {\r\n this.setClassName(\"disabled\", className, disabled);\r\n },\r\n setActive: function (className) {\r\n this.setClassName(\"selected\", className);\r\n }\r\n },\r\n \"columns-sub-show\": false,\r\n beforeAjax: null,\r\n click: [] //点击事件\r\n }, junboCore.get(\"tableView\"), para);\r\n if (typeof view.postUrl == \"undefined\") throw \"表格数据链接地址未初始化!\";\r\n if (typeof view.columns == \"undefined\") throw \"表格列参数未初始化!\";\r\n if (!para.hasOwnProperty(\"bodyId\") || $.trim(view.bodyId) == \"\") {\r\n view.bodyId = \"_bodyId_\" + junboCore.getTimespan() + \"_\" + junboCore.getRandom(100);\r\n }\r\n // 合并正副标题\r\n if (view[\"columns-sub\"]) {\r\n var column_list = [], sub = $.grep(view[\"columns-sub\"], function (k, i) {\r\n return !k[\"colspan\"]\r\n });\r\n $.each(view[\"columns\"], function (i, k) {\r\n if (!k[\"colspan\"]) {\r\n column_list.push(k);\r\n } else {\r\n column_list = column_list.concat(sub);\r\n }\r\n });\r\n //var columnMerge = $.grep(view[\"columns\"], function (k, i) {\r\n // return !k[\"colspan\"]\r\n //}).concat($.grep(view[\"columns-sub\"], function (k, i) {\r\n // return !k[\"colspan\"]\r\n //}));\r\n view[\"columns-merge\"] = column_list;\r\n }\r\n if (view.footer) {\r\n view.pagerId = \"_pager\" + view.bodyId;//分页控制ID\r\n view.totalId = \"_total\" + view.bodyId;//总页码数ID\r\n view.itemCountId = \"_itemCountId\" + view.bodyId;//总项数\r\n view.goButtonId = \"_goBtnId_\" + view.bodyId;\r\n view.inputId = \"_inputId_\" + view.bodyId;\r\n }\r\n /**\r\n * 分页类\r\n * @class\r\n * @params {Object} view 表格视图\r\n * @params {Object} pageConfig 页面配置\r\n * @params {Function} pageConfig.search 点击分页控制页码时搜索\r\n * @params {Number} pageConfig.pagePer 平均每页项数\r\n */\r\n function Pagination(view, pageConfig) {\r\n var _this = this;\r\n var table = view;\r\n var pager = $(\"#\" + view.pagerId);\r\n var pageCounter = $(\"#\" + view.totalId);\r\n var itemCounter = $(\"#\" + view.itemCountId);\r\n var goButton = $(\"#\" + view.goButtonId);\r\n var inputPage = $(\"#\" + view.inputId);\r\n var $noResult = $(\"#\" + table.bodyId).parent().next(\".inner-info\");\r\n var $noResultMsg = $noResult.find(\"span\");\r\n var paraConfig = pageConfig;\r\n goButton.click(function () {\r\n _this.gotoPage(inputPage.val());\r\n });\r\n\r\n var defaultPageConfig = {\r\n // 页码\r\n pageCount: 0,\r\n // 数量\r\n pageItemCount: 0,\r\n // 当前页\r\n pageIndex: 1,\r\n // 平均每页项数\r\n pagePer: 10\r\n };\r\n var config = $.extend({}, defaultPageConfig, paraConfig);\r\n\r\n /**\r\n * 重置配置\r\n */\r\n this.setConfig = function (conf) {\r\n config = $.extend({}, config, conf);\r\n };\r\n\r\n /**\r\n * 设置分页控件的页码\r\n * @param {Number} tC 总项数\r\n */\r\n this.setPage = function (tC) {\r\n var pC = Math.ceil(tC / config.pagePer);\r\n this.setCount(pC, tC);\r\n if (table.noResult.show) {\r\n if (junboCore.isFunction(table.noResult.style)) {\r\n try {\r\n $noResultMsg.removeClass().addClass(table.noResult.style(tC));\r\n } catch (error) {\r\n junboCore.log(error);\r\n }\r\n } else {\r\n if (!$noResultMsg.hasClass(table.noResult.style)) {\r\n $noResultMsg.removeClass().addClass(table.noResult.style);\r\n }\r\n }\r\n if (tC === 0) {\r\n $noResult.show();\r\n } else {\r\n $noResult.hide();\r\n }\r\n } else {\r\n $noResult && $noResult.hide();\r\n }\r\n pageCounter.html(pC != 0 ? pC : \"0\");\r\n //var pI = config.pageIndex;\r\n inputPage.val(\"\");\r\n if (config.pageCount != pC) {\r\n config.pageCount = pC;\r\n pager.twbsPagination({\r\n totalPages: pC,\r\n visiblePages: 10,\r\n first: false,\r\n last: false,\r\n next: \"下一页\",\r\n prev: \"上一页\",\r\n onPageClick: function (event, page) {\r\n config.pageIndex = page;\r\n config.search(page, config.pagePer);\r\n }\r\n });\r\n }\r\n };\r\n\r\n this.reset = function () {\r\n setTimeout(function () {\r\n var p = $(\"#\" + view.pagerId).twbsPagination({\r\n totalPages: config.pageCount,\r\n visiblePages: 10,\r\n first: false,\r\n last: false,\r\n startPage: _this.getPageIndex(),\r\n next: \"下一页\",\r\n prev: \"上一页\",\r\n onPageClick: function (event, page) {\r\n config.pageIndex = page;\r\n config.search(page, config.pagePer);\r\n }\r\n });\r\n $(\"#\" + view.goButtonId).unbind(\"click\").click(function () {\r\n _this.gotoPage($(\"#\" + view.inputId).val());\r\n });\r\n //junboCore.log(p);\r\n }, 200);\r\n };\r\n\r\n /**\r\n * 设置左侧页数量以及项数据信息\r\n * @param {Number} page 有多少页\r\n * @param {Number} item 有多少项\r\n */\r\n this.setCount = function (page, item) {\r\n pageCounter.html(page);\r\n itemCounter.html(item);\r\n table.totalCount = page;\r\n table.itemCount = item;\r\n };\r\n\r\n /**\r\n * 跳转到指定页面\r\n * @params {Number} pI 页面索引\r\n */\r\n this.gotoPage = function (pI) {\r\n var page = parseInt(pI, 10);\r\n try {\r\n var pager2 = $(\"#\" + view.pagerId);\r\n if (page > 0 && page <= config.pageCount) {\r\n pager2.twbsPagination(\"show\", page);\r\n } else if (page <= 0) {\r\n pager2.twbsPagination(\"show\", 1);\r\n } else if (page > config.pageCount) {\r\n pager2.twbsPagination(\"show\", config.pageCount);\r\n }\r\n } catch (err) {\r\n junboCore.log(err);\r\n }\r\n };\r\n\r\n this.setPageIndex = function (pI) {\r\n var page = parseInt(pI, 10);\r\n if (page > 0 && page <= config.pageCount) {\r\n try {\r\n pager.twbsPagination(\"setIndex\", page);\r\n } catch (err) {\r\n //junboCore.log(err);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 获取下一页的页码\r\n * @param {Object} para 传递参数\r\n * @return {Object}\r\n */\r\n this.next = function (para) {\r\n var defaults = {};\r\n defaults[table.pagePerFiled] = config.pagePer;\r\n var start = (config.pageIndex - 1) * config.pagePer + 1;\r\n defaults[table.pageIndexFiled] = start;\r\n config.pageIndex++;\r\n return $.extend({}, para, defaults);\r\n };\r\n\r\n /**\r\n * 初始构造用户传参\r\n * @param para\r\n */\r\n this.combine = function (para) {\r\n var defaults = {};\r\n defaults[table.pagePerFiled] = config.pagePer;\r\n var start = 1;\r\n defaults[table.pageIndexFiled] = start;\r\n config.pageIndex = start;\r\n return $.extend({}, para, defaults);\r\n };\r\n\r\n /**\r\n * 获取当前页码\r\n * @returns {number}\r\n */\r\n this.getPageIndex = function () {\r\n return config.pageIndex <= 1 ? 1 : config.pageIndex - 1;\r\n };\r\n\r\n /**\r\n * 获取平均每页数量\r\n * @returns {number|pagePer}\r\n */\r\n this.getPagePer = function () {\r\n return config.pagePer;\r\n };\r\n\r\n /**\r\n * 重置所有初始化\r\n */\r\n this.setDefault = function () {\r\n config = $.extend({}, defaultPageConfig, paraConfig);\r\n };\r\n\r\n /**\r\n * 重置页码\r\n */\r\n this.reSetPageIndex = function () {\r\n config.pageIndex = 1;\r\n }\r\n }\r\n\r\n /**\r\n * 新建一个表格类\r\n * @param {Object} v 表格创建参数\r\n */\r\n function Table(v) {\r\n var core = junboCore;\r\n var tableView = v;\r\n var $el = $(\"#\" + tableView.id);\r\n var _this = this;\r\n var userPara = null;//用户传递的数据缓存\r\n var successFunc = null;\r\n var errorFunc = null;\r\n var needRender = false;//是否需要重新渲染?\r\n var needRenderFunc = function () {\r\n if (needRender) {\r\n needRender = false;\r\n _this.render();\r\n pagination.reset();\r\n }\r\n };\r\n var Records = \"Records\";\r\n var bindTrField = tableView.trBindFiled;\r\n this.event = junboCore.observer();\r\n if (tableView.renderFirst) {\r\n tableView.render.call(tableView);\r\n }\r\n if (tableView.click) {\r\n if (core.getType(tableView.click) === \"object\") {\r\n $el.on(\"click\", function (eve, data) {\r\n var cls = eve.target.className || eve.target.id,\r\n call = [];\r\n if (cls) {\r\n var _cls = cls.split(\" \");\r\n if (_cls.length > 0) {\r\n $.each(_cls, function (i, k) {\r\n var item = tableView.click[k];\r\n if (core.isFunction(item)) {\r\n call.push(item);\r\n }\r\n });\r\n } else {\r\n if (core.isFunction(tableView.click[cls])) {\r\n call.push(tableView.click[cls])\r\n }\r\n }\r\n }\r\n var args = arguments;\r\n $.each(call, function (i, k) {\r\n if (eve && eve.target && eve.target.classList) {\r\n if (_(eve.target.classList).findIndex(_(\"o=>o=='disabled'\")) === -1) {\r\n k.apply(eve.target, args);\r\n }\r\n } else {\r\n k.apply(eve.target, args);\r\n }\r\n });\r\n })\r\n .on(\"change\", \".jb-select select\", function (event, data) {\r\n var $t = $(this),\r\n $o = $t.find(\"option:selected\"),\r\n v = $o.val(),\r\n t = $o.text(),\r\n b = $o.attr(\"bind-field\"),\r\n index = $t.attr('data-index')\r\n ;\r\n $t.parent(\".jb-select\").find(\"span.label\").text(t).val(v);\r\n if (index !== undefined) {\r\n tableView.columns[~~index].bindFiled = b;\r\n }\r\n _this.event.trigger(\"select\", {\r\n id: $o.attr(\"id\"),\r\n index: index,\r\n value: v,\r\n text: t,\r\n bind: b\r\n })\r\n })\r\n .on(\"click\", \".jb-updown\", function () {\r\n var $t = $(this),\r\n $up = $t.find(\".up\"),\r\n $down = $t.find(\".down\"),\r\n $p = $t.closest(\"td\"),\r\n res = {\r\n mode: \"down\",\r\n field: tableView.columns[$p.index()][\"bindFiled\"]\r\n }\r\n ;\r\n $p.siblings(\"td\").find(\".jb-updown em\").removeClass(\"check\");\r\n var is_up = $up.hasClass(\"check\");\r\n var is_down = $down.hasClass(\"check\");\r\n if (is_up) {\r\n $up.removeClass(\"check\");\r\n if (!is_down) {\r\n $down.addClass(\"check\");\r\n }\r\n } else if (is_down) {\r\n $down.removeClass(\"check\");\r\n if (!is_up) {\r\n $up.addClass(\"check\");\r\n res.mode = \"up\";\r\n }\r\n } else {\r\n $down.addClass(\"check\");\r\n }\r\n _this.event.trigger(\"updown\", res);\r\n });\r\n }\r\n }\r\n var pagination = new Pagination(tableView, {\r\n pagePer: tableView.pagePer,\r\n search: function (index, per) {\r\n //_this.ajax(userPara, successFunc, errorFunc);\r\n var para = pagination.next(userPara);\r\n _ajax(para);\r\n }\r\n });\r\n\r\n /**\r\n * 将表格置空\r\n */\r\n tableView.reset = function () {\r\n junboCore.tmplByStr(tableView.rowTemplate, tableView.bodyId, {});\r\n tableView.data = null;\r\n pagination.setPage(0);\r\n };\r\n\r\n this.title = {\r\n setTitle: function (title) {\r\n tableView.title.name = title;\r\n $el.find(\"span.name\").html(title);\r\n }\r\n };\r\n\r\n /**\r\n * 获取所有选择的内容\r\n */\r\n this.getSelect = function () {\r\n var res = [];\r\n $el.find(\"td .jb-select select\").each(function (i, k) {\r\n var $k = $(k);\r\n var fis = $k.find(\"option:selected\");\r\n res.push({\r\n id: fis.attr(\"id\"),\r\n index: $k.attr(\"data-index\"),\r\n text: fis.text(),\r\n value: fis.val()\r\n });\r\n });\r\n return res;\r\n };\r\n\r\n /**\r\n * 根据索引获取Select的Dom结构\r\n * @param index\r\n */\r\n this.getSelectDomByIndex = function (index) {\r\n return $el.find(\"tr .jb-select:eq(\" + index + \") select\");\r\n };\r\n\r\n /**\r\n * 重设所有的选择项的状态\r\n */\r\n this.resetSelectState = function () {\r\n $el.find(\"td .jb-select select\").find(\"option[disabled='disabled']\").each(function (i, k) {\r\n $(k).removeAttr(\"disabled\");\r\n });\r\n };\r\n\r\n /**\r\n * 获取所有的选择框原始数据\r\n * @returns {Array}\r\n */\r\n this.getSelects = function () {\r\n return tableView.selects || [];\r\n };\r\n\r\n /**\r\n * 根据所有的值互斥选择选项的可用性\r\n */\r\n this.mutexSelect = function (data) {\r\n var sels = this.getSelects();//所有的选择项\r\n var values = tableView.selectValues;//已有的values\r\n var sel = this.getSelect();//已选择的内容\r\n $.each(sels, function (i, k) {\r\n var $cur = $el.find(\".jb-select select[data-index='\" + k.flag + \"']\");//本项目\r\n var $cur_sel = $cur.find(\"option:selected\");//本项目的选择项\r\n var val = $cur_sel.val();//当前项选择的值\r\n $cur.find(\"option\").removeAttr(\"disabled\");//先全部清除状态\r\n $.each(sel, function (ii, kk) {\r\n if (kk.value != values[0]) {\r\n if (k.flag == kk.index) {\r\n //自己 不用置灰\r\n\r\n } else {\r\n //别人 置灰\r\n $cur.find(\"option[value='\" + kk.value + \"']\").attr(\"disabled\", \"disabled\");\r\n }\r\n } else {\r\n //$cur.find(\"option[value='\" + values[ii] + \"']\").removeAttr(\"disabled\");\r\n //console.log(\"当前项:\" + k.flag + \",选择内容:\" + val + \",索引项:\" + kk.index);\r\n //$cur.find(\"option[value='\" + values[ii] + \"']\").removeAttr(\"disabled\");\r\n }\r\n });\r\n //if (data.index != k.flag) {\r\n // //非本项目\r\n // $el.find(\".jb-select select[data-index='\" + k.flag + \"'] option[value='\" + data.value + \"']\").attr(\"disabled\", \"disabled\");\r\n //}\r\n })\r\n };\r\n\r\n /**\r\n * 重置排序按钮的状态\r\n */\r\n this.resetUpdown = function () {\r\n $el.find(\".jb-updown em\").removeClass(\"check\");\r\n };\r\n\r\n /**\r\n * 清空数据\r\n */\r\n this.empty = function () {\r\n $el.data(Records, null);\r\n tableView.reset();\r\n };\r\n\r\n /**\r\n * 重新渲染结果\r\n */\r\n _this.render = function () {\r\n tableView.render.call(tableView, \"forceFresh\");\r\n pagination.reset();\r\n };\r\n\r\n this.setActive = function (className) {\r\n //console.log(tableView.title);\r\n tableView.title.setActive(className);\r\n var cls = tableView.title.activeClass;\r\n $el.find(\".buttons .\" + className).removeClass(cls).addClass(cls).siblings().removeClass(cls);\r\n };\r\n\r\n this.setDisabled = function (className, disabled) {\r\n tableView.title.setDisabled(className, disabled);\r\n $el.find(\".buttons .\" + className)[disabled ? \"addClass\" : \"removeClass\"](\"disabled\");\r\n };\r\n\r\n /**\r\n * 填充数据\r\n * indexFormat 全格式为 %3[0]d %几个占用[用什么占位]d\r\n * @param {Object} data 由服务返回的数据\r\n */\r\n var setData = function (data, callback) {\r\n $el.data(Records, data);\r\n if (!data || data.length == 0) {\r\n return false;\r\n }\r\n tableView.data = (function (columns) {\r\n $.each(columns, function (i, k) {\r\n if (!k.getValue) {\r\n k.getValue = function (v) {\r\n var val = tableView.mark;\r\n if (core.isFunction(k.bindFiled)) {\r\n val = k.bindFiled(v);\r\n } else {\r\n val = v[k.bindFiled];\r\n }\r\n if (k['dataBind']) {\r\n return k['dataBind'][val] || tableView.mark;\r\n }\r\n return val;\r\n };\r\n }\r\n });\r\n var convertList = $.grep(columns, function (k, i) {\r\n return junboCore.getType(k[\"dataConvert\"]) === \"function\";\r\n });\r\n var indexList = $.grep(columns, function (k, i) {\r\n return k.hasOwnProperty(\"bindFiled\") && core.getType(k.bindFiled) === \"string\" && k.bindFiled.indexOf(\"_index\") === 0;\r\n });\r\n var l = data;\r\n if (indexList.length > 0) {\r\n var s = (pagination.getPageIndex() - 1) * pagination.getPagePer() + 1,\r\n format = indexList[0][\"indexFormat\"] || \"%d\",\r\n reg = /%(\\d*)(\\[(.)\\])*d/,\r\n match = format.match(reg),\r\n padLeft = 3,\r\n blockStr = \"0\";\r\n if (match) {\r\n if (match.length > 1 && match[1]) {\r\n padLeft = parseInt(match[1], 10);\r\n }\r\n if (match.length > 3 && match[3]) {\r\n blockStr = match[3];\r\n }\r\n }\r\n $.each(l, function (i, k) {\r\n var v = (s + i);\r\n if (padLeft > 0) {\r\n v = String(s + i).padLeft(blockStr, padLeft);\r\n }\r\n k[\"_index\"] = format.replace(reg, v);\r\n })\r\n } else {\r\n $.each(l, function (i, k) {\r\n k[\"_index\"] = \"data_\" + i;\r\n })\r\n }\r\n if (convertList.length > 0) {\r\n $.each(l, function (i, k) {\r\n if (!k[\"Id\"]) {\r\n k[\"Id\"] = junboCore.guid(\"_table_\");\r\n }\r\n $.each(convertList, function (m, n) {\r\n if (n.hasOwnProperty(\"bindFiled\")) {\r\n k[n.bindFiled] = n[\"dataConvert\"](k);\r\n }\r\n });\r\n });\r\n }\r\n return l;\r\n })(tableView[\"columns-merge\"] || tableView.columns);\r\n tableView.render.call(tableView);\r\n if (core.isFunction(callback)) {\r\n callback.apply(tableView, arguments);\r\n }\r\n return true;\r\n };\r\n\r\n /**\r\n * 向已有数据中新增数据,并重新刷新列表\r\n * @param data\r\n */\r\n this.pushData = function (data) {\r\n var getData = $el.data(Records) || [];\r\n var type = core.getType(data);\r\n switch (type) {\r\n case \"object\":\r\n getData.push(data);\r\n break;\r\n case \"array\":\r\n getData = getData.concat(data);\r\n break;\r\n }\r\n setData(getData);\r\n pagination.setPage(getData ? getData.length : 0);\r\n };\r\n\r\n /**\r\n * 设置底\r\n * @param data\r\n */\r\n this.setFoot = function (html) {\r\n $(\"#\" + tableView.bodyId + \"_tfoot\").html(html);\r\n };\r\n\r\n /**\r\n * 设置数据\r\n * @param data\r\n * @param callback\r\n */\r\n this.setData = function (data, callback) {\r\n setData(data, callback || tableView.renderCompleted);\r\n };\r\n\r\n /**\r\n * 改变列,根据每列ID\r\n */\r\n this.columns = function (cols, callback) {\r\n if (junboCore.getType(cols) === \"array\") {\r\n var columns = tableView[\"columns\"] || [],\r\n columns_length = columns.length,\r\n columns_length_real = _(columns).count(_(\"o=> !o['colspan']\")),\r\n columns_sub = tableView[\"columns-sub\"] || [],\r\n sub_length = columns_sub.length,\r\n columns_merge = tableView[\"columns-merge\"],\r\n merge_length = columns_merge.length,\r\n index = 0,\r\n max = cols.length,\r\n item = null,\r\n list_index = 0,\r\n enter_sub = false//是否首次进入sub搜索\r\n ;\r\n for (index; index < max; index++) {\r\n if (list_index == columns_length && !enter_sub) {\r\n index = 0;\r\n enter_sub = true;\r\n }\r\n item = cols[index];\r\n if (item) {\r\n if (Object.hasOwnProperty.call(item, \"index\")) {\r\n list_index = item[\"index\"];\r\n }\r\n }\r\n //junboCore.log(list_index);\r\n if (list_index < columns_length_real && !enter_sub) {\r\n for (var ci = list_index; ci < columns_length; ci++) {\r\n if (!columns[ci][\"colspan\"]) {\r\n columns[ci] = item;\r\n break;\r\n }\r\n }\r\n } else if (list_index < sub_length + columns_length) {\r\n if (!enter_sub) {\r\n enter_sub = true;\r\n }\r\n var break_count = 0;\r\n for (var si = list_index - columns_length_real; si < sub_length; si++) {\r\n if (!columns_sub[si][\"colspan\"]) {\r\n columns_sub[si] = item;\r\n list_index += break_count;\r\n //junboCore.log(\"更改\" + si + \"到\" + list_index);\r\n break;\r\n }\r\n break_count++;\r\n }\r\n }\r\n list_index++;\r\n }\r\n if (sub_length > 0) {\r\n // 重设正副标题\r\n tableView[\"columns-merge\"] = (function (view) {\r\n return $.grep(view[\"columns\"], function (k, i) {\r\n return !k[\"colspan\"]\r\n }).concat($.grep(view[\"columns-sub\"], function (k, i) {\r\n return !k[\"colspan\"]\r\n }))\r\n })(tableView);\r\n }\r\n tableView.render.call(tableView, \"forceFresh\");\r\n if (junboCore.getType(callback) === \"function\") {\r\n var result = callback.call(this);\r\n //if (junboCore.getType(result) === \"boolean\" && !result) {\r\n // return; //如果回调函数返回了false,则不强制渲染页面\r\n //}\r\n }\r\n }\r\n else {\r\n junboCore.log(\"table \" + tableView.pagerId + \":change columns fail, args type is not array!\");\r\n }\r\n };\r\n\r\n /**\r\n * 更改某列的列名\r\n * @params {Number} index 列序号\r\n * @params {String} name 列名\r\n */\r\n this.columns.setName = function (index, name) {\r\n var column = tableView[\"columns-merge\"] || tableView.columns,\r\n param_type = junboCore.getType(index),\r\n has_changed = false;\r\n if (!column) return false;\r\n if (param_type === \"number\") {\r\n if (column.length > index) {\r\n column[index].name = name;\r\n has_changed = true;\r\n }\r\n } else if (param_type === \"array\") {\r\n var cachedIndex = 0;\r\n $.each(index, function (i, k) {\r\n var _index = k[\"index\"], n = k[\"name\"];\r\n if (!_index) {\r\n _index = cachedIndex;\r\n }\r\n cachedIndex = _index + 1;\r\n if (_index && column.length > _index) {\r\n column[_index].name = n;\r\n }\r\n });\r\n has_changed = true;\r\n } else if (param_type === \"object\") {\r\n if (index[\"index\"] && column.length > index[\"index\"]) {\r\n column[index[\"index\"]].name = index[\"name\"];\r\n }\r\n has_changed = true;\r\n }\r\n if (has_changed) {\r\n _this.render();\r\n }\r\n };\r\n\r\n this.columns.setBindField = function (index, name) {\r\n var column = tableView[\"columns-merge\"] || tableView.columns,\r\n param_type = junboCore.getType(index)\r\n ;\r\n if (!column) return false;\r\n if (param_type === \"number\") {\r\n if (column.length > index) {\r\n column[index].bindFiled = name;\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * 拉取数据\r\n * @param {Object} p 拉取数据的参数\r\n * @param {Function} successfunc 成功处理\r\n * @param {Function} errorfunc 失败处理\r\n */\r\n this.ajax = function (p, successfunc, errorfunc, mock) {\r\n var para = userPara;\r\n if (typeof p != \"undefined\") {\r\n para = pagination.combine(p);\r\n }\r\n userPara = para;\r\n if (typeof successfunc != \"undefined\") {\r\n successFunc = successfunc;\r\n }\r\n if (typeof errorfunc != \"undefined\") {\r\n errorFunc = errorfunc;\r\n }\r\n //core.log(para);\r\n if (para == \"undefined\") return false;\r\n _ajax(para, successfunc, errorfunc, mock);\r\n pagination.setPageIndex(1);\r\n };\r\n\r\n var _ajax = function (para) {\r\n if (window[\"dialog\"]) {\r\n var dia = dialog();\r\n dia.showModal();\r\n }\r\n if (junboCore.isFunction(tableView.beforeAjax)) {\r\n try {\r\n tableView.beforeAjax();\r\n } catch (err) {\r\n\r\n }\r\n }\r\n var aa = core.Service.ajax(tableView.postUrl, para, function (d) {\r\n if (d.Code === 100 || tableView.ignoreCode[d.Code]) {\r\n core.log(\"[\" + core.Service.guid + \"]\", d);\r\n var receive = d.Result || {Records: null, TotalCount: 0};\r\n if (tableView.dataFormat instanceof Function) {\r\n // 用户格式化数据\r\n receive = tableView.dataFormat(receive);\r\n }\r\n if (typeof receive != \"undefined\") {\r\n var res = false;\r\n if (receive[tableView.listFiled]) {\r\n res = setData(receive[tableView.listFiled]);\r\n if (receive.hasOwnProperty(tableView.countFiled)) {\r\n pagination.setPage(receive[tableView.countFiled]);\r\n } else {\r\n core.log(\"报表返回无总数「\" + tableView.countFiled + \"」字段!\");\r\n }\r\n } else {\r\n core.log(\"报表返回无列表「\" + tableView.listFiled + \"」字段!\");\r\n if (receive.length > 0) {\r\n res = setData(receive);\r\n } else {\r\n res = setData(null);\r\n }\r\n }\r\n if (!res) {\r\n tableView.reset();\r\n if (tableView.renderCompleted instanceof Function) {\r\n tableView.renderCompleted.call(_this, receive);\r\n }\r\n } else {\r\n if (tableView.renderCompleted instanceof Function) {\r\n tableView.renderCompleted.call(_this, receive);\r\n }\r\n }\r\n }\r\n if (successFunc instanceof Function) {\r\n successFunc(d);\r\n }\r\n needRenderFunc();\r\n _this.event.trigger(\"completed\", receive);\r\n dia && dia.close().remove();\r\n return;\r\n } else {\r\n core.log(d);\r\n if (errorFunc instanceof Function) {\r\n errorFunc(d);\r\n }\r\n if (dia) {\r\n dia.title(\"错误\");\r\n dia.width(480);\r\n dia.content(junboCore.tool.wrapRed.wrap(d.Msg) || junboCore.get(\"msg\", \"login\", d.Code));\r\n dia.button([{\r\n value: \"确定\", callBack: function () {\r\n }\r\n }]);\r\n }\r\n }\r\n if (tableView.renderCompleted instanceof Function) {\r\n tableView.renderCompleted.call(_this);\r\n }\r\n }, tableView.rootId || \"\", arguments[3]);\r\n };\r\n\r\n /**\r\n * 测试服务调用地址\r\n * @param url\r\n */\r\n this.setPostUrl = function (url) {\r\n tableView.postUrl = url;\r\n };\r\n\r\n /**\r\n * 重置配置\r\n * @param config\r\n *\r\n */\r\n this.setConfig = function (config) {\r\n pagination.setConfig({\r\n pagePer: config.pagePer\r\n })\r\n };\r\n\r\n this.refresh = function () {\r\n if (userPara) {\r\n pagination.reSetPageIndex();\r\n _this.ajax(userPara, successFunc, errorFunc);\r\n }\r\n };\r\n\r\n this.deleteDate = function (para) {\r\n var data = this.getData();\r\n if (data) {\r\n var findIndex = -1;\r\n for (var i = 0; i < data.length; i++) {\r\n var item = data[i];\r\n var id = item[tableView.trBindFiled];\r\n if (id != undefined && id === para) {\r\n findIndex = i;\r\n break;\r\n }\r\n }\r\n if (findIndex > -1) {\r\n data.splice(findIndex, 1);\r\n setData(data);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 获取数据\r\n * @param button 按钮的jquery查询\r\n */\r\n this.getData = function (button) {\r\n if (!button) {\r\n return $el.data(Records);\r\n }\r\n if (typeof button == \"object\") {\r\n if (button.length > 0) {\r\n var getTr = button.closest(\"tr\");\r\n if (getTr && getTr.length > 0) {\r\n var clickId = getTr.attr(\"data-id\");\r\n if (clickId) {\r\n var data = $el.data(Records);\r\n if (data) {\r\n var result = $.grep(data, function (k, i) {\r\n if (k.hasOwnProperty(bindTrField)) {\r\n return k[bindTrField] == clickId;\r\n }\r\n });\r\n if (result.length > 0) {\r\n return result[0];\r\n }\r\n }\r\n } else {\r\n junboCore.log(\"\");\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * 获取上次调用参数\r\n * @returns {*}\r\n */\r\n this.getPara = function () {\r\n return userPara;\r\n };\r\n\r\n /**\r\n * 隐藏列\r\n * @param {Number} index 列编号\r\n * @param {Boolean} hide 是否隐藏 默认为true\r\n * @param {Boolean} render 是否重新渲染 默认为false\r\n */\r\n this.hideColumn = function (index, hide, render) {\r\n var h = (hide === undefined || hide === null) ? true : !!hide;\r\n if (tableView.columns.length <= index) return false;\r\n var col = tableView.columns[index];\r\n col.hide = h;\r\n if (col.hide) {\r\n col.style_backup = col.style;\r\n col.style = \"display:none;\";\r\n } else {\r\n col.style = col.style_backup;\r\n }\r\n if (render) {\r\n this.render();\r\n }\r\n needRender = true;\r\n return true;\r\n };\r\n\r\n this.version = \"1.0.5\";\r\n }\r\n\r\n return new Table(view);\r\n };\r\n\r\n return junboCore;\r\n }(jQuery, JunboCore || {})\r\n )\r\n ;\r\n","/**\r\n * 上传控件封装:JunboCore.createUpload\r\n */\r\n\r\n// Created by tangfan on 2015/8/28.\r\n// 来自百度webuploader\r\n// 相关API:http://fex.baidu.com/webuploader/doc/index.html\r\n// miniType查询:http://www.w3school.com.cn/media/media_mimeref.asp\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n\r\n /**\r\n * @public\r\n * @function\r\n * @param para\r\n * @param {String} para.id 填此项时,divId无效\r\n * @param {String} para.divId\r\n * @param {String} para.service 上传业务处理地址\r\n * @param {String} para.fileType 上传文件类型 ex: txt,gif,png\r\n * @param {String} para.fileTypeDesc 上传文件类型描述 ex: 文本文档\r\n * @param {String} para.fileSizeLimit 上传文件大小控制 ex: 1024\r\n * @param {String} para.buttonText 上传按钮文本 默认 浏览\r\n * @param {Boolean} para.auto 是否选择完毕后自动上传\r\n * @param {uploadify-successCallback} para.success 上传成功方法回调函数\r\n * @param {uploadify-errorCallback} para.error 失败处理方法\r\n * @param {uploadify-progressCallback} para.progress 上传进度方法\r\n * @param {Function} para.uploadStart 开始上传方法\r\n * @returns {Uploadify}\r\n */\r\n junboCore.createUpload = function (para) {\r\n if (WebUploader) {\r\n\r\n /**\r\n * 上传控件类\r\n * @param v\r\n * @class\r\n */\r\n function Uploadify(v) {\r\n var o = $.extend({}, {\r\n auto: true,\r\n divId: \"\",\r\n id: \"\",\r\n inputClass: \"\",\r\n service: \"/commonjs/FileUpload.ashx\",\r\n servicePara: \"\",\r\n folder: \"/orgmanage/upload\",\r\n fileType: \"txt\",\r\n fileTypeDesc: \"Images\",\r\n mimeTypes: \"image/*\",\r\n fileSizeLimit: 100,\r\n buttonClass: \"button blue\",\r\n buttonText: \"浏览\",\r\n padding: \"\",\r\n buttonDisabled: false,\r\n success: null,\r\n error: null,\r\n progress: null,\r\n fileQueued: null,\r\n uploadCompleted: null,\r\n beforeFileQueued: null\r\n }, v);\r\n if (v.fileSizeLimit === undefined) {\r\n o.fileSizeLimit = undefined;\r\n }\r\n if (o.id.charAt(0) === \"#\") {\r\n o.id = o.id.substr(1, o.id.length - 1);\r\n }\r\n var id = o.id || \"_upload_\" + junboCore.getTimespan() + \"_\" + junboCore.getRandom(1000);\r\n if ($(\"#\" + id).length == 0) {\r\n var $input = $(\"\" + o.buttonText + \"\");\r\n $input.appendTo($(\"#\" + o.divId));\r\n }\r\n o.service = junboCore.combineRoot(o.service);\r\n o.folder = junboCore.combineRoot(o.folder);\r\n var swf = junboCore.combineRoot(\"/commonjs/Uploader.swf\");\r\n var uploader = WebUploader.create({\r\n // swf文件路径\r\n swf: swf,\r\n // 文件接收服务端。\r\n server: o.service + o.servicePara,\r\n // 选择文件的按钮。可选。\r\n // 内部根据当前运行是创建,可能是input元素,也可能是flash.\r\n pick: '#' + id,\r\n // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!\r\n resize: false,\r\n disableGlobalDnd: true,\r\n // 类型\r\n accept: {\r\n title: o.fileTypeDesc,\r\n extensions: o.fileType,//'gif,jpg,jpeg,bmp,png',\r\n mimeTypes: o.mimeTypes\r\n },\r\n fileSingleSizeLimit: o.fileSizeLimit ? o.fileSizeLimit * 1024 : undefined,\r\n auto: o.auto\r\n });\r\n uploader.on('uploadStart', function () {\r\n if (o[\"uploadStart\"] instanceof Function) {\r\n o[\"uploadStart\"]();\r\n }\r\n });\r\n\r\n uploader.on('error', function (file) {\r\n if (o.error instanceof Function) {\r\n var code = 100;\r\n var msg = \"正常\";\r\n switch (file) {\r\n case \"F_EXCEED_SIZE\":\r\n code = 101;\r\n msg = junboCore.get(\"msg\", \"upload\", 101) || \"文件过大\";\r\n break;\r\n case \"F_DUPLICATE\":\r\n code = 102;//\r\n msg = junboCore.get(\"msg\", \"upload\", 102) || \"文件重复\";\r\n break;\r\n case \"Q_TYPE_DENIED\":\r\n code = 103;//\r\n msg = junboCore.get(\"msg\", \"upload\", 103) || \"文件类型错误\";\r\n break;\r\n }\r\n if (code != 100) {\r\n o.error({Code: code, Msg: msg, File: file});\r\n }\r\n }\r\n junboCore.log(file);\r\n });\r\n\r\n uploader.on('beforeFileQueued', function (file) {\r\n junboCore.log(file);\r\n if (o.beforeFileQueued instanceof Function) {\r\n o.beforeFileQueued(file);\r\n }\r\n });\r\n\r\n uploader.on('fileQueued', function (file) {\r\n //name,id\r\n if (o.fileQueued instanceof Function) {\r\n o.fileQueued(file);\r\n }\r\n });\r\n\r\n uploader.on('uploadProgress', function (file, percentage) {\r\n if (o.progress instanceof Function) {\r\n o.progress(file, percentage);\r\n }\r\n junboCore.log(file.name + \" -> \" + percentage);\r\n });\r\n\r\n uploader.on('uploadSuccess', function (file, reponse) {\r\n if (o.success instanceof Function) {\r\n o.success(file, reponse);\r\n }\r\n junboCore.log(file.name + \" 上传完成!!\", reponse);\r\n });\r\n\r\n uploader.on('uploadError', function (file, reason) {\r\n if (o.error instanceof Function) {\r\n o.error({Code: 99, Msg: reason, File: file});\r\n }\r\n junboCore.log(file.name + \" 上传失败!\");\r\n });\r\n\r\n uploader.on('uploadComplete', function (file) {\r\n if (o.uploadCompleted instanceof Function) {\r\n o.uploadCompleted(file);\r\n }\r\n });\r\n\r\n /**\r\n * 开始上传\r\n */\r\n this.start = function () {\r\n if (!o.auto) {\r\n uploader.upload();\r\n }\r\n };\r\n\r\n /**\r\n * 获取上传对象\r\n */\r\n this.getUploader = function () {\r\n return uploader;\r\n };\r\n\r\n /**\r\n * 重置对象队列\r\n */\r\n this.reset = function () {\r\n uploader & uploader.reset();\r\n };\r\n\r\n /**\r\n * 重设服务地址\r\n * @param server\r\n */\r\n this.setServer = function (server) {\r\n if (uploader) {\r\n uploader.option('server', server);\r\n }\r\n };\r\n\r\n this.cancel = function () {\r\n var files = uploader.getFiles();\r\n if (files) {\r\n for (var i in files) {\r\n uploader.cancelFile(files[i]);\r\n }\r\n }\r\n };\r\n return this;\r\n }\r\n\r\n return new Uploadify(para)\r\n } else {\r\n alert(\"请引用 uploadify 文件!\");\r\n }\r\n };\r\n\r\n return junboCore;\r\n\r\n}(jQuery || Zepto, JunboCore || {}));\r\n","/**\r\n * 模态窗体\r\n * Created by tangfan on 2015/8/28.\r\n * versoin:2015-09-14\r\n */\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n /**\r\n * 弹出框\r\n * @param para\r\n * @param {String} para.id 框体id 默认值为modal\r\n * @param {Number} para.top 离顶部的距离\r\n * @param {Number} para.overlay 透明度\r\n * @param {String} para.closeClass 关闭窗口的类名 默认值modal-close\r\n * @param {String} para.closeClassPlus 关闭窗口的其它jquery查询方式\r\n * @param {Boolean} para.autoClose 默认值 true 点击其它地方时,是否自动关闭\r\n * @param {Function} para.shown 展开后的操作\r\n * @param {Function} para.closed 关闭后的操作\r\n * @param {Number} para.width 宽度 默认600\r\n * @param {Number} para.height 高度 默认400\r\n * @returns {Modal}\r\n */\r\n junboCore.createModal = function (para) {\r\n var _p = $.extend({}, {\r\n id: \"modal\"\r\n }, para);\r\n\r\n if (_p.id && _p.id.indexOf(\"#\") != 0) {\r\n _p.id = \"#\" + _p.id;\r\n }\r\n\r\n if (_p.closeClass && _p.closeClass.indexOf(\".\") != 0) {\r\n _p.closeClass = \".\" + _p.closeClass;\r\n }\r\n\r\n function Modal(v) {\r\n var _this = this;\r\n _this.isClosing = false;\r\n _this.Closed = true;\r\n var defaults = {\r\n id: \"\",\r\n top: 100,\r\n overlay: 0.5,\r\n closeClass: \"modal-close\",\r\n closeClassPlus: \"\",\r\n width: 600,\r\n height: 400,\r\n autoClose: false,\r\n shown: null,\r\n closed: null\r\n },\r\n $overlay = $(\"\"),\r\n mask_zIndex = 1000 + (junboCore.createModal.modalCount++)\r\n ;\r\n $(\"body\").append($overlay);\r\n $overlay.css({\"z-index\": mask_zIndex - 1});\r\n var o = $.extend({}, defaults, v);\r\n if (o.autoClose) {\r\n $overlay.click(function () {\r\n _this.close();\r\n });\r\n }\r\n\r\n var mainSize = {\r\n width: o.width + \"px\"\r\n };\r\n\r\n if (o.height > 0) {\r\n mainSize.height = o.height + \"px\";\r\n } else {\r\n mainSize.height = \"auto\";\r\n }\r\n var $id = $(o.id);\r\n\r\n $id.css(mainSize);\r\n\r\n var closeButton = $(\"\");\r\n $id.append(closeButton);\r\n closeButton.click(function () {\r\n _this.close();\r\n });\r\n if (o.closeClassPlus) {\r\n $(o.closeClassPlus).click(function () {\r\n _this.close();\r\n })\r\n }\r\n var scss3 = false;// && junboCore.browser.supportCSS3();\r\n\r\n if (junboCore.browser.ieVersion != undefined) {\r\n scss3 = junboCore.browser.ieVersion > 9;\r\n } else {\r\n scss3 = true;\r\n }\r\n\r\n\r\n var setPosition = function () {\r\n var modal_height = $id.outerHeight();\r\n var modal_width = $id.outerWidth();\r\n var para = {\r\n \"display\": \"block\",\r\n \"position\": \"fixed\",\r\n //\"opacity\": 0,\r\n \"z-index\": mask_zIndex,\r\n \"left\": 50 + \"%\",\r\n \"margin-left\": -(modal_width / 2) + \"px\",\r\n \"top\": o[\"top\"] === undefined ? (getCenterY() + \"px\") : ( o.top + \"px\")\r\n //\"margin-top\": -((modal_height / 2) + o.top) + \"px\"\r\n };\r\n $id.css(para);\r\n return $id;\r\n };\r\n\r\n function getCenterY() {\r\n var bodyH = $(\"body\").outerHeight();\r\n var divH = $id.outerHeight();\r\n if (bodyH <= divH) {\r\n return 0;\r\n } else {\r\n //$(document).scrollTop()\r\n return bodyH / 2 - divH / 2;\r\n }\r\n }\r\n\r\n setPosition();\r\n $id.hide();\r\n /**\r\n * 获取$查询结果\r\n * @returns {*|jQuery|HTMLElement}\r\n */\r\n this.get$ = function () {\r\n return $id;\r\n };\r\n\r\n\r\n /**\r\n * 显示模态窗口\r\n */\r\n this.show = function (callback) {\r\n _this.Closed = false;\r\n this.topCenter();\r\n $overlay.css({\"display\": \"block\", opacity: 0}).fadeTo(200, o.overlay);\r\n setPosition();\r\n var isFunctionCb = junboCore.getType(callback) === \"function\";\r\n if (scss3) {\r\n $id.removeClass(\"hidden\").addClass(\"show\");//.fadeTo(200, 1);\r\n if (isFunctionCb) {\r\n callback.call(this);\r\n }\r\n } else {\r\n $id.fadeTo(200, 1, function () {\r\n if (isFunctionCb) {\r\n callback.call(this);\r\n }\r\n });\r\n }\r\n if (o.shown instanceof Function) {\r\n var index = 0;\r\n if (isFunctionCb) {\r\n index = 1;\r\n }\r\n o.shown.apply(this, Array.prototype.slice.call(arguments, index));\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * 关闭模态窗口\r\n */\r\n this.close = function () {\r\n _this.isClosing = true;\r\n if (junboCore.getType(o.closed) === \"function\") {\r\n var back = o.closed.call(this);//return 为true时,才关闭\r\n if (junboCore.getType(back) === \"boolean\") {\r\n if (back) {\r\n closeOpr();\r\n }\r\n } else {\r\n closeOpr();//如果return为空对象,或者没有值,则也关闭\r\n }\r\n } else {\r\n closeOpr();\r\n }\r\n _this.isClosing = false;\r\n _this.Closed = true;\r\n };\r\n\r\n var closeOpr = function () {\r\n $overlay.fadeOut(200);\r\n if (scss3) {\r\n $id.addClass(\"hidden\").removeClass(\"show\");\r\n } else {\r\n $id.css({\"display\": \"none\"});\r\n }\r\n };\r\n\r\n /**\r\n * 设置高度值\r\n */\r\n this.top = function (height) {\r\n o.top = height > 0 ? height : 100;\r\n $id.css({\"top\": o.top + \"px\"});\r\n };\r\n\r\n /**\r\n * 垂直居中\r\n */\r\n this.topCenter = function () {\r\n this.top(getCenterY());\r\n }\r\n }\r\n\r\n return new Modal(_p);\r\n };\r\n junboCore.createModal.modalCount = 0;\r\n return junboCore;\r\n\r\n}(jQuery, JunboCore || {}));","/**\r\n * 页面扩展 PC端\r\n * Created by tangfan on 2015/9/9.\r\n */\r\nvar JunboCore = (function ($, junboCore) {\r\n\r\n /**\r\n * 按钮控制\r\n * 按钮需要定义当前样式data-style=blue\r\n * @type {{disable, enable}}\r\n */\r\n junboCore.button = (function (core) {\r\n return {\r\n disable: function (btn) {\r\n var $b = $(btn),\r\n style = $b.attr(\"data-style\")\r\n ;\r\n if ($b && $b.length > 0 && style) {\r\n $b.removeClass(style).addClass(\"disabled\");\r\n }\r\n },\r\n enable: function (btn) {\r\n var $b = $(btn),\r\n style = $b.attr(\"data-style\")\r\n ;\r\n if ($b && $b.length > 0 && style) {\r\n $b.removeClass(\"disabled\").addClass(style);\r\n }\r\n },\r\n version: \"0.0.1\"\r\n }\r\n }(junboCore));\r\n\r\n junboCore.number = (function (core) {\r\n return {\r\n flowConvert: function (flow) {\r\n return (flow < 1024 ? flow : Math.round(parseFloat(flow / 1024) * 1000) / 1000) + (flow < 1024 ? \"M\" : \"G\");\r\n },\r\n /**\r\n * 小数点有效位数\r\n * @param num 数值\r\n * @param bit 位数\r\n * @param zero 是否补零\r\n */\r\n toFixed: function (num, bit, zero) {\r\n if (junboCore.getType(num) !== \"number\") return 0;\r\n if (num === 0) return 0;\r\n if (bit <= 0) return num >>> 0;\r\n if (bit > 20) bit = 20;\r\n var bits = Math.pow(10, bit);\r\n var result = Math.round(parseFloat(num * bits).toFixed(bit)) / bits;\r\n if (zero) {\r\n var find = String(result).split(\".\");\r\n if (find.length >= 2) {\r\n if (find[1].length < bit) {\r\n return result.toFixed(bit);\r\n }\r\n }\r\n return result;\r\n }\r\n return result;\r\n },\r\n version: \"0.0.1\"\r\n }\r\n }(junboCore));\r\n\r\n junboCore.string = (function (core) {\r\n return {\r\n format: function () {\r\n if (arguments.length === 0) return \"\";\r\n var str = arguments[0],\r\n list = Array.prototype.slice.call(arguments, 1)\r\n ;\r\n if (str) {\r\n return str.replace(/{(\\d+?)}/g, function (d, n) {\r\n return list[(~~n) - 1] || \"\";\r\n })\r\n }\r\n return \"\";\r\n },\r\n /**\r\n * 将字符串转为时间格式\r\n * 字符串格式为 yyyy-MM-dd HH:mm:ss\r\n */\r\n toDate: function (str) {\r\n str = str.replace(/-/g, \"/\");\r\n return new Date(str);\r\n },\r\n version: \"0.0.2\"\r\n }\r\n }(junboCore));\r\n\r\n /**\r\n * 类相关实体相关方法\r\n * @type {{format, version}}\r\n */\r\n junboCore.classExt = (function (core) {\r\n return {\r\n /**\r\n * ParaName|Type|Reflect|ture/false\r\n * 参数名称|参数类型|参数引用|无数据时填入空值 为false时 则不展示该字段\r\n */\r\n DEF_ENTITY: null,\r\n init: function (def_entity) {\r\n this.DEF_ENTITY = def_entity;\r\n },\r\n adapt: function (source, flag) {\r\n if (source == undefined) return \"\";\r\n var flagEntity = this.DEF_ENTITY[flag];\r\n if (flagEntity) {\r\n var result = {},\r\n isArray = junboCore.getType(source) === \"array\"\r\n ;\r\n if (isArray) {\r\n result = [];\r\n for (var li_s in source) {\r\n result.push(this.adapt(source[li_s], flag));\r\n }\r\n return result;\r\n }\r\n for (var item in flagEntity) {\r\n var getpara = String(item).split(\"|\");\r\n if (getpara.length > 2) {\r\n if (getpara[1] === \"array\") {\r\n var listItem = source[getpara[0]];\r\n if (listItem != undefined) {\r\n result[flagEntity[item]] = this.adapt(listItem, getpara[2]);\r\n } else {\r\n if (~~getpara[3]) {\r\n result[flagEntity[item]] = \"\";\r\n }\r\n }\r\n }\r\n } else if (getpara.length === 1) {\r\n if (source && source.hasOwnProperty(item)) {\r\n result[flagEntity[item]] = source[item];\r\n } else {\r\n result[flagEntity[item]] = \"\";\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n return source;\r\n },\r\n version: \"0.0.1\"\r\n }\r\n }(junboCore));\r\n\r\n /**\r\n * window页面操作对象\r\n * @type {{scrollTo}}\r\n */\r\n junboCore.window = (function (core) {\r\n return {\r\n scrollTo: function (parent, ele, callback, offset) {\r\n //兼容新方式\r\n if (parent === \".left\") {\r\n parent += \" .menu\";\r\n }\r\n offset = $.extend({}, {x: 0, y: 30, t: 0}, offset);\r\n var top = 0,\r\n $p = $(parent),\r\n parentOffset = $p.length === 1 ? $p.offset().top + $p.scrollTop() : 0,\r\n $ele = (function (type) {\r\n switch (type) {\r\n case \"string\":\r\n $ele = $(ele.charAt(0) === \"#\" || ele.charAt(0) === \".\" ? ele : ( \"#\" + ele));\r\n top = $ele.offset().top - parentOffset - offset.y;\r\n return $(ele.charAt(0) === \"#\" ? ele : ( \"#\" + ele));\r\n case \"number\":\r\n top = ele;\r\n return null;\r\n case \"object\":\r\n var $e = ele;\r\n if ($e instanceof $) {\r\n\r\n } else {\r\n $e = $(ele);\r\n }\r\n top = $e.offset().top - parentOffset - offset.y;\r\n return $e;\r\n }\r\n }(junboCore.getType(ele)))\r\n ;\r\n if ($p.length > 0) {\r\n top = top < 0 ? 0 : top;\r\n if (top <= 100) {\r\n $p.animate({scrollTop: top}, 0, callback);\r\n } else {\r\n $p.animate({scrollTop: top}, offset.t, callback);\r\n }\r\n } else {\r\n if (junboCore.isFunction(callback)) {\r\n callback();\r\n }\r\n }\r\n },\r\n version: \"0.0.2\"\r\n }\r\n }(junboCore));\r\n return junboCore;\r\n}(jQuery || Zepto, JunboCore || {}));\r\n","/**\r\n * 服务调用\r\n * Created by tangfan on 2015/8/31.\r\n * version:2015-09-14\r\n */\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n\r\n /**\r\n * 是否需要模拟数据\r\n * @type {boolean}\r\n */\r\n junboCore.Mock = [];\r\n\r\n /**\r\n * 加密调用封闭类\r\n * @param {Object} para 参数\r\n * @param {String} para.url 服务转发地址\r\n * @param {String} para.key 设置的关键KEY\r\n * @param {String} para.delay 设置调用的延迟时间 默认为10秒\r\n * @param {String} para.defExt 默认后缀\r\n * @class\r\n */\r\n function CallService(para) {\r\n var core = junboCore;\r\n var servicePara = $.extend({}, {\r\n url: core.combineRoot(\"/ServiceProxy.aspx\"),\r\n key: \"jblfkey\",\r\n clientVer: \"1.1.203.2015040815320012300001\",\r\n //clientVer: \"1.0.203.2015031118115526500001\",\r\n delay: 60000,\r\n defExt: \"aspx\",\r\n dataStrPlus: \"\",\r\n containKey: false\r\n }, para),\r\n _this = this\r\n ;\r\n if (servicePara.defExt && servicePara.defExt.charAt(0) == \".\") {\r\n servicePara.defExt = servicePara.defExt.slice(1, servicePara.defExt.length);\r\n }\r\n junboCore.log(\"RootProxy:\" + servicePara.url);\r\n var e = \"010001\",\r\n m = \"C1AFE8E509E170B612418ED7EE16CDCEAE0AB064299C0B3237D6A07D3B4049E4570A8F0FAA6BEE6378831143911AF637A7C52AFBAD6D11D3C8A005DE5D66AD9520BF2CD7A46E1D83A70C8FD6B2B1C74B3C27A2189ABECD2582251EECD472D917016E3FD9D6A14BB93285F2C699933BDB29EE5D05B9AC342B92CA3BD44F0512C5\",\r\n defaultAesKey = \"01020304050607080102030405060708\",\r\n useRoot = core.get(\"useRoot\"),\r\n is1301 = false//是否已超时\r\n ;\r\n var url = function (u) {\r\n return u;\r\n };\r\n if (useRoot) {\r\n var root = core.get(\"root\");\r\n var rootFlag = core.get(\"rootFlag\");\r\n url = function (u) {\r\n return core.combineJbUrl(u);\r\n }\r\n }\r\n _this.times = 0;\r\n _this.cacheKey = \"\";\r\n var getCacheKey = function () {\r\n return _this.cacheKey || (_this.cacheKey = GetRandomPlainKey());\r\n };\r\n\r\n /**\r\n * 执行异步POST\r\n * @param {String} postUrl post业务地址\r\n * @param {Object} businessContent 业务参数\r\n * @param {String} rootId 需要POST的ROOT路径\r\n * @param {callBack} callbackFunc 回调函数\r\n * @param {Number} callbackFunc.Code\r\n * @param {String} callbackFunc.Msg\r\n * @param {Object} callbackFunc.Result\r\n * @param {Object} mock 测试用\r\n */\r\n _this.ajax = function (postUrl, businessContent, callbackFunc, rootId, mock) {\r\n _this.times += 1;\r\n var data = junboCore.get();\r\n if (is1301 && !data.config.debug) {\r\n core.log(\"已超时,暂停调用\" + postUrl);\r\n return;\r\n }\r\n var code = $.cookie(servicePara.key);\r\n if ($.trim(code) == \"\") {\r\n if (_this.times === 1) {\r\n // 首次调用时才生成\r\n var _key = GetRandomPlainKey();\r\n $.cookie(servicePara.key, null);\r\n $.cookie(servicePara.key, _key, {expires: 2, path: '/'});\r\n code = _key;\r\n if (!$.cookie(servicePara.key)) {\r\n code = getCacheKey();\r\n }\r\n } else {\r\n code = getCacheKey();\r\n }\r\n }\r\n var userEntity = junboCore.get(\"userEntity\") || null;\r\n if (userEntity && userEntity[\"OrgId\"]) {\r\n businessContent = $.extend({}, {\r\n OrgId: userEntity[\"OrgId\"],\r\n channelId: userEntity[\"OrgId\"]\r\n }, businessContent);\r\n }\r\n var bJson = GetBusinessJsonStr(businessContent),\r\n rcValue = GetAesEncryptContent(bJson),\r\n sourceUrl = postUrl,//保存源路径\r\n isMock = mock !== undefined ? !!mock : !!junboCore.isMock\r\n ;\r\n if (arguments.length >= 4 && junboCore.getType(rootId) === \"string\") {\r\n postUrl = core.combineXxUrl(rootId, postUrl);\r\n sourceUrl = postUrl;\r\n } else {\r\n postUrl = url(postUrl);\r\n }\r\n if (postUrl.indexOf(servicePara.defExt) == -1) {\r\n postUrl = postUrl + \".\" + servicePara.defExt;\r\n }\r\n _this.guid = core.guid().substr(10, 6);\r\n var guid = _this.guid,\r\n nowDate = new Date();\r\n core.log(\"[\" + guid + \"] >-> [\" + (rootId || core.get(\"rootFlag\")) + \"] \" + postUrl, businessContent);\r\n var dataStr = \"U=\" + encodeURIComponent(postUrl) + \"&RC=\" + encodeURIComponent(rcValue) + \"&T=\" + (nowDate.Format(\"yyyyMMddHHmmss\")) + \"&D=\" + (!data.config.release ? 1 : 0);\r\n if (servicePara.dataStrPlus) {\r\n var type = junboCore.getType(servicePara.dataStrPlus);\r\n switch (type) {\r\n case \"function\":\r\n dataStr += servicePara.dataStrPlus();\r\n break;\r\n case \"string\":\r\n dataStr += servicePara.dataStrPlus;\r\n break;\r\n default:\r\n dataStr += Object.prototype.toString.call(servicePara.dataStrPlus);\r\n break;\r\n }\r\n }\r\n if (servicePara.containKey) {\r\n dataStr += \"&A=\" + guid.substr(0, 3) + code + guid.substr(3, 3);\r\n }\r\n var paraStr = \"postUrl:\" + postUrl + \" dataStr:\" + dataStr + \" key:\" + code + \" serviceUrl:\" + servicePara.url;\r\n\r\n var ajax = function (dataStr) {\r\n var def = $.Deferred();\r\n var startTime = new Date().getTime();\r\n\r\n function getUserTime() {\r\n var userTime = new Date().getTime() - startTime;\r\n return parseFloat(parseInt(userTime * 100 / 1000) / 100) + \"s\";\r\n }\r\n\r\n function callback(para) {\r\n if (junboCore.getType(callbackFunc) === \"function\") {\r\n callbackFunc(para);\r\n }\r\n def.resolve(para);\r\n }\r\n\r\n var mockUrls = junboCore.Mock;\r\n if (mockUrls && mockUrls.length > 0) {\r\n $.each(mockUrls, function (i, k) {\r\n if (k && sourceUrl.indexOf(k) > -1) {\r\n isMock = true;\r\n return false;\r\n }\r\n })\r\n }\r\n\r\n $.ajax({\r\n type: \"post\",\r\n data: dataStr,\r\n url: isMock ? sourceUrl : servicePara.url,\r\n dataType: \"text\",\r\n async: true,\r\n timeout: servicePara.delay,\r\n success: function (d, e) {\r\n if (isMock) {\r\n callback({Code: 100, Result: JSON.parse(d), Msg: \"\", Flag: \"sMock\"});\r\n return;\r\n }\r\n var err_msg = \"AES解密错误\", err_result = {};\r\n try {\r\n var res = GetAesDecryptContent(d);\r\n } catch (err) {\r\n err_msg = \"页面内部异常\";\r\n err_result = err;\r\n }\r\n if (res == \"\") {\r\n core.log(err_msg);\r\n junboCore.log(paraStr);\r\n junboCore.log(\"[\" + guid + \"] <-< [113] [\" + getUserTime() + \"] \" + postUrl + \",\" + dataStr);\r\n callback({Code: 113, Result: err_result, Msg: err_msg, Flag: \"s1\"});\r\n return;\r\n }\r\n try {\r\n var obj = eval('(' + res + ')'),\r\n dialog = window[\"dialog\"] || null\r\n ;\r\n if (obj) {\r\n var status = +obj.S;\r\n junboCore.log(\"[\" + guid + \"] <-< [\" + status + \"] [\" + getUserTime() + \"] \" + postUrl, obj);\r\n if (status === 131) {\r\n core.log(\"无操作权限!\");\r\n callback({\r\n Code: 131,\r\n Result: {},\r\n ParaStr: paraStr,\r\n Msg: \"您没有操作权限\",\r\n Flag: \"s5\"\r\n });\r\n return;\r\n } else if (status === 1301) {\r\n if (is1301) return;\r\n is1301 = true;\r\n core.log(\"用户登录已超时\");\r\n if (dialog) {\r\n var dia = dialog({\r\n title: \"提示\",\r\n content: \"用户登录已超时,请重新登录。\",\r\n okValue: \"确定\",\r\n width: 480,\r\n onclose: function () {\r\n junboCore.$$module.trigger(\"redirect\", \"login\");\r\n },\r\n ok: function () {\r\n\r\n }\r\n }).showModal();\r\n setTimeout(function () {\r\n dia.close().remove();\r\n }, 3000);\r\n } else {\r\n callback({\r\n Code: 1301,\r\n Result: {},\r\n ParaStr: paraStr,\r\n Msg: \"user login out of date\",\r\n Flag: \"s6\"\r\n })\r\n }\r\n return;\r\n }\r\n callback({\r\n Code: parseInt(obj.S, 10),\r\n Result: obj.C || {},\r\n ParaStr: paraStr,\r\n Msg: (data.config.msg != \"\" ? junboCore.msg(status) : \"\") || obj.M,\r\n Flag: \"s2\"\r\n });\r\n } else {\r\n callback({\r\n Code: -1,\r\n Result: {},\r\n ParaStr: paraStr,\r\n Msg: data.config.msg != \"\" ? junboCore.msg(-1) : \"\",\r\n Flag: \"s3\"\r\n });\r\n }\r\n } catch (err) {\r\n core.log(err);\r\n callback({\r\n Code: -2,\r\n Result: {},\r\n ParaStr: paraStr,\r\n Msg: err[\"message\"],\r\n Flag: \"s4\"\r\n });\r\n }\r\n },\r\n error: function (d) {\r\n //core.log(\"Http Status :\" + d.status + \",Msg:\" + d.statusText + \",responseText:\" + d.responseText);\r\n var code = parseInt(d.status, 10) || d.status;\r\n // code 值为100时,是由HTTP服务返回的100状态码\r\n code = code == 100 ? 10000 : code;\r\n var msg = d.statusText;\r\n if (msg === \"timeout\") {\r\n code = -3;\r\n msg = \"网络超时\";\r\n }\r\n if (msg === \"error\") {\r\n code = -4;\r\n msg = \"网络异常\";\r\n }\r\n if (code == 502) {\r\n msg = \"服务器无响应\"\r\n }\r\n junboCore.log(\"[\" + guid + \"] <-< [\" + code + \"] [\" + getUserTime() + \"] \" + postUrl + \" Msg:\" + d.statusText + \" Response:\" + d.responseText + \" \");\r\n callback({\r\n Code: code,\r\n Result: {},\r\n Msg: msg,\r\n ParaStr: paraStr,\r\n Flag: \"e1\",\r\n Whole: d\r\n });\r\n }\r\n });\r\n return def;\r\n };\r\n return ajax(dataStr);\r\n };\r\n\r\n /**\r\n * 不加密的调用服务\r\n * @param postUrl\r\n * @param businessContent\r\n * @param callbackFunc\r\n * @param rootId\r\n * @returns {*}\r\n */\r\n _this.ajaxN = function (postUrl, businessContent, callbackFunc, rootId) {\r\n if (arguments.length == 4 && rootId) {\r\n postUrl = core.combineXxUrl(rootId, postUrl);\r\n } else {\r\n postUrl = url(postUrl);\r\n }\r\n if (postUrl.indexOf(servicePara.defExt) == -1) {\r\n postUrl = postUrl + \".\" + servicePara.defExt;\r\n }\r\n _this.guid = core.guid().substr(10, 6);\r\n var guid = _this.guid;\r\n core.log(\"[\" + guid + \"] >-> [\" + (rootId || core.get(\"rootFlag\")) + \"] \" + postUrl, businessContent);\r\n function callback(para) {\r\n if (junboCore.getType(callbackFunc) === \"function\") {\r\n callbackFunc(para);\r\n }\r\n }\r\n\r\n return $.ajax({\r\n type: \"post\",\r\n data: businessContent,\r\n url: postUrl,\r\n async: true,\r\n timeout: servicePara.delay,\r\n success: function (d, e) {\r\n var res = d;//GetAesDecryptContent(d);\r\n if (res == \"\") {\r\n core.log(\"AES解密错误\");\r\n core.log(\"[\" + guid + \"] <-< [113] \" + postUrl);\r\n callback({Code: 113, Result: {}, Msg: \"AES解密失败\", Flag: \"s1\"});\r\n return;\r\n }\r\n try {\r\n var obj = eval('(' + res + ')');\r\n if (obj) {\r\n var status = +obj.Code;\r\n core.log(\"[\" + guid + \"] <-< [\" + status + \"] \" + postUrl, obj);\r\n if (status === 131) {\r\n core.log(\"无操作权限!\");\r\n callback({\r\n Code: 131,\r\n Result: {},\r\n Msg: \"您没有操作权限\",\r\n Flag: \"s5\"\r\n });\r\n return;\r\n } else if (status === 1301) {\r\n core.log(\"用户登录已超时\");\r\n dialog({\r\n title: \"提示\",\r\n content: \"用户登录已超时,请重新登录。\",\r\n okValue: \"确定\",\r\n onclose: function () {\r\n $module.trigger(\"redirect\", \"login\");\r\n },\r\n ok: function () {\r\n\r\n }\r\n }).showModal();\r\n return;\r\n }\r\n callback({\r\n Code: obj.Code,\r\n Result: obj.Result || {},\r\n Msg: data.config.msg != \"\" ? junboCore.msg(status) : (obj.ErrorMsg || \"\"),\r\n Flag: \"s2\"\r\n });\r\n } else {\r\n callback({\r\n Code: -1,\r\n Result: {},\r\n Msg: data.config.msg != \"\" ? junboCore.msg(-1) : \"\",\r\n Flag: \"s3\"\r\n });\r\n }\r\n } catch (err) {\r\n core.log(err);\r\n callback({\r\n Code: -2,\r\n Result: {},\r\n Msg: err,\r\n Flag: \"s4\"\r\n });\r\n }\r\n },\r\n error: function (d) {\r\n //core.log(\"Http Status :\" + d.status + \",Msg:\" + d.statusText + \",responseText:\" + d.responseText);\r\n var code = parseInt(d.status, 10) || d.status;\r\n // code 值为100时,是由HTTP服务返回的100状态码\r\n code = code == 100 ? 10000 : code;\r\n var msg = d.statusText;\r\n if (msg === \"timeout\" || msg === \"error\") {\r\n code = -3;\r\n msg = \"网络超时\";\r\n }\r\n junboCore.log(\"[\" + guid + \"] <-< [\" + code + \"] [\" + getUserTime() + \"] \" + postUrl + \" Msg:\" + d.statusText + \" ResponseText:\" + d.responseText);\r\n callback({\r\n Code: code,\r\n Result: {},\r\n Msg: msg,\r\n Flag: \"e1\",\r\n Whole: d\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * 以text发送消息\r\n * @param url\r\n * @param data\r\n * @param successfn\r\n * @param errorfn\r\n * @param userId\r\n */\r\n _this.postRText = function (url, data, successfn, errorfn) {\r\n data = (data == null || data == \"\" || typeof (data) == \"undefined\") ? {} : data;\r\n var postData = {};\r\n postData.C = JSON.stringify(data);\r\n $.ajax({\r\n type: \"post\",\r\n data: postData,\r\n url: url,\r\n dataType: \"text\",\r\n async: true,\r\n timeout: servicePara.delay,\r\n success: function (d) {\r\n successfn(d);\r\n },\r\n error: function (d) {\r\n if (errorfn instanceof Function) {\r\n errorfn({Code: d.status, Msg: d.responseText});\r\n }\r\n }\r\n });\r\n };\r\n\r\n //随机AES密钥\r\n var GetRandomPlainKey = function () {\r\n len = 32;\r\n var $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnoprstuvwxyz0123456789';\r\n var maxPos = $chars.length;\r\n var plainKey = '';\r\n for (var i = 0; i < len; i++) {\r\n plainKey += $chars.charAt(Math.floor(Math.random() * maxPos));\r\n }\r\n return plainKey;\r\n };\r\n\r\n /**\r\n * AES加密\r\n * @param businessContent\r\n * @returns {*|string}\r\n */\r\n var GetAesEncryptContent = function (businessContent) {\r\n var cookiekey = GetUserRamdonKey();\r\n var key = CryptoJS.enc.Utf8.parse(cookiekey);\r\n var iv = CryptoJS.enc.Utf8.parse(cookiekey);\r\n var srcs = CryptoJS.enc.Utf8.parse(businessContent);\r\n var encrypted = CryptoJS.AES.encrypt(srcs, key, {\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n return encrypted.toString();\r\n };\r\n\r\n var GetAesDecryptContent = function (responseData) {\r\n var cookie = GetUserRamdonKey();\r\n var key = CryptoJS.enc.Utf8.parse(cookie);\r\n var iv = CryptoJS.enc.Utf8.parse(cookie);\r\n var decryptedData = CryptoJS.AES.decrypt(responseData, key, {\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n return decryptedData.toString(CryptoJS.enc.Utf8);\r\n };\r\n\r\n var GetUserRamdonKey = function () {\r\n var userKey = _this.cacheKey || $.cookie(servicePara.key);\r\n return userKey || \"\";\r\n };\r\n\r\n var GetBusinessJsonStr = function (businessContent) {\r\n if (businessContent == null) return \"\";\r\n if (businessContent == \"\") return \"\";\r\n return JSON.stringify(businessContent);\r\n };\r\n }\r\n\r\n /**\r\n * 在init时初始化该值\r\n * @type {null}\r\n */\r\n junboCore.Service = null;\r\n\r\n junboCore.createService = function (para) {\r\n var server = new CallService(para);\r\n return server;\r\n };\r\n\r\n /**\r\n * 登录成功后缓存数据\r\n * @param user\r\n */\r\n junboCore.loginCached = function (user) {\r\n $.cookie(\"UserEntity\", JSON.stringify(user), {path: \"/\", expires: 7});\r\n var getUrl = jc.get(\"url\", \"redirect_url\");\r\n if (!!getUrl) {\r\n top.location.href = junboCore.combineRoot(decodeURIComponent(getUrl));\r\n } else {\r\n top.location.href = junboCore.combineRoot(junboCore.defaultUrl || \"index.aspx\");\r\n }\r\n };\r\n\r\n /**\r\n * 重定向\r\n * @param {String} flag\r\n */\r\n junboCore.redirect = function (flag) {\r\n var loginUrl = junboCore[\"loginUrl\"] || \"/login.aspx\";\r\n var defaultUrl = junboCore[\"defaultUrl\"] || \"/index.aspx\";\r\n var last_href = window.location.pathname + window.location.search + window.location.hash;\r\n var url = \"\";\r\n if (!flag || flag === \"login\") {\r\n if (window.location.pathname === loginUrl) return;\r\n url = junboCore.combineRoot(loginUrl + \"?redirect_url=\" + encodeURIComponent(last_href));\r\n } else {\r\n if (window.location.pathname === defaultUrl) return;\r\n url = junboCore.combineRoot(defaultUrl);\r\n }\r\n window.location.href = url;\r\n };\r\n\r\n return junboCore;\r\n\r\n}(jQuery || Zepto, JunboCore || {}));","/**\r\n * 订阅者模式\r\n */\r\nvar JunboCore = (function ($, junboCore) {\r\n var ob = function (caller) {\r\n //调用者\r\n this.user = caller;\r\n //订阅者数组\r\n this.subscribers = [];\r\n };\r\n ob.prototype = {\r\n //订阅方法,返回订阅本身 'event标识符'\r\n bind: function (evt, fn) {\r\n this.subscribers[evt] ? this.subscribers[evt].push(fn) : (this.subscribers[evt] = []) && this.subscribers[evt].push(fn);\r\n //return '{\"evt\":\"' + evt + '\",\"fn\":\"' + (this.subscribers[evt].length - 1) + '\"}';\r\n return this;\r\n },\r\n //发布方法,成功后返回自身\r\n trigger: function (evt, args) {\r\n if (this.subscribers[evt]) {\r\n for (var i in this.subscribers[evt]) {\r\n if (typeof(this.subscribers[evt][i]) === 'function') {\r\n this.subscribers[evt][i].call(this.user, evt, args);\r\n }\r\n }\r\n return this;\r\n }\r\n return false;\r\n },\r\n //解除订阅,需传入订阅event标识符\r\n unbind: function (subId) {\r\n try {\r\n var id = JSON.parse(subId);\r\n this.subscribers[id.evt][id.fn] = null;\r\n delete this.subscribers[id.evt][id.fn];\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n };\r\n\r\n junboCore.observer = function () {\r\n return new ob(arguments.callee.caller);\r\n };\r\n\r\n return junboCore;\r\n})(jQuery, JunboCore || {});","/**\r\n * 厂商选择控件\r\n * Created by tangfan on 2015/12/7.\r\n */\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n\r\n function Firms(para) {\r\n var _this = this,\r\n o = $.extend(true, {\r\n id: \"firm\",//默认为firm\r\n useAnimate: false,\r\n firms: [],\r\n checkboxClass: \"icheckbox_minimal-blue\"//多选框样式\r\n }, para),\r\n // 主题样式实体\r\n tEntity = {\r\n toggleBtnClass: \"\"// 切换展开关闭按钮的样式\r\n },\r\n /**\r\n * 当前状态\r\n * 0-已收起(默认) 1-已展开\r\n * @type {number}\r\n */\r\n State = 0,//0-已收起(默认) 1-已展开\r\n isReseting = false, //是否正在重置\r\n cacheId = [],//缓存已展示过的ID\r\n totalCount = 0,//可选择的总数\r\n /**\r\n * 是否正在动画中\r\n * @type {boolean}\r\n */\r\n isAnimating = false,\r\n /**\r\n * 一行展示条基础模板\r\n * @type {string}\r\n */\r\n tmpl = \"
      \\n
      {{?it.title}}{{=it.title}}{{?}}
      \\n
      \\n
      \\n
      \\n \\n
      \\n
      \\n {{?JunboCore.getType(it._data) === \\\"array\\\"}}\\n {{~it._data:item:index}}\\n {{?JunboCore.getType(item) === \\\"array\\\"}}\\n
        \\n {{~item:iitem:iindex}}\\n
      • \\n {{~}}\\n
      \\n {{?}}\\n {{~}}\\n {{?}}\\n
      \\n
      \\n
      \\n
      \",//主要模板\r\n /**\r\n * 父级填充Id\r\n * @type {*|HTMLElement}\r\n */\r\n get$ = $(\"#\" + o.id),\r\n /**\r\n * 当前已选择的值\r\n * @type {null}\r\n */\r\n selected = null,\r\n /**\r\n * 根据当前选择项,来确定是否选择所有\r\n * @param id 当前项\r\n * @param pid 父项\r\n */\r\n selectAll = function (id, pid) {\r\n if (selected && selected.length > 0) {\r\n\r\n }\r\n },\r\n /**\r\n * 初始化DOM结构\r\n * @param selectFunc 循环时调用\r\n */\r\n initHtml = function (selectFunc) {\r\n if (initHtml.inited) return;\r\n initHtml.inited = true;\r\n if (o.firms && o.firms.length > 0 && o.firms[0].data) {\r\n $.each(o.firms[0].data, function (i, k) {\r\n var waitadd = {\r\n id: k.id,\r\n entity: k,\r\n children: [],\r\n };\r\n var bindData = o.bindData ? o.bindData[k.id] : null;\r\n if (bindData) {\r\n if (bindData.data) {\r\n waitadd.childCount = bindData.data.length;\r\n $.each(bindData.data, function (m, n) {\r\n waitadd.children.push({\r\n id: n.id,\r\n entity: n\r\n });\r\n });\r\n }\r\n var cached = get$.data(k.id);\r\n if (bindData) {\r\n if (!cached) {\r\n bindData.rowTitle = k.name;\r\n bindData.id = k.id;\r\n bindData.selected = true;\r\n var $html = addFilm(bindData, true);\r\n //if (State === 1) {\r\n // 如果已经是展示的状态,则默认追加的内容也应该展开\r\n //toggleWrap(State, $html.find(\".firm-item-wrap:eq(0)\"), false);\r\n //}\r\n // 根据新需求,子项均默认为展示\r\n toggleWrap(1, $html.find(\".firm-item-wrap\"), false);\r\n get$.data(k.id, $html);\r\n cacheId.push(k.id);\r\n $html.toggle(false);//不展示 梁\r\n } else {\r\n //cached.toggle(true);\r\n //toggleWrap(State, cached.find(\".firm-item-wrap\"), false);\r\n }\r\n }\r\n }\r\n if (junboCore.isFunction(selectFunc)) {\r\n selectFunc(waitadd);\r\n }\r\n });\r\n }\r\n },\r\n /**\r\n * 生成数据\r\n */\r\n create = function () {\r\n if (!o.firms) {\r\n o.firms = [{title: \"无数据!\"}];\r\n }\r\n $.each(o.firms, function (i, k) {\r\n if (k.data) {\r\n $.each(k.data, function (m, n) {\r\n if (!n.id) {\r\n n.id = junboCore.guid(\"_firms_\", 8);\r\n }\r\n });\r\n }\r\n });\r\n if (o.bindData) {\r\n $.each(o.bindData, function (i, k) {\r\n if (k.data) {\r\n $.each(k.data, function (m, n) {\r\n if (!n.id) {\r\n n.id = junboCore.guid(\"_firm_data_\", 8);\r\n }\r\n n.selected = true;//默认全选中\r\n totalCount++;\r\n });\r\n }\r\n });\r\n }\r\n get$.on(\"ifChanged\", function (event) {\r\n var $this = $(event.target),\r\n $lbl = $this.closest(\"label\"),\r\n check = $this.prop(\"checked\");\r\n\r\n if (check) {\r\n $lbl.addClass(\"checked\");\r\n } else {\r\n $lbl.removeClass(\"checked\");\r\n }\r\n });\r\n get$.on(\"ifClicked\", function (event) {\r\n if (isReseting) return;\r\n var $this = $(event.target),\r\n id = $this.closest(\"li\").attr(\"data-id\"),\r\n pid = $this.closest(\".firm-content\").prev(\".firm-title\").attr(\"data-id\"),\r\n checked = !$this.prop(\"checked\"),\r\n name = $this.attr(\"name\"),\r\n bindData = null\r\n ;\r\n if ($this.is(\":hidden\")) return;\r\n if (name === \"firm-select\") {\r\n bindData = getBindData(id, pid);\r\n // 判断是否存在父级数据\r\n if (bindData && bindData.result && bindData.parent) {\r\n var cached = get$.data(bindData.parent.id);//拉取缓存\r\n if (checked) {\r\n if (cached) {\r\n cached.find(\"input\").iCheck('check');//默认选中所有\r\n cached.toggle(true);//缓存存在,则直接显示出来\r\n } else {//否则新建并签入缓存\r\n bindData.result.rowTitle = bindData.parent.name;\r\n bindData.result.id = bindData.parent.id;\r\n bindData.result.selected = true;\r\n var $html = addFilm(bindData.result, true);\r\n //if (State === 1) {\r\n // 如果已经是展示的状态,则默认追加的内容也应该展开\r\n //toggleWrap(State, $html.find(\".firm-item-wrap:eq(0)\"), false);\r\n //}\r\n // 根据新需求,子项均默认为展示\r\n toggleWrap(1, $html.find(\".firm-item-wrap\"), false);\r\n get$.data(bindData.parent.id, $html);\r\n cacheId.push(bindData.parent.id);\r\n }\r\n // 根据选择总数来自动选择全部选择框\r\n selectAll(id, pid);\r\n } else {\r\n // 取消选择时隐藏项目\r\n if (cached) {\r\n cached.toggle(false);\r\n // 取消所有的选择\r\n cached.find(\"input\").iCheck(\"uncheck\");\r\n } else {\r\n //todo 缓存失效处理方式\r\n }\r\n }\r\n } else {\r\n //junboCore.tool.dialog({content: \"未找到[\" + id + \"]与之相关联的绑定数据\"});\r\n }\r\n try {\r\n _this.event.trigger(\"checkChange\", {\r\n id: id,\r\n checked: checked,\r\n parent: bindData.parent,\r\n entity: searchFirm(id) || searchBindData(id)\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n } else if (name === \"firm-title\") {\r\n // 当点击标题栏的多选框时,选择其所有的子项\r\n var childChecked = $this.parents(\".firm-title\").next(\".firm-content\").find(\"input[name='firm-select']\"),\r\n allChecked = !$this.prop(\"checked\"),\r\n allId = $this.closest(\".firm-title\").attr(\"data-id\"),\r\n binds = getBindData(allId),\r\n find = selected ? _(selected).findIndex(_(\"o=>o.id=='\" + allId + \"'\")) : -1,\r\n item = find > -1 ? selected[find] : null\r\n ;\r\n if (allChecked) {\r\n //childChecked.iCheck(\"check\");\r\n // 新增所有子级\r\n // 当选择了父级时,默认也选中其下所有的子级\r\n if (binds.result) {\r\n var res;\r\n if (item) {\r\n res = item;\r\n res.children = [];\r\n res.childCount = 0;\r\n if (binds.result.data) {\r\n res.childCount = binds.result.data.length;\r\n $.each(binds.result.data, function (i, k) {\r\n res.children.push({\r\n id: k.id,\r\n entity: k\r\n });\r\n });\r\n childChecked.iCheck(\"check\");\r\n _this.event.trigger(\"ifChanged\", res);\r\n }\r\n }\r\n } else {\r\n // 选择了全部\r\n selected = [];\r\n if (initHtml.inited) {\r\n if (o.firms && o.firms.length > 0 && o.firms[0].data) {\r\n $.each(o.firms[0].data, function (i, k) {\r\n var waitadd = {\r\n id: k.id,\r\n entity: k,\r\n children: [],\r\n childCount: 0\r\n };\r\n var bindData = o.bindData ? o.bindData[k.id] : null;\r\n if (bindData) {\r\n if (bindData.data) {\r\n waitadd.childCount = bindData.data.length;\r\n $.each(bindData.data, function (m, n) {\r\n waitadd.children.push({\r\n id: n.id,\r\n entity: n\r\n });\r\n });\r\n }\r\n var cached = get$.data(k.id);\r\n if (bindData) {\r\n if (!cached) {\r\n bindData.rowTitle = k.name;\r\n bindData.id = k.id;\r\n bindData.selected = true;\r\n var $html = addFilm(bindData, true);\r\n //if (State === 1) {\r\n // 如果已经是展示的状态,则默认追加的内容也应该展开\r\n //toggleWrap(State, $html.find(\".firm-item-wrap:eq(0)\"), false);\r\n //}\r\n // 根据新需求,子项均默认为展示\r\n toggleWrap(1, $html.find(\".firm-item-wrap\"), false);\r\n get$.data(k.id, $html);\r\n cacheId.push(k.id);\r\n $html.toggle(false);//不展示 梁\r\n } else {\r\n //cached.toggle(true);\r\n //toggleWrap(State, cached.find(\".firm-item-wrap\"), false);\r\n }\r\n }\r\n }\r\n selected.push(waitadd);\r\n var $this = get$.find(\"li[data-id='\" + waitadd.id + \"']\").find(\"input\");\r\n //$lbl = $this.closest(\"label\");\r\n $this.iCheck(\"check\");\r\n //$lbl.addClass(\"checked\");\r\n });\r\n }\r\n } else {\r\n initHtml(function (waitadd) {\r\n selected.push(waitadd);\r\n _this.event.trigger(\"ifChanged\", waitadd);\r\n });\r\n get$.find(\"input\").iCheck(\"check\");\r\n }\r\n }\r\n } else {\r\n childChecked.iCheck(\"uncheck\");\r\n if (item) {\r\n item.children = [];// 删除所有子级\r\n //var child = get$.data(item.id);\r\n //if (child) {\r\n // child.toggle(false);\r\n //}\r\n } else {\r\n selected = [];\r\n get$.find(\"input\").iCheck(\"uncheck\");//删除所有选择\r\n $.each(cacheId, function (i, k) {\r\n var item = get$.data(k);\r\n if (item) {\r\n item.toggle(false);\r\n }\r\n })\r\n }\r\n }\r\n //actionSelect(allId, allChecked, \"a\");\r\n }\r\n }).on(\"click\", \".firm_toggle_btn\", function (event) {\r\n if (isAnimating) return;\r\n var $this = $(event.target),\r\n state = $this.hasClass(\"put\") ? 1 : 0,\r\n $wrap = get$.find(\".firm-item-wrap:eq(0)\");\r\n //0-已收起(默认) 1-已展开\r\n if (state === 1) {\r\n State = 0;\r\n $this.removeClass(\"put\");\r\n }\r\n else {\r\n State = 1;\r\n $this.addClass(\"put\");\r\n }\r\n isAnimating = true;\r\n toggleWrap(State, $wrap, o.useAnimate, function () {\r\n isAnimating = false;\r\n });\r\n });\r\n render();\r\n _this.event.bind(\"ifChanged\", function (event, data) {\r\n if (data) {\r\n var $input = get$.find(\".firm-title[data-id='\" + data.id + \"'] input\"),//父级\r\n $pinput = get$.find(\".firm-wrap:eq(0)\").find(\"li[data-id='\" + data.id + \"'] input\"),//顶级\r\n check = $input.prop(\"checked\");\r\n if ($input.length !== 0 && check !== undefined) {\r\n if (data.childCount != data.children.length) {\r\n if (data.children.length === 0) {\r\n if ($input.parent().hasClass(\"indeterminate\")) {\r\n $input.iCheck(\"determinate\");\r\n $pinput.iCheck(\"determinate\");\r\n }\r\n $input.iCheck(\"uncheck\");\r\n $pinput.iCheck(\"uncheck\");\r\n } else {\r\n $input.iCheck(\"indeterminate\");\r\n $pinput.iCheck(\"indeterminate\");\r\n }\r\n } else {\r\n $input.iCheck(\"check\");\r\n $pinput.iCheck(\"check\");\r\n }\r\n }\r\n }\r\n if (resetAllCheckedState.reseting) return;\r\n resetAllCheckedState.reseting = true;\r\n setTimeout(function () {\r\n resetAllCheckedState();\r\n resetAllCheckedState.reseting = false;\r\n }, 100);\r\n // 重置所有状态\r\n });\r\n _this.event.bind(\"checkChange\", function (event, data) {\r\n actionSelect(data);\r\n //console.log(selected);\r\n });\r\n },\r\n /**\r\n * 重置所有状态\r\n */\r\n resetAllCheckedState = function () {\r\n var allCount = 0, checkedCount = 0, $all = get$.find(\".firm-title:eq(0) input\"), indeter = $all.parent().hasClass(\"indeterminate\");\r\n get$.find(\".firm-wrap:eq(0) .firm-content input\").each(function (i, k) {\r\n allCount++;\r\n if (k) {\r\n if ($(k).prop(\"checked\")) {\r\n checkedCount++;\r\n }\r\n }\r\n });\r\n if (allCount != 0) {\r\n if (checkedCount === 0) {\r\n if (indeter) {\r\n $all.iCheck(\"determinate\");\r\n }\r\n $all.iCheck(\"uncheck\");\r\n } else {\r\n if (allCount != checkedCount) {\r\n $all.iCheck(\"indeterminate\");\r\n } else {\r\n $all.iCheck(\"check\");\r\n }\r\n }\r\n }\r\n },\r\n /**\r\n * 填充一个选择,包含插入与删除\r\n * @params id 操作的ID项\r\n * @params s 是否为选项 ture 选中\r\n * @params pid 父级ID\r\n */\r\n actionSelect = function (data) {\r\n if (!selected) selected = [];\r\n var parent = data.parent, entity = data.entity, isMain = false;\r\n if (parent) {\r\n isMain = parent.id === entity.id;\r\n var binds = getBindData(parent.id);\r\n if (data.checked) {\r\n var findParentIndex = _(selected).findIndex(_(\"o=>o.id=='\" + parent.id + \"'\"));\r\n if (findParentIndex === -1) {\r\n // 未找到时\r\n var res = {\r\n id: parent.id,\r\n entity: parent,\r\n children: [],\r\n childCount: binds.result && binds.result.data ? binds.result.data.length : 0\r\n };\r\n if (!isMain) {\r\n res.children.push({id: entity.id, entity: entity});\r\n } else {\r\n // 当选择了父级时,默认也选中其下所有的子级\r\n if (binds.result && binds.result.data) {\r\n res.childCount = binds.result.data.length;\r\n $.each(binds.result.data, function (i, k) {\r\n res.children.push({\r\n id: k.id,\r\n entity: k\r\n });\r\n })\r\n }\r\n }\r\n selected.push(res);\r\n _this.event.trigger(\"ifChanged\", res);\r\n } else {\r\n if (isMain) {\r\n //主节点时再次添加全部数据\r\n var mainChild = selected[findParentIndex];\r\n mainChild.children = [];\r\n if (binds.result && binds.result.data) {\r\n mainChild.childCount = binds.result.data.length;\r\n $.each(binds.result.data, function (i, k) {\r\n mainChild.children.push({\r\n id: k.id,\r\n entity: k\r\n });\r\n })\r\n }\r\n } else {\r\n selected[findParentIndex].children.push({id: entity.id, entity: entity});\r\n }\r\n _this.event.trigger(\"ifChanged\", selected[findParentIndex]);\r\n }\r\n } else {\r\n // 如果删除的是本身\r\n if (entity.id === parent.id) {\r\n var findIndex = _(selected).findIndex(_(\"o=>o.id=='\" + entity.id + \"'\"));\r\n if (findIndex > -1) {\r\n selected[findIndex].children = [];\r\n _this.event.trigger(\"ifChanged\", selected[findIndex]);\r\n selected.splice(findIndex, 1);\r\n } else {\r\n console.log(\"delete\" + data + \"error\");\r\n }\r\n } else {\r\n var findIndex2 = _(selected).findIndex(_(\"o=>o.id=='\" + parent.id + \"'\"));\r\n if (findIndex2 > -1) {\r\n var childItem = selected[findIndex2].children;\r\n var findItemIndex = _(childItem).findIndex(_(\"o=>o.id=='\" + entity.id + \"'\"));\r\n if (findItemIndex > -1) {\r\n childItem.splice(findItemIndex, 1);\r\n _this.event.trigger(\"ifChanged\", selected[findIndex2]);\r\n } else {\r\n console.log(\"delete\" + data + \"error\");\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (data.checked) {\r\n var parentData = getBindData(entity.id);\r\n selected.push({\r\n id: entity.id,\r\n entity: entity,\r\n children: parentData.result ? parentData.result.data : [],\r\n childCount: parentData.result && parentData.result.data ? parentData.result.data.length : 0\r\n });\r\n _this.event.trigger(\"ifChanged\", selected[selected.length - 1]);\r\n } else {\r\n var findIndexxx = _(selected).findIndex(_(\"o=>o.id=='\" + entity.id + \"'\"));\r\n if (findIndexxx > -1) {\r\n selected[findIndexxx].children = [];\r\n _this.event.trigger(\"ifChanged\", selected[findIndexxx]);\r\n selected.splice(findIndexxx, 1);\r\n }\r\n }\r\n }\r\n },\r\n /**\r\n * 从数组中删除一项内容\r\n * @param arr\r\n * @param {Function} pre 返回布尔型的查询委托\r\n * @returns {number}\r\n */\r\n removeOne = function (arr, pre) {\r\n var index = -1;\r\n if (!junboCore.isFunction(pre)) return;\r\n $.each(arr, function (i, k) {\r\n if (pre(k)) {\r\n index = i;\r\n return false;\r\n }\r\n });\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n }\r\n return index;\r\n },\r\n toggleWrap = function (state, $wrap, animate, cb) {\r\n function callback() {\r\n if (junboCore.isFunction(cb)) {\r\n cb();\r\n }\r\n }\r\n\r\n if (state === 1) {\r\n //展开\r\n $wrap.each(function (i, k) {\r\n //根据每个展示条含有行数,而展开数据\r\n var $k = $(k),\r\n count = $k.find(\".firm-content ul\").length;\r\n // 该需求取消!20160111 原因是:版本选择可能会有多个,行数由外部定义\r\n //count = count > 1 ? 2 : 1;//根据需求,最多只展示2行\r\n var height = (38 * count) + \"px\";//展开高度\r\n //if (count === 2) {\r\n if (animate) {\r\n $k.animate({height: height}, \"normal\", function () {\r\n $k.prev(\".firm-left\").css(\"height\", height);\r\n callback();\r\n });\r\n } else {\r\n $k.css(\"height\", height);\r\n $k.prev(\".firm-left\").css(\"height\", height);\r\n callback();\r\n }\r\n //}\r\n });\r\n } else {\r\n //收起\r\n if (animate) {\r\n $wrap.prev(\".firm-left\").css({height: \"38px\"});\r\n $wrap.animate({height: \"38px\"}, \"normal\", function () {\r\n callback();\r\n })\r\n\r\n } else {\r\n $wrap.css(\"height\", \"38px\");\r\n $wrap.prev(\".firm-left\").css(\"height\", \"38px\");\r\n callback();\r\n }\r\n }\r\n },\r\n /**\r\n * 处理接口返回的厂商数据,并用每6个分组数据\r\n * @param data\r\n * @returns {Array}\r\n */\r\n oprData = function (data) {\r\n var result = [];\r\n var result_flag = 0;//标志\r\n if (JunboCore.getType(data) !== \"array\") return result;\r\n $.each(data, function (i, k) {\r\n if (i > 0 && i % 6 == 0) {\r\n result_flag++;\r\n }\r\n if (result.length <= result_flag) {\r\n result.push([k]);\r\n } else {\r\n result[result_flag].push(k);\r\n }\r\n });\r\n return result;\r\n },\r\n /**\r\n * 转化为网页代码\r\n * @param firms 选择条\r\n * @param {Boolean} append 是否是附加模式\r\n * @returns {string}\r\n */\r\n toHtml = function (firms, append) {\r\n var html = \"\",\r\n fms = firms || o.firms\r\n ;\r\n $.each(fms, function (i, k) {\r\n k._data = oprData(k.data);\r\n html += junboCore.tmplHtml(tmpl, k)\r\n });\r\n if (!append) {\r\n html += ' 0 && fms[0].data && fms[0].data.length <= 5 ? \"display:none;\" : \"\") + '\">';\r\n html = \"
      \" + html + \"
      \";\r\n }\r\n return html;\r\n },\r\n /**\r\n * 初始化整体渲染\r\n * @param firms\r\n * @returns {boolean}\r\n */\r\n render = function (firms) {\r\n if (get$.length === 0 || !o.firms) return false;\r\n get$.html(toHtml(firms));\r\n var $input = get$.find(\"input\");\r\n $input.iCheck({\r\n checkboxClass: o.checkboxClass,\r\n radioClass: o.checkboxClass + ' pullLeft',\r\n increaseArea: '20%', // optional\r\n checkedClass: 'checked'\r\n });\r\n },\r\n /**\r\n * 追加式渲染\r\n * @param firms\r\n * @returns {*|HTMLElement}\r\n */\r\n append = function (firms) {\r\n var $firm = $(toHtml(firms, true));\r\n get$.find(\".firm\").append($firm);\r\n $firm.find(\"input\").iCheck({\r\n checkboxClass: o.checkboxClass,\r\n radioClass: o.checkboxClass + ' pullLeft',\r\n increaseArea: '20%', // optional\r\n checkedClass: 'checked'\r\n });\r\n return $firm;\r\n },\r\n /**\r\n * 新增一项内容\r\n * @param data 该格式定义为{name,id,selected}\r\n */\r\n addFilm = function (data) {\r\n return append([data]);\r\n },\r\n /**\r\n * 根据Id获取绑定的内容\r\n * @param id\r\n * @returns {Object} result\r\n * @returns {Object} result.parent //父级实体\r\n * @returns {Object} result.result //结果,需要检测是否不为false\r\n */\r\n getBindData = function (id, pid) {\r\n if (o.bindData && junboCore.getType(o.bindData) === \"object\") {\r\n var find = searchFirm(id) || searchFirm(pid);\r\n return {\r\n parent: find,\r\n result: o.bindData[id] || false\r\n };\r\n }\r\n return false;//查找失败\r\n },\r\n /**\r\n * 根据Id搜索选择条实体\r\n * @param id\r\n * @returns {*}\r\n */\r\n searchFirm = function (id) {\r\n var find = null;\r\n $.each(o.firms, function (i, k) {\r\n if (k.id === id) {\r\n find = k;\r\n return true;\r\n }\r\n var fi = _(k.data).find(_(\"o=>o.id=='\" + id + \"'\")).items;\r\n if (fi.length > 0) {\r\n find = fi[0];\r\n return false;\r\n }\r\n });\r\n return find;\r\n },\r\n searchBindData = function (id) {\r\n var find = null;\r\n $.each(o.bindData, function (i, k) {\r\n var fi = _(k.data).find(_(\"o=>o.id=='\" + id + \"'\")).items;\r\n if (fi.length > 0) {\r\n find = fi[0];\r\n return false;\r\n }\r\n });\r\n return find;\r\n }\r\n ;\r\n _this.event = junboCore.observer();\r\n /**\r\n * 新增厂商\r\n */\r\n _this.addFirm = function () {\r\n\r\n };\r\n\r\n /**\r\n * 获取选择的厂商\r\n * 返回选择的厂商Id,及选择了所有的厂商Id\r\n */\r\n _this.getSelectedFirms = function () {\r\n if (!selected) return false;\r\n return selected;\r\n };\r\n\r\n /**\r\n * 重置\r\n */\r\n _this.reset = function (list) {\r\n isReseting = true;\r\n get$.find(\"input\").iCheck(\"uncheck\").iCheck(\"determinate\");\r\n selected = [];\r\n toggleWrap(0, get$.find(\".firm-item-wrap:eq(0)\"), false);\r\n get$.find(\".firm_toggle_btn\").removeClass(\"put\");\r\n $.each(cacheId, function (i, k) {\r\n var cached = get$.data(k);\r\n if (cached) {\r\n cached.toggle(false);\r\n }\r\n });\r\n if (list) {\r\n $.each(list, function (i, k) {\r\n var current = null, parent = null;\r\n var findFirm = _(o.firms[0].data).find(_(\"o=>o.id=='\" + k + \"'\")).items;\r\n if (findFirm.length == 0) {\r\n for (var f in o.bindData) {\r\n var item = o.bindData[f];\r\n var findList = _(item.data).find(_(\"o=>o.id=='\" + k + \"'\")).items;\r\n if (findList.length > 0) {\r\n current = findList[0];\r\n var items = _(o.firms[0].data).find(_(\"o=>o.id=='\" + f + \"'\")).items;\r\n if (items.length > 0) {\r\n parent = items[0];\r\n }\r\n break;\r\n }\r\n }\r\n } else {\r\n current = findFirm[0];\r\n parent = null;\r\n }\r\n if (current) {\r\n actionSelect({\r\n id: current.id,\r\n checked: true,\r\n parent: parent,\r\n entity: current\r\n });\r\n if (parent) {\r\n var $parent = get$.data(parent.id);\r\n if (!$parent) {\r\n initHtml();\r\n $parent = get$.data(parent.id);\r\n }\r\n if ($parent) {\r\n if (!$parent.data(\"hasUncheck\")) {\r\n $parent.data(\"hasUncheck\", true);\r\n $parent.find(\".firm-item-wrap li input\").iCheck(\"uncheck\");\r\n }\r\n toggleWrap(1, $parent.find(\".firm-item-wrap\"), false, function () {\r\n $parent.toggle(true);\r\n });\r\n var findLi = $parent.find(\"li[data-id='\" + current.id + \"']\");\r\n findLi.find(\"input\").iCheck(\"check\");\r\n }\r\n } else {\r\n $parent = get$.find(\".firm-title[data-id='\" + current.id + \"']\").parents(\".firm-wrap\");\r\n if ($parent.length === 0) {\r\n get$.find(\"li[data-id='\" + current.id + \"'] input\").iCheck(\"check\");\r\n } else {\r\n toggleWrap(1, $parent.find(\".firm-item-wrap\"), false, function () {\r\n $parent.toggle(true);\r\n });\r\n $parent.find(\"input\").iCheck(\"check\");\r\n }\r\n }\r\n }\r\n })\r\n }\r\n resetAllCheckedState();\r\n isReseting = false;\r\n };\r\n\r\n _this.version = \"1.0.2\";\r\n\r\n create();\r\n }\r\n\r\n /**\r\n * 创建一个新的厂商选择器\r\n * @param para\r\n * @param {String} para.id 父级Id\r\n * @param {String} para.firms firm条数(厂商选择为2条,一条选择品牌,一条选择机型)\r\n * @param {String} para.firms.title 选择条名称(默认为空字符串)\r\n * @param {String} para.firms.lineCount 选择条总行数(默认为2行,设为0时,不限制行数)\r\n * @returns {Firms}\r\n */\r\n junboCore.firms = function (para) {\r\n var $this = $(\"#\" + para.id);\r\n if (para.id) {\r\n var cached = $this.data(\"firm\");\r\n if (cached) return cached;\r\n }\r\n var re = new Firms(para);\r\n $this.data(\"firm\", re);\r\n return re;\r\n };\r\n /**\r\n * 生成Id\r\n */\r\n junboCore.firms.generateId = function () {\r\n return junboCore.guid(\"_firm_\")\r\n };\r\n return junboCore;\r\n})(jQuery, JunboCore);\r\n","/**\r\n * Created by tangfan on 2015/12/3.\r\n * 插件见文档:http://lokku.github.io/jquery-nstslider\r\n */\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n junboCore.slider = (function () {\r\n function Slider() {\r\n var _this = this,\r\n option = null,\r\n $sliderPanel = null,\r\n $slider = null,\r\n $current = null,\r\n isLoaded = false,\r\n tmpl = \"
      \\n
      {{=it.cur}}
      \\n
      \\n {{?it.twoHand}}\\n
      \\n
      \\n
      \\n {{??}}\\n
      \\n {{?}}\\n
      \\n
      {{=it.min}}
      \\n {{?it.nolimit > 0}}\\n
      \\n {{?}}\\n
      {{=it.nolimit > 0 ? it.nolimit - 1:it.max}}
      \\n
      \"\r\n ;\r\n\r\n _this.init = function (para) {\r\n if (isLoaded) return;\r\n isLoaded = true;\r\n var o = $.extend({}, {\r\n min: 1,\r\n max: 15,\r\n cur: 3,\r\n theme: \"\",\r\n nolimit: 0,//不限制的值\r\n id: \"\",//填充的ID\r\n padding: \"20px 0 20px 100px\",\r\n twoHand: false,//是否含有两个手柄\r\n curMax: 0,//当前第二手柄值\r\n limitValue: 99999 //不限时代表的值\r\n }, para);\r\n option = o;\r\n if (option.nolimit > 0) {\r\n option.max = option.nolimit;\r\n }\r\n if (option.twoHand) {\r\n if (option.curMax < option.cur) {\r\n option.curMax = option.cur + 1;\r\n option.curMax = option.curMax <= option.max ? option.curMax : option.max;\r\n }\r\n }\r\n junboCore.tmplByStr(tmpl, o.id, o);\r\n $sliderPanel = $(\"#\" + option.id + \"_slider\");\r\n $slider = $sliderPanel.find('.nstSlider');\r\n $current = $sliderPanel.find('.currentLabel');\r\n nstSliderInit();\r\n return _this;\r\n };\r\n\r\n /**\r\n * 设置位置\r\n * @param min 最小值或当前值\r\n * @param max 最大值\r\n */\r\n _this.setPos = function (min, max) {\r\n if (!isLoaded) return;\r\n if (option.twoHand) {\r\n $slider.nstSlider(\"set_position\", ~~min, ~~max);\r\n } else {\r\n $slider.nstSlider(\"set_position\", ~~min);\r\n }\r\n };\r\n\r\n /**\r\n * 获取当前所在位置\r\n * @return {Object|Number}\r\n */\r\n _this.getPos = function () {\r\n if (!isLoaded) return -1;\r\n var min = $slider.nstSlider(\"get_current_min_value\");\r\n if (option.twoHand) {\r\n var max = $slider.nstSlider(\"get_current_max_value\");\r\n return {\r\n min: min == option.nolimit ? option.limitValue : min,\r\n max: max == option.nolimit ? option.limitValue : max\r\n }\r\n }\r\n return min;\r\n };\r\n\r\n _this.disable = function () {\r\n try {\r\n $slider.nstSlider(\"disable\");\r\n } catch (err) {\r\n }\r\n };\r\n\r\n _this.enable = function () {\r\n try {\r\n $slider.nstSlider(\"enable\");\r\n } catch (err) {\r\n }\r\n };\r\n\r\n /**\r\n * 标准单手柄初始化\r\n */\r\n var nstSliderInit = function () {\r\n if (option.twoHand) {\r\n $slider.nstSlider({\r\n \"crossable_handles\": false,\r\n \"left_grip_selector\": \".leftGrip\",\r\n \"right_grip_selector\": \".rightGrip\",\r\n \"value_bar_selector\": \".bar\",\r\n \"value_changed_callback\": function (cause, leftValue, rightValue) {\r\n $current.text((leftValue == option.nolimit ? \"…\" : leftValue) + \" - \" + (rightValue == option.nolimit ? \"...\" : rightValue));\r\n }\r\n });\r\n } else {\r\n $slider.nstSlider({\r\n \"left_grip_selector\": \".leftGrip\",\r\n \"value_changed_callback\": function (cause, leftValue, rightValue) {\r\n $current.text(leftValue == option.nolimit ? \"…\" : leftValue);\r\n }\r\n });\r\n }\r\n resetCurPos();\r\n },\r\n /**\r\n * 重设当前标签的位置\r\n */\r\n resetCurPos = function () {\r\n var cw = $current.outerWidth();\r\n $current.css(\"margin-left\", (150 - cw / 2) + \"px\");\r\n };\r\n }\r\n\r\n /**\r\n * 创建一个标尺\r\n * @param para 标尺创建参数\r\n * @param para.id 父级ID\r\n * @param para.min 最小值,默认1\r\n * @param para.max 最大值,默认15\r\n * @param para.cur 当前值(或当前最小值,默认3)\r\n * @param para.curMax 当前最大值\r\n * @param para.twoHand 是否含有两个控制柄\r\n * @param para.padding 生成的div的padding值\r\n */\r\n Slider.create = function (para) {\r\n var cur = new Slider();\r\n if (!para) return cur;\r\n return cur.init(para);\r\n };\r\n\r\n return Slider;\r\n })();\r\n\r\n return junboCore;\r\n})(jQuery, JunboCore);","/**\r\n * 表单验证类\r\n * Created by tangfan on 2016/6/1.\r\n * data-required 必须\r\n * data-required-if-ele/value 如果该元素的值满足,例如选中一项内容时,才是必填\r\n * data-min 最小长度\r\n * data-max 最大长度\r\n * data-style 数据类型 email,phone,url,number,digits\r\n * data-value-min 最小值\r\n * data-value-max 最大值\r\n * data-name 返回绑定的字段\r\n * data-align 显示提示的位置 默认为右\r\n */\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n\r\n function Validator() {\r\n var _this = this,\r\n /**\r\n * 执行验证\r\n * @param para.validator 验证器\r\n * @param para.val 值\r\n * @param para.min 长度最小值\r\n * @param para.max 长度最大值\r\n * @param para.val_min 最小值 只有在 number,digits时才有效\r\n * @param para.val_max 最大值\r\n * @param para.reg 正则验证\r\n * @param para.name 绑定字段名称\r\n * @param para.option 参数\r\n * @returns {boolean|number} true或0 验证成功 其它数值为错误代码\r\n */\r\n validator = function (para) {\r\n var validator = para.validator,\r\n val = para.val,\r\n min = para.min,\r\n max = para.max,\r\n val_min = para.val_min,\r\n val_max = para.val_max,\r\n reg = para.reg,\r\n name = para.name,\r\n option = para.option;\r\n if (val) {\r\n if (min) {\r\n min = junboCore.getType(min) === \"number\" ? min : parseInt(min, 10);\r\n if (val.length < min) {\r\n return 1;\r\n }\r\n }\r\n if (max) {\r\n max = junboCore.getType(max) === \"number\" ? min : parseInt(max, 10);\r\n if (val.length > max) {\r\n return 2;\r\n }\r\n }\r\n }\r\n // 有正则时,先验证正则\r\n if (reg) {\r\n if (!reg.test(val)) {\r\n return false;\r\n }\r\n }\r\n if (junboCore.isFunction(validator)) {\r\n var vali = validator(val, val_min, val_max, option);\r\n if (vali === 0 && name) {\r\n para[\"result\"] = para.result || {};\r\n para.result[name] = val;\r\n }\r\n return vali;\r\n } else {\r\n para[\"result\"] = para.result || {};\r\n para.result[name] = val;\r\n }\r\n return true;//没有找到该项验证时,直接通过\r\n },\r\n msg = function (id, msg, align) {\r\n return junboCore.window.scrollTo(\".right\", id, function (callback) {\r\n junboCore.tool.check.showTips(msg || _this.DEFAULT_MSG, id, align);\r\n }, {y: 100});\r\n },\r\n /**\r\n * 根据元素的类型,获取元素实际的value值\r\n * @param if_ele\r\n * @returns {*}\r\n */\r\n getEleVal = function (if_ele) {\r\n var $t = $(\"#\" + if_ele);\r\n if ($t.length === 0) return null;\r\n var type = $t.is(\"input\") ? $t.attr(\"type\") : $t.is(\"select\") ? \"select\" : \"other\";\r\n switch (type) {\r\n case \"checkbox\":\r\n case \"radio\":\r\n return $t.prop(\"checked\") ? 1 : 0;\r\n case \"select\":\r\n return $t.val();\r\n default:\r\n return $t.val();\r\n }\r\n },\r\n getAttr = function ($t) {\r\n var res = {\r\n style: $t.attr(\"data-style\"),\r\n val: $t.val(),\r\n name: $t.attr(\"data-name\"),\r\n if_ele: $t.attr(\"data-required-if\"),\r\n if_value: $t.attr(\"data-required-if-value\"),\r\n min: $t.attr('data-min'),\r\n max: $t.attr(\"data-max\"),\r\n val_min: $t.attr(\"data-value-min\"),\r\n val_max: $t.attr(\"data-value-max\"),\r\n reg: $t.attr(\"data-reg\"),\r\n align: $t.attr(\"data-align\"),\r\n required: $t.attr(\"data-required\") !== undefined,//是否为必填项\r\n fail_msg: $t.attr(\"data-err-msg\")\r\n };\r\n res.fail_align = res.align || \"right\";\r\n res.vali_func = _this[\"validator_\" + res.style];\r\n if (res.reg) {\r\n res[\"reg\"] = new RegExp(res.reg);\r\n }\r\n return res;\r\n },\r\n trigger = function (code, msg) {\r\n\r\n },\r\n getMsg = function (code, para) {\r\n var msg = $.extend({\r\n 1: \"输入长度过小\",\r\n 2: \"输入长度过大\",\r\n 10: \"请输入正确的邮箱地址\",\r\n 20: \"请输入正确的手机号码\",\r\n 21: 20,\r\n 30: \"请输入正确的链接地址\",\r\n 40: \"请输入数字\",\r\n 41: \"输入的数值过小\",\r\n 42: \"输入的数值过大\",\r\n 50: 40,\r\n 51: 41,\r\n 52: 42,\r\n 60: \"输入内容必须由纯中文组成\",\r\n 70: \"输入内容必须由纯英文组成\",\r\n 80: \"输入内容必须由纯中文、英文及数字组成\"\r\n }, _this.MSG || {});\r\n var info = msg[code];\r\n if (junboCore.getType(info) === \"number\") {\r\n info = msg[info];\r\n if (info === undefined) {\r\n info = _this.DEFAULT_MSG;\r\n }\r\n }\r\n\r\n function replace(text, name, re) {\r\n if (text.indexOf(\"{{\" + name + \"}}\") > -1) {\r\n text = info.replace(\"{{\" + name + \"}}\", re);\r\n }\r\n return text;\r\n }\r\n\r\n info = replace(info, \"min\", para.val_min);\r\n info = replace(info, \"max\", para.val_max);\r\n info = replace(info, \"minLength\", para.min || \"\");\r\n info = replace(info, \"maxLength\", para.max || \"\");\r\n info = replace(info, \"val\", para.val || \"\");\r\n return info;\r\n }\r\n ;\r\n\r\n _this.fill = function ($ele, entity) {\r\n $ele.find(\"[data-name]\").each(function () {\r\n var $t = $(this),\r\n name = $t.attr(\"data-name\"),\r\n val = entity[name];\r\n if (val) {\r\n if ($t.is(\"input\")) {\r\n var type = $t.attr('type');\r\n if (type === \"checkbox\" || type === \"radio\") {\r\n $t.prop(\"checked\", val);\r\n } else {\r\n $t.val(val);\r\n }\r\n } else if ($t.is(\"select\")) {\r\n if ($t['dropkick']) {\r\n $t.dropkick(\"setValue\", val);\r\n } else {\r\n $t.val(val);\r\n }\r\n } else {\r\n $t.text(val);\r\n }\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * 开始验证\r\n * @param {String} selector jq查询字符串\r\n * @param {Object} option 参数\r\n * @param {Object} option.msg 消息参数: auto(根据不同的失败原因自动展示) inner(内部定义、默认值)\r\n */\r\n _this.validator = function (selector, option) {\r\n var $require = (selector instanceof $ ? selector : $(selector)).find(\"[data-required],[data-style],[data-name],[data-required-if]\"),\r\n res = {},\r\n validator_fail = false,\r\n fail_ele = null,\r\n fail_msg = null,\r\n fail_align = \"right\";\r\n if ($require.length === 0) return null;\r\n var o = $.extend({\r\n msg: \"inner\"\r\n }, option || {});\r\n $require.each(function (i, k) {\r\n var $t = $(k), para = getAttr($t), checkPara = {\r\n validator: para.vali_func,\r\n val: para.val,\r\n min: para.min,\r\n max: para.max,\r\n val_min: para.val_min,\r\n val_max: para.val_max,\r\n reg: para.reg,\r\n target: $require,\r\n name: para.name,\r\n result: res,\r\n option: o\r\n },\r\n detail = function (res) {\r\n var type = junboCore.getType(res);\r\n if (type === \"boolean\") {\r\n if (!res) {\r\n fail_ele = $t;\r\n validator_fail = true;\r\n }\r\n return res;\r\n }\r\n if (type === \"number\") {\r\n if (res === 0) {\r\n fail_ele = null;\r\n validator_fail = false;\r\n return true;\r\n } else {\r\n fail_ele = $t;\r\n validator_fail = true;\r\n if (o.msg === \"auto\") {\r\n fail_msg = getMsg(res, para);\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n // 有if必填项时判断其值是否合理\r\n fail_msg = para.fail_msg;\r\n fail_align = para.fail_align;\r\n if (para.if_value !== undefined) {\r\n if (getEleVal(para.if_ele) == para.if_value) {\r\n return detail(validator(checkPara));\r\n //if (!validator(checkPara)) {\r\n // fail_ele = $t;\r\n // validator_fail = true;\r\n // return false;\r\n //}\r\n //return;\r\n }\r\n }\r\n // 非必填项时,如果没有值,则不用进入验证\r\n if (!para.required && !para.val) {\r\n return true;\r\n }\r\n // 必填项时,如果没有填入值,则不需要进入下一步验证\r\n if (para.required && !para.val) {\r\n fail_ele = $t;\r\n validator_fail = true;\r\n return false;\r\n }\r\n return detail(validator(checkPara));\r\n //if (!validator(checkPara)) {\r\n // fail_ele = $t;\r\n // validator_fail = true;\r\n // return false;\r\n //}\r\n });\r\n if (validator_fail) {\r\n msg(fail_ele, fail_msg, fail_align);\r\n return false;\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * 验证邮件\r\n * 失败code:1\r\n * 10-不是邮箱地址\r\n * @param str\r\n * @returns {object}\r\n */\r\n _this.validator_email = function (str) {\r\n var r = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\\.)+[A-Za-z0-9]{2,3}$/.test(str);\r\n return r ? 0 : 10\r\n };\r\n\r\n /**\r\n * 验证手机号码\r\n * 失败code:2\r\n * 20-不是手机号码\r\n * 21-手机号码长度不对\r\n * @param strPhone\r\n * @returns {object}\r\n */\r\n _this.validator_phone = function (strPhone) {\r\n var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/,\r\n phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/,\r\n r = false;\r\n //var prompt = \"您输入的电话号码不正确!\"\r\n if (strPhone.length > 9) {\r\n r = !!phoneRegWithArea.test(strPhone);\r\n } else {\r\n r = !!phoneRegNoArea.test(strPhone);\r\n }\r\n return r ? 0 : 20;\r\n };\r\n\r\n /**\r\n * 验证链接\r\n * 失败code:3\r\n * 30-不是链接\r\n * @param str\r\n * @returns {number}\r\n */\r\n _this.validator_url = function (str) {\r\n var r = /(http[s]?|ftp):\\/\\/[^\\/\\.]+?\\..+$/i.test(str);\r\n return r ? 0 : 30\r\n };\r\n\r\n /**\r\n * 验证数字\r\n * 满足整型、浮点型的正数\r\n * 失败code:4开头\r\n * 40-不是数字\r\n * 41-数字小于最小值\r\n * 42-数字大于最大值\r\n * @param str\r\n * @param val_min 最小值\r\n * @param val_max 最大值\r\n */\r\n _this.validator_number = function (str, val_min, val_max) {\r\n var isnumber = /^(\\d+)(\\.\\d+)?$/.test(str);\r\n if (isnumber) {\r\n var val = parseFloat(str);\r\n if (val_min) {\r\n if (val < parseFloat(val_min)) {\r\n return 41;\r\n }\r\n }\r\n if (val_max) {\r\n if (val > parseFloat(val_max)) {\r\n return 42;\r\n }\r\n }\r\n }\r\n return isnumber ? 0 : 40;\r\n };\r\n\r\n /**\r\n * 验证数字\r\n * 是否为0到9的数字\r\n * 失败code:5开头\r\n * 50-不是数字\r\n * 51-数字小于最小值\r\n * 52-数字大于最大值\r\n */\r\n _this.validator_digits = function (str, val_min, val_max) {\r\n var isnumber = /^[0-9]+$/.test(str);\r\n if (isnumber) {\r\n var val = parseInt(str, 10);\r\n if (val_min) {\r\n if (val < parseInt(val_min, 10)) {\r\n return 51;\r\n }\r\n }\r\n if (val_max) {\r\n if (val > parseInt(val_max, 10)) {\r\n return 52;\r\n }\r\n }\r\n }\r\n return isnumber ? 0 : 50;\r\n };\r\n\r\n /**\r\n * 验证是否是纯中文\r\n * @param str\r\n * 失败code:6开头\r\n * 60-不是中文\r\n */\r\n _this.validator_chinese = function (str) {\r\n return /^[\\u4e00-\\u9fa5]+$/.test(str) ? 0 : 60;\r\n };\r\n\r\n /**\r\n * 验证是否是纯英文\r\n * @param str\r\n * 失败code:7开头\r\n * 70-不是纯英文\r\n */\r\n _this.validator_english = function (str) {\r\n return /^[a-zA-Z]+$/.test(str) ? 0 : 70;\r\n };\r\n\r\n\r\n /**\r\n * 验证是否是纯中文、英文及数字组成\r\n * @param str\r\n * 失败code:8开头\r\n * 80-不是以纯英文、数字及中文\r\n */\r\n _this.validator_chinese_english_num = function (str) {\r\n return /^[a-zA-Z\\u4e00-\\u9fa5\\d]+$/.test(str) ? 0 : 80;\r\n }\r\n }\r\n\r\n junboCore.validator = new Validator();\r\n\r\n /**\r\n * 宏定义\r\n * {{min}} 最小值\r\n * {{max}} 最大值\r\n * {{minLength}} 最小长度值\r\n * {{maxLength}} 最大长度值\r\n * {{val}} 输入的值\r\n * @type {object}\r\n */\r\n junboCore.validator.MSG = {};\r\n\r\n junboCore.validator.DEFAULT_MSG = \"必填项信息有误,请检查\";\r\n\r\n /**\r\n * jq插件\r\n */\r\n $.fn.validator = function () {\r\n if (arguments.length > 0) {\r\n var o = $.extend({}, arguments[0]);\r\n }\r\n return junboCore.validator.validator.call(this, $(this), o);\r\n };\r\n\r\n /**\r\n * 实体填充\r\n * @param entity\r\n */\r\n $.fn.jbFill = function (entity) {\r\n return junboCore.validator.fill($(this), entity);\r\n };\r\n\r\n return junboCore;\r\n\r\n}(jQuery || Zepto, JunboCore || {}));","/**\r\n * 自动展示下拉框搜索\r\n * 支持回车、上、下等操作\r\n * Created by tangfan on 2016/5/23.\r\n */\r\nvar JunboCore = (function ($, junboCore) {\r\n\r\n function AutoSearch(para) {\r\n var _this = this;\r\n\r\n _this.config = {\r\n url: \"\", // 服务调用地址\r\n id: \"\", //服务调用 id\r\n searchName: \"Name\",// 需要搜索的属性名称\r\n delay: 150,//延迟搜索时间\r\n business: null,// 直接返回搜索属性对象,传递当前输入的文本参数\r\n targetCls: '.inputElem', // 输入框目标元素\r\n parentCls: '.parentCls', // 父级类\r\n hiddenCls: '.hidden', // 隐藏域input\r\n searchForm: '.jqtransformdone', //form表单\r\n hoverBg: 'hoverBg', // 鼠标移上去的背景\r\n outBg: 'outBg', // 鼠标移下拉的背景\r\n isSelectHide: true, // 点击下拉框 是否隐藏\r\n height: 0, // 默认为0 不设置的话 那么高度自适应\r\n maxCount: 10,//最大显示数量\r\n manySelect: false, // 输入框是否多选 默认false 单选\r\n renderHTMLCallback: null, // keyup时 渲染数据后的回调函数\r\n callback: null, // 点击某一项 提供回调\r\n closedCallback: null, // 点击输入框某一项x按钮时 回调函数\r\n propertyName: \"Name\",// 绑定的属性字段\r\n propertyId: \"Id\",// 绑定的ID字段\r\n propertyBusiness: \"Records\"\r\n };\r\n\r\n _this.cache = {\r\n currentIndex: -1,\r\n oldIndex: -1,\r\n inputArrs: [] // 多选时候 输入框值放到数组里面去\r\n };\r\n\r\n _this.init(para);\r\n }\r\n\r\n AutoSearch.prototype = {\r\n constructor: AutoSearch,\r\n init: function (options) {\r\n var self = this;\r\n self.config = $.extend(self.config, options || {});\r\n var _config = self.config,\r\n _cache = self.cache;\r\n\r\n // 输入框点击\r\n var $input = $(_config.targetCls);\r\n $input.attr(\"autocomplete\", \"off\");\r\n $input.each(function (index, item) {\r\n /*\r\n * 禁止 ctrl+v 和 黏贴事件\r\n */\r\n $(item).unbind('paste');\r\n $(item).bind('paste', function (e) {\r\n e.preventDefault();\r\n var target = e.target,\r\n targetParent = $(target).closest(_config.parentCls);\r\n $(this).val('');\r\n $(_config.hiddenCls, targetParent) && $(_config.hiddenCls, targetParent).val('');\r\n });\r\n\r\n $(item).keyup(function (e) {\r\n e.stopPropagation();\r\n _cache.inputArrs = [];\r\n var $t = $(this);\r\n var targetVal = $.trim($t.val()),\r\n keyCode = e.keyCode,\r\n pos = $t.position(),\r\n elemHeight = $t.outerHeight(),\r\n elemWidth = $t.outerWidth(),\r\n top = self._inputTop($input),\r\n left = pos.left + parseInt($t.css(\"margin-left\"), 10)\r\n ;\r\n // 如果输入框值为空的话 那么隐藏域的value清空掉\r\n if (targetVal == '') {\r\n var curParents = $t.closest(_config.parentCls);\r\n $(_config.hiddenCls, curParents).val('');\r\n }\r\n var targetParent = $t.parent();\r\n $(targetParent).css({'position': 'relative'});\r\n\r\n if ($('.auto-tips', targetParent).length == 0) {\r\n // 初始化时候 动态创建下拉框容器\r\n $(targetParent).append($('
      '));\r\n $('.auto-tips', targetParent).css({\r\n 'position': 'absolute',\r\n 'top': top,\r\n 'left': left,\r\n 'width': elemWidth,\r\n 'border': '1px solid #e1e1e1',\r\n '-webkit-border-radius': '4px;',\r\n '-moz-border-radius': '4px;',\r\n 'border-radius': '4px;',\r\n '-webkit-box-shadow': '0 0 5px #e1e1e1;',\r\n '-moz-box-shadow': '0 0 5px #e1e1e1;',\r\n 'box-shadow': '0 0 5px #e1e1e1;',\r\n 'z-index': 999\r\n });\r\n }\r\n\r\n\r\n var curIndex = self._keyCode(keyCode);\r\n if (curIndex > -1) {\r\n self._keyUpAndDown(targetVal, e, targetParent);\r\n } else {\r\n if (targetVal != '') {\r\n self._doPostAction(targetVal, targetParent);\r\n }\r\n }\r\n });\r\n\r\n // 失去焦点时 如果没有点击 或者上下移时候 直接输入 那么当前输入框值情况 隐藏域值情况\r\n $(item).blur(function (e) {\r\n var target = e.target,\r\n targetParent = $(target).closest(_config.parentCls);\r\n if ($(this).attr('up') || $(this).attr('down')) {\r\n return;\r\n } else {\r\n $(this).val('');\r\n $(_config.hiddenCls, targetParent).val('');\r\n }\r\n });\r\n });\r\n\r\n // 点击文档\r\n $(document).click(function (e) {\r\n //e.stopPropagation();\r\n var target = e.target,\r\n tagParent = $(target).parent(),\r\n attr = $(target, tagParent).closest('.auto-tips');\r\n var tagCls = _config.targetCls.replace(/^\\./, '');\r\n if (attr.length > 0 || $(target, tagParent).hasClass(tagCls)) {\r\n return;\r\n } else {\r\n $('.auto-tips').each(function (index, item) {\r\n !$(item, tagParent).hasClass('hidden') && $(item, tagParent).addClass('hidden');\r\n });\r\n }\r\n });\r\n var left = $input.position().left + parseInt($input.css(\"magin-left\"), 10);\r\n var stylesheet = '.auto-tips {position:absolute; top:' + self._inputTop($input) + 'px; left:' + left + 'px;width:' + $input.outerWidth() + 'px;border:1px solid #e1e1e1;border-radius:4px;box-shadow:0 0 5px #e1e1e1;-moz-box-shadow: 0 0 5px #e1e1e1; list-style: none;height:auto !important;padding: 0px;z-index:999;background:#fff !important;color:#808080;font-size:14px;}' +\r\n '.auto-tips .item {-ms-text-overflow: ellipsis;text-overflow: ellipsis;overflow: hidden;padding: 10px;border-bottom: 1px solid #e1e1e1;color: #;text-decoration: none;white-space: nowrap;cursor: pointer;zoom: 1;}' +\r\n '.auto-tips p.not-found {text-align:center;color:#808080;padding:10px 0;font-size:14px;}' +\r\n '.auto-tips span.selected { border-radius:2px;background:#2EAF3E;color:#fff;}' +\r\n //'.auto-tips p img{ vertical-align:middle;float:left;}' +\r\n '.create-input{line-height:26px,padding-left:3px;}' +\r\n '.create-input span{margin-top:1px;height:24px;float:left;}' +\r\n '.create-input span i,.auto-tips span a{font-style:normal;float:left;cursor:default;}' +\r\n '.create-input span a{padding:0 8px 0 3px;cursor:pointer;}' +\r\n '.auto-tips .item.hoverBg {background-color: #B4E8F5;color: #565656;cursor: pointer;}' +\r\n '.auto-tips .item:hover {background-color: #B4E8F5;color: #565656;cursor: pointer;}' +\r\n '.hidden {display:none;}';\r\n\r\n self._addStyleSheet(stylesheet);\r\n },\r\n _inputTop: function ($input) {\r\n var top = $input.outerHeight() + $input.position().top;\r\n return top + 5;\r\n },\r\n /**\r\n * 键盘上下键操作\r\n */\r\n _keyUpAndDown: function (targetVal, e, targetParent) {\r\n var self = this,\r\n _cache = self.cache,\r\n _config = self.config;\r\n // 如果请求成功后 返回了数据(根据元素的长度来判断) 执行以下操作\r\n if ($('.auto-tips .item', targetParent) && $('.auto-tips .item', targetParent).length > 0) {\r\n var plen = $('.auto-tips .item', targetParent).length,\r\n keyCode = e.keyCode;\r\n _cache.oldIndex = _cache.currentIndex;\r\n // 上移操作\r\n if (keyCode == 38) {\r\n if (_cache.currentIndex == -1) {\r\n _cache.currentIndex = plen - 1;\r\n } else {\r\n _cache.currentIndex = _cache.currentIndex - 1;\r\n if (_cache.currentIndex < 0) {\r\n _cache.currentIndex = plen - 1;\r\n }\r\n }\r\n if (_cache.currentIndex !== -1) {\r\n\r\n !$('.auto-tips .p-index' + _cache.currentIndex, targetParent).hasClass(_config.hoverBg) &&\r\n $('.auto-tips .p-index' + _cache.currentIndex, targetParent).addClass(_config.hoverBg).siblings().removeClass(_config.hoverBg);\r\n var curAttr = $('.auto-tips .p-index' + _cache.currentIndex, targetParent).attr('data-html'),\r\n embId = $('.auto-tips .p-index' + _cache.currentIndex, targetParent).attr('embId');\r\n\r\n // 判断是否是多选操作 多选操作 暂留接口\r\n if (_config.manySelect) {\r\n _cache.inputArrs.push(curAttr);\r\n _cache.inputArrs = self._unique(_cache.inputArrs);\r\n self._manySelect(targetParent);\r\n } else {\r\n $(_config.targetCls, targetParent).val(curAttr);\r\n // 上移操作增加一个属性 当失去焦点时候 判断有没有这个属性\r\n if (!$(_config.targetCls, targetParent).attr('up')) {\r\n $(_config.targetCls, targetParent).attr('up', 'true');\r\n }\r\n\r\n var pCls = $(_config.targetCls, targetParent).closest(_config.parentCls);\r\n $(_config.hiddenCls, pCls).val(embId);\r\n self._createDiv(targetParent, curAttr);\r\n self._closed(targetParent);\r\n // hover\r\n self._hover(targetParent);\r\n }\r\n\r\n }\r\n } else if (keyCode == 40) { //下移操作\r\n if (_cache.currentIndex == plen - 1) {\r\n _cache.currentIndex = 0;\r\n } else {\r\n _cache.currentIndex++;\r\n if (_cache.currentIndex > plen - 1) {\r\n _cache.currentIndex = 0;\r\n }\r\n }\r\n if (_cache.currentIndex !== -1) {\r\n !$('.auto-tips .p-index' + _cache.currentIndex, targetParent).hasClass(_config.hoverBg) &&\r\n $('.auto-tips .p-index' + _cache.currentIndex, targetParent).addClass(_config.hoverBg).siblings().removeClass(_config.hoverBg);\r\n var curAttr = $('.auto-tips .p-index' + _cache.currentIndex, targetParent).attr('data-html'),\r\n embId = $('.auto-tips .p-index' + _cache.currentIndex, targetParent).attr('embId');\r\n\r\n\r\n // 判断是否是多选操作 多选操作 暂留接口\r\n if (_config.manySelect) {\r\n _cache.inputArrs.push(curAttr);\r\n _cache.inputArrs = self._unique(_cache.inputArrs);\r\n self._manySelect(targetParent);\r\n } else {\r\n $(_config.targetCls, targetParent).val(curAttr);\r\n\r\n // 下移操作增加一个属性 当失去焦点时候 判断有没有这个属性\r\n if (!$(_config.targetCls, targetParent).attr('down')) {\r\n $(_config.targetCls, targetParent).attr('down', 'true');\r\n }\r\n var pCls = $(_config.targetCls, targetParent).closest(_config.parentCls);\r\n $(_config.hiddenCls, pCls).val(embId);\r\n self._createDiv(targetParent, curAttr);\r\n self._closed(targetParent);\r\n // hover\r\n self._hover(targetParent);\r\n }\r\n\r\n }\r\n } else if (keyCode == 13) { //回车操作\r\n var curVal = $('.auto-tips .p-index' + _cache.oldIndex, targetParent).attr('data-html');\r\n $(_config.targetCls, targetParent).val(curVal);\r\n if (_config.isSelectHide) {\r\n !$(\".auto-tips\", targetParent).hasClass('hidden') && $(\".auto-tips\", targetParent).addClass('hidden');\r\n }\r\n\r\n _cache.currentIndex = -1;\r\n _cache.oldIndex = -1;\r\n\r\n }\r\n }\r\n },\r\n // 键码判断\r\n _keyCode: function (code) {\r\n var arrs = ['17', '18', '38', '40', '37', '39', '33', '34', '35', '46', '36', '13', '45', '44', '145', '19', '20', '9'];\r\n for (var i = 0, ilen = arrs.length; i < ilen; i++) {\r\n if (code == arrs[i]) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n },\r\n _doPostAction: function (targetVal, targetParent) {\r\n var self = this,\r\n _config = self.config,\r\n def = $.Deferred();\r\n // 假如返回的数据如下:\r\n //if (junboCore.debug()) {\r\n // var results = [{Name: \"abc\"}, {Name: \"123\"}, {Name: \"cde\"}, {Name: \"tangfan\"}, {Name: \"tangfan1\"}, {Name: \"tangfan2\"}, {Name: \"tangfan3\"}, {Name: \"唐帆\"}];\r\n // var res = _(results).find(_(\"o=>o.Name.indexOf('\" + targetVal + \"')>-1\")).items;\r\n // self._renderHTML(res, targetParent, targetVal);\r\n // self._executeClick(res, targetParent, targetVal);\r\n // return;\r\n //}\r\n if (self.lastPost) {\r\n clearTimeout(self.lastPost);\r\n }\r\n self.lastPost = setTimeout(function () {\r\n ajax().done(function (cb) {\r\n def.resolve(cb);\r\n });\r\n }, _config.delay || 150);\r\n\r\n function ajax() {\r\n var p = {PageRow: _config.maxCount, StartRow: 1};\r\n if (junboCore.isFunction(_config.business)) {\r\n p = $.extend(p, _config.business(targetVal))\r\n } else {\r\n p[_config.searchName] = targetVal;\r\n }\r\n return junboCore.ajax(_config.url, p, null, _config.id).done(function (cb) {\r\n var proper = _config.propertyBusiness;\r\n if (cb.Code === 100 && cb.Result) {\r\n var ress = [];\r\n if (proper) {\r\n ress = cb.Result[proper] || [];\r\n } else {\r\n ress = cb.Result;\r\n }\r\n if (junboCore.getType(ress) === \"array\" && ress.length > 0) {\r\n self._renderHTML(ress, targetParent, targetVal);\r\n self._executeClick(ress, targetParent, targetVal);\r\n }\r\n return;\r\n }\r\n !$('.auto-tips', targetParent).hasClass('hidden') && $('.auto-tips', targetParent).addClass(\"hidden\");\r\n $('.auto-tips', targetParent).html('');\r\n });\r\n }\r\n },\r\n /**\r\n * 渲染页面\r\n * @param ret 需要展示的列表字段\r\n * @param targetParent 输入框的父元素\r\n * @param targetVal 输入框内的值\r\n * @private\r\n */\r\n _renderHTML: function (ret, targetParent, targetVal) {\r\n var self = this,\r\n _config = self.config,\r\n _cache = self.cache,\r\n html = '',\r\n tmpl = \"{{?it.data.length > 0}}\\n{{~it.data:item:index}}\\n
      \\n {{=item[\\'render\\']}}\\n
      \\n{{~}}\\n{{??}}\\n

      没有找到项目

      \\n{{?}}\";\r\n\r\n //doT ajax\r\n var renderRet = (ret || []).concat();\r\n var propertyName = _config.propertyName;\r\n $.each(renderRet, function (i, k) {\r\n var name = junboCore.getType(k) === \"object\" ? k[propertyName] : k;\r\n if (name) {\r\n var reg = new RegExp(\"(\" + targetVal + \")\", \"i\");\r\n k['render'] = name.replace(reg, \"$1\");\r\n } else {\r\n k['render'] = name;\r\n }\r\n });\r\n html = junboCore.tmplHtml(tmpl, {data: ret, bindName: propertyName, bindId: _config.propertyId});\r\n //for (var i = 0, ilen = ret.length; i < ilen; i += 1) {\r\n // html += '
      ' +\r\n // //'\"\"' +\r\n // '' + ret[i].lastName + '(' + ret[i].emplId + ')' +\r\n // '
      ';\r\n //}\r\n // 渲染值到下拉框里面去\r\n $('.auto-tips', targetParent).html(html);\r\n $('.auto-tips', targetParent).hasClass('hidden') && $('.auto-tips', targetParent).removeClass('hidden');\r\n $('.auto-tips .item:last', targetParent).css({\"border-bottom\": 'none'});\r\n _config.renderHTMLCallback && $.isFunction(_config.renderHTMLCallback) && _config.renderHTMLCallback();\r\n // 出现滚动条 计算p的长度 * 一项p的高度 是否大于 设置的高度 如是的话 出现滚动条 反之\r\n var plen = $('.auto-tips .item', targetParent).length,\r\n pheight = $('.auto-tips .item', targetParent).height();\r\n if (_config.height > 0) {\r\n if (plen * pheight > _config.height) {\r\n $('.auto-tips', targetParent).css({'height': _config.height, 'overflow': 'auto'});\r\n } else {\r\n $('.auto-tips', targetParent).css({'height': 'auto', 'overflow': 'auto'});\r\n }\r\n }\r\n },\r\n /**\r\n * 当数据相同的时 点击对应的项时 返回数据\r\n */\r\n _executeClick: function (ret, targetParent) {\r\n var self = this,\r\n _config = self.config,\r\n _cache = self.cache;\r\n $('.auto-tips .item', targetParent).unbind('click');\r\n $('.auto-tips .item', targetParent).bind('click', function (e) {\r\n var dataAttr = $(this).attr('data-html'),\r\n embId = $(this).attr('embId');\r\n\r\n // 判断是否多选\r\n if (_config.manySelect) {\r\n _cache.inputArrs.push(dataAttr);\r\n _cache.inputArrs = self._unique(_cache.inputArrs);\r\n self._manySelect(targetParent);\r\n } else {\r\n $(_config.targetCls, targetParent).val(dataAttr);\r\n var parentCls = $(_config.targetCls, targetParent).closest(_config.parentCls),\r\n hiddenCls = $(_config.hiddenCls, parentCls);\r\n $(hiddenCls).val(embId);\r\n self._createDiv(targetParent, dataAttr);\r\n // hover\r\n self._hover(targetParent);\r\n //!$(_config.targetCls, targetParent).hasClass('hidden') && $(_config.targetCls, targetParent).addClass('hidden');\r\n }\r\n self._closed(targetParent);\r\n if (_config.isSelectHide) {\r\n !$('.auto-tips', targetParent).hasClass('hidden') && $('.auto-tips', targetParent).addClass('hidden');\r\n }\r\n _config.callback && $.isFunction(_config.callback) && _config.callback(dataAttr, embId);\r\n });\r\n // 鼠标移上效果\r\n $('.auto-tips .item', targetParent).hover(function (e) {\r\n !$(this, targetParent).hasClass(_config.hoverBg) &&\r\n $(this, targetParent).addClass(_config.hoverBg).siblings().removeClass(_config.hoverBg);\r\n });\r\n },\r\n _hover: function (targetParent) {\r\n $('.create-input span', targetParent).hover(function () {\r\n $(this).css({\"background\": '#ccc', 'padding-left': '0px'});\r\n }, function () {\r\n $(this).css({\"background\": ''});\r\n });\r\n },\r\n // 动态的创建div标签 遮住input输入框\r\n _createDiv: function (targetParent, dataAttr) {\r\n //var self = this,\r\n // _config = self.config;\r\n //var iscreate = $('.create-input', targetParent);\r\n //\r\n //// 确保只创建一次div\r\n //if (iscreate.length > 0) {\r\n // $('.create-input', targetParent).remove();\r\n //}\r\n //$(targetParent).prepend($('
      '));\r\n //$('.create-input span i', targetParent).html(dataAttr);\r\n //$(_config.targetCls, targetParent).val(dataAttr);\r\n //$('.create-input span', targetParent).append('X');\r\n //$('.alink', targetParent).css({'float': 'left', 'background': 'none'});\r\n },\r\n // X 关闭事件\r\n _closed: function (targetParent) {\r\n var self = this,\r\n _config = self.config;\r\n ///*\r\n // * 点击X 关闭按钮\r\n // * 判断当前输入框有没有up和down属性 有的话 删除掉 否则 什么都不做\r\n // */\r\n //$('.alink', targetParent).click(function () {\r\n // $('.create-input', targetParent) && $('.create-input', targetParent).remove();\r\n // $(_config.targetCls, targetParent) && $(_config.targetCls, targetParent).hasClass('hidden') &&\r\n // $(_config.targetCls, targetParent).removeClass('hidden');\r\n // $(_config.targetCls, targetParent).val('');\r\n // //清空隐藏域的值\r\n // var curParent = $(_config.targetCls, targetParent).closest(_config.parentCls);\r\n // $(_config.hiddenCls, curParent).val('');\r\n // var targetInput = $(_config.targetCls, targetParent);\r\n // if ($(targetInput).attr('up') || $(targetInput).attr('down')) {\r\n // $(targetInput).attr('up') && $(targetInput).removeAttr('up');\r\n // $(targetInput).attr('down') && $(targetInput).removeAttr('down');\r\n // }\r\n // _config.closedCallback && $.isFunction(_config.closedCallback) && _config.closedCallback();\r\n //});\r\n\r\n //$(_config.targetCls, targetParent).addClass(\"hidden\");\r\n },\r\n /*\r\n * 数组去重复\r\n */\r\n _unique: function (arrs) {\r\n var obj = {},\r\n newArrs = [];\r\n for (var i = 0, ilen = arrs.length; i < ilen; i++) {\r\n if (obj[arrs[i]] != 1) {\r\n newArrs.push(arrs[i]);\r\n obj[arrs[i]] = 1;\r\n }\r\n }\r\n return newArrs;\r\n },\r\n /*\r\n * 输入框多选操作\r\n */\r\n _manySelect: function (targetParent) {\r\n var self = this,\r\n _config = self.config,\r\n _cache = self.cache;\r\n if (_cache.inputArrs.length > 0) {\r\n $(_config.targetCls, targetParent).val(_cache.inputArrs.join(','));\r\n }\r\n },\r\n /*\r\n * 判断是否是string\r\n */\r\n _isString: function (str) {\r\n return Object.prototype.toString.apply(str) === '[object String]';\r\n },\r\n /*\r\n * JS 动态添加css样式\r\n */\r\n _addStyleSheet: function (refWin, cssText, id) {\r\n\r\n var self = this;\r\n if (self._isString(refWin)) {\r\n id = cssText;\r\n cssText = refWin;\r\n refWin = window;\r\n }\r\n refWin = $(refWin);\r\n var doc = document;\r\n var elem;\r\n if (id && (id = id.replace('#', ''))) {\r\n elem = $('#' + id, doc);\r\n }\r\n // 仅添加一次,不重复添加\r\n if (elem) {\r\n return;\r\n }\r\n //elem = $(''); 不能这样创建 IE8有bug\r\n elem = document.createElement(\"style\");\r\n // 先添加到 DOM 树中,再给 cssText 赋值,否则 css hack 会失效\r\n $('head', doc).append(elem);\r\n\r\n if (elem.styleSheet) { // IE\r\n elem.styleSheet.cssText = cssText;\r\n } else { // W3C\r\n elem.appendChild(doc.createTextNode(cssText));\r\n }\r\n },\r\n /*\r\n * 销毁操作 释放内存\r\n */\r\n destory: function () {\r\n var self = this,\r\n _config = self.config,\r\n _cache = self.cache;\r\n _cache.ret = [];\r\n _cache.currentIndex = 0;\r\n _cache.oldIndex = 0;\r\n _cache.inputArrs = [];\r\n _config.targetCls = null;\r\n }\r\n };\r\n\r\n junboCore.autoSearch = function (para) {\r\n return new AutoSearch(para);\r\n };\r\n\r\n // jQuery Plugin\r\n $.fn.autoSearch = function (para) {\r\n var $t = $(this);\r\n\r\n if ($t.data(\"autoSearch\")) {\r\n return $t.data(\"autoSearch\");\r\n } else {\r\n if (!para.targetCls) {\r\n para.targetCls = $t.selector;\r\n }\r\n var instance = new AutoSearch(para);\r\n $t.data(\"autoSearch\", instance);\r\n return instance;\r\n }\r\n };\r\n return junboCore;\r\n\r\n}(jQuery, JunboCore || {}));\r\n","/**\r\n * 地区选择控件\r\n * Created by tangfan on 2015/12/16.\r\n */\r\nvar JunboCore = (function ($, junboCore) {\r\n\r\n function AreaSelect(para) {\r\n var _this = this,\r\n $this = $(this),\r\n tmpl = \"
      \\n
      \\n
      \\n
      \\n
      \\n

      已选地区

      \\n
      \\n
      \\n
      \",\r\n tmpl_sel = \"
        \\n{{~it:item:index}}\\n {{?!item.hide}}\\n
      • \\n

        {{=item.text}}

        \\n
        \\n {{?item.children}}\\n {{=_(item.children).map(_(\\\"o=>o.text\\\")).items.join(\\'、\\')}}\\n {{?}}\\n
        \\n
      • \\n {{?}}\\n{{~}}\\n
      \",//已选择地区的模板\r\n o = null,\r\n loading = true,\r\n loaded = false,\r\n dataSource = [],//获取地址信息元数据\r\n areaData = [],//缓存省市信息\r\n areaSel = [],//已选择\r\n $panel = null,//容器DOM\r\n $sel = null,//已选择的DOM\r\n $tree = null,//树形DOM\r\n tree = null,//树形实例\r\n allloaded = false,//所有子级已加载\r\n wholeCount = 0,\r\n innerCallChecked = false,//是否是内部调用的选择全部\r\n /**\r\n * 初始化创建实例\r\n */\r\n init = function () {\r\n o = $.extend(true, {\r\n id: null,\r\n autoSort: false//是否自动排序\r\n }, para);\r\n if (!o.id) {\r\n junboCore.log(\"地区选择控件未定义Id\");\r\n return;\r\n }\r\n $panel = $(\"#\" + o.id);\r\n o.treeId = junboCore.guid(\"_tree_\");\r\n $panel.html(junboCore.tmplHtml(tmpl, o));\r\n $sel = $panel.find(\".area-sel\");\r\n $tree = $(\"#\" + o.treeId);\r\n // junboCore.createArea.initData(function (cb) {\r\n // treeInit(cb);\r\n // $.each(cb,function (i,k) {\r\n // if(cb[i].children && cb[i].children.length>0){\r\n // areaData.push({\r\n // id: k.id,\r\n // text: k.text,\r\n // children: true,\r\n // parent: \"#\"\r\n // });\r\n // $.each(cb[i].children,function (s,l) {\r\n // areaData.push({\r\n // id: l.id,\r\n // text: l.text,\r\n // parent: k.id\r\n // });\r\n // })\r\n // }else {\r\n // areaData.push({\r\n // id: k.id,\r\n // text: k.text,\r\n // parent: \"#\"\r\n // });\r\n // }\r\n // })\r\n // });\r\n if(o.useOrigin){\r\n treeInit(ajaxProtoType,o.func);\r\n }else{\r\n treeInit(ajax,o.func);\r\n }\r\n },\r\n /**\r\n * 树形初始化\r\n * @param {Function} ajaxData 获取数据的异步委托\r\n * @param {Function} func 每次树被改动后执行的操作,为空时则不执行\r\n */\r\n treeInit = function (ajaxData,func) {\r\n $tree.jstree({\r\n 'core': {\r\n 'check_callback': true,\r\n 'data': function (obj, cb) {\r\n var _t = this;\r\n if (junboCore.isFunction(ajaxData)) {\r\n ajaxData(obj).done(function (res) {\r\n cb.call(_t, res);\r\n });\r\n }\r\n },\r\n // 'data': ajaxData,\r\n 'multiple': true,\r\n 'themes': {\r\n icons: false\r\n }\r\n },\r\n 'plugins': [\"checkbox\"]\r\n }).on({\r\n 'changed.jstree': function (event, data) {\r\n //selected id\r\n //var sel = data.selected;//\r\n var node = data.node,\r\n setData = function (n) {\r\n if (n.state.selected) {\r\n addSel(n);\r\n } else {\r\n removeSel(n);\r\n }\r\n render_selected(areaSel);//渲染已选择的内容\r\n if (func && junboCore.isFunction(func)) {\r\n func(n);\r\n }\r\n },\r\n select_all = function () {\r\n var q = $.Deferred();\r\n setTimeout(function () {\r\n var child = tree.get_node(\"#\").children;\r\n if (areaSel.length != child.length) {\r\n if (child) {\r\n $.each(child, function (i, k) {\r\n var n_tmp = tree.get_node(k);\r\n var index = _(areaSel).findIndex(_(\"o=>o.id=='\" + n_tmp.id + \"'\"));\r\n if (index > -1) {\r\n // 找到该值时,则将该值选中\r\n areaSel[index].hide = false;\r\n areaSel[index].selected = 1;\r\n var innerChild = areaSel[index].children;\r\n if (innerChild) {\r\n $.each(innerChild, function (s1, s2) {\r\n s2.hide = false;\r\n })\r\n }\r\n } else {\r\n if (n_tmp.id !== \"####\") {\r\n addSel(n_tmp);\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n $.each(areaSel, function (i, k) {\r\n k.hide = false;\r\n k.selected = 1;\r\n if (k.children) {\r\n $.each(k.children, function (m, n) {\r\n n.hide = false;\r\n k.selected = 1;\r\n });\r\n }\r\n });\r\n }\r\n tree.select_all(['#']);\r\n render_selected(areaSel);//渲染已选择的内容\r\n q.resolve();\r\n }, 10);\r\n return q.promise();\r\n },\r\n remove_all = function () {\r\n $.each(areaSel, function (i, k) {\r\n k.hide = true;\r\n k.selected = 0;\r\n if (k.children) {\r\n $.each(k.children, function (m, n) {\r\n n.hide = true;\r\n k.selected = 0;\r\n });\r\n }\r\n });\r\n tree.deselect_all(node.parents);\r\n render_selected(areaSel);\r\n };\r\n if (node) {\r\n if (node.id === \"####\") {\r\n if (innerCallChecked) return;//内部调用选择、取消全部时,无需往下操作\r\n if (node.state.selected) {\r\n var dia = jc.tool.dialog();\r\n if (!allloaded) {\r\n allloaded = true;\r\n tree.load_all(node.parents, function (n) {\r\n select_all().done(function () {\r\n dia.close().remove();\r\n });\r\n });\r\n } else {\r\n select_all().done(function () {\r\n dia.close().remove();\r\n });\r\n }\r\n } else {\r\n remove_all();\r\n }\r\n return;\r\n }\r\n if (!node.state.loaded) {\r\n tree.load_node(node, function (n) {\r\n setData(n);\r\n });\r\n return;\r\n }\r\n setData(node);\r\n }\r\n },\r\n 'open_node.jstree': function (event, data) {\r\n\r\n }\r\n });\r\n tree = $tree.jstree(true);\r\n },\r\n addSel = function (node) {\r\n setTimeout(function () {\r\n var checked = tree.get_checked();\r\n innerCallChecked = true;\r\n if (checked.length + 1 === wholeCount) {\r\n tree.check_node(tree.get_node(\"####\"));\r\n }\r\n innerCallChecked = false;\r\n }, 100);\r\n var fi;\r\n if (node.parent === \"#\") {\r\n fi = _(areaSel).findIndex(_(\"o=>o.id=='\" + node.id + \"'\"));\r\n if (fi === -1) {\r\n var r = {id: node.id, text: node.text, parent: \"#\", selected: 1}, child = [];\r\n var findAll = _(areaData).find(_(\"o=>o.parent=='\" + node.id + \"'\")).items;\r\n if (findAll && findAll.length > 0) {\r\n $.each(findAll, function (i, k) {\r\n child.push({id: k.id, text: k.text, parent: k.parent, selected: 1});\r\n });\r\n r.children = child;\r\n }\r\n areaSel.push(r);//1为选择 2为部分选择 0未选择\r\n return true;\r\n } else {\r\n areaSel[fi].hide = false;\r\n areaSel[fi].selected = 1;\r\n //其所有子级也一并为true\r\n var children_1 = areaSel[fi].children;\r\n if (node.children) {\r\n //查找所有已选中 中的子级 看看有没有不存在的,如果不存在,则新插入\r\n $.each(node.children, function (i, k) {\r\n var findChild = _(children_1).findIndex(_(\"o=>o.id=='\" + k + \"'\"));\r\n if (findChild === -1) {\r\n var findChildNode = _(areaData).find(_(\"o=>o.id=='\" + k + \"'\")).items;\r\n if (findChildNode.length > 0) {\r\n var item = findChildNode[0];\r\n children_1.push({\r\n id: k,\r\n text: item.text,\r\n parent: item.parent,\r\n selected: 1,\r\n hide: false\r\n });\r\n }\r\n }\r\n });\r\n }\r\n if (children_1) {\r\n $.each(children_1, function (i, k) {\r\n k.hide = false;\r\n })\r\n }\r\n }\r\n } else {\r\n var fii = _(areaSel).findIndex(_(\"o=>o.id=='\" + node.parent + \"'\") );\r\n if (fii === undefined) return false;\r\n if (fii === -1) {\r\n //查找父级添加进去\r\n var fai = _(areaData).findIndex(_(\"o=>o.id=='\" + node.parent + \"'\"));\r\n if (fai >= 0) {\r\n areaSel.push({\r\n id: node.parent,\r\n text: areaData[fai].text,\r\n selected: 2, //此时为部分选择\r\n children: [{\r\n id: node.id,\r\n text: node.text,\r\n parent: node.parent,\r\n selected: 1,\r\n hide: false\r\n }]\r\n })\r\n }\r\n } else {\r\n areaSel[fii].hide = false;\r\n areaSel[fii].selected = 2;\r\n var obj = {id: node.id, text: node.text, parent: node.parent, selected: 1, hide: false},\r\n children = areaSel[fii].children;\r\n if (areaSel[fii].children) {\r\n var findChildIndex = _(children).findIndex(_(\"o=>o.id=='\" + node.id +\"'\"));\r\n if (findChildIndex > -1) {\r\n children[findChildIndex].hide = false;\r\n } else {\r\n children.push(obj);\r\n }\r\n } else {\r\n areaSel[fii].children = [obj];\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n removeSel = function (node) {\r\n if (!node) return false;\r\n setTimeout(function () {\r\n var checked = tree.get_checked();\r\n innerCallChecked = true;\r\n tree.uncheck_node(tree.get_node(\"####\"));\r\n innerCallChecked = false;\r\n //}\r\n }, 100);\r\n var fi = _(areaSel).findIndex(_(\"o=>o.id=='\" + node.id + \"'\"));\r\n if (node.parent === \"#\") {\r\n if (fi === -1) return false;\r\n areaSel[fi].hide = true;\r\n //其子级也全部隐藏\r\n var children_1 = areaSel[fi].children;\r\n if (children_1) {\r\n $.each(children_1, function (i, k) {\r\n k.hide = true;\r\n });\r\n }\r\n } else {\r\n if (fi === -1) {\r\n fi = _(areaSel).findIndex(_(\"o=>o.id=='\" + node.parent + \"'\"));\r\n }\r\n if (fi === -1) return false;\r\n areaSel[fi].selected = 2;//设置为半选择状态\r\n var children_2 = areaSel[fi].children;\r\n if (children_2) {\r\n var fii = _(children_2).findIndex(_(\"o=>o.id=='\" + node.id + \"'\"));\r\n if (fii > -1) {\r\n areaSel[fi].children[fii].hide = true;\r\n\r\n // 查询子级是不是全部已取消选择\r\n var hideCount = 0;\r\n $.each(children_2, function (i, k) {\r\n if (k.hide) {\r\n hideCount++;\r\n }\r\n });\r\n // 如果是全部都已取消选择,则父级也取消选择\r\n if (hideCount === children_2.length) {\r\n areaSel[fi].selected = 1;\r\n areaSel[fi].hide = true;\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n },\r\n render_selected = function (sel) {\r\n var temp = $.extend(true, [], sel);\r\n if (sel) {\r\n if (o.autoSort) {\r\n temp.sort(function (a, b) {\r\n return ~~a.id > ~~b.id\r\n });\r\n }\r\n $.each(temp, function (i, k) {\r\n if (k.children) {\r\n if (o.autoSort) {\r\n k.children.sort(function (a, b) {\r\n return ~~a.id > ~~b.id\r\n });\r\n }\r\n k.children = _(k.children).find(_(\"o=>!o.hide\")).items;\r\n }\r\n });\r\n $sel.html(junboCore.tmplHtml(tmpl_sel, temp));\r\n } else {\r\n $sel.empty();\r\n }\r\n },\r\n /**\r\n * 根据node获取地区数据的主要方法\r\n * @param {Node} obj 这是树形node数据\r\n * @return {Deferred} def 返回一个异步委托\r\n */\r\n ajax = function (obj) {\r\n var dtd = $.Deferred(),\r\n id = obj[\"id\"],\r\n /**\r\n * 获取数据\r\n * @param cb 回调结果\r\n * @param pid 父级Id\r\n */\r\n process = function (cb, pid) {\r\n var result = [];\r\n // if (!pid) {\r\n // result.push({\r\n // id: \"####\",\r\n // text: \"全选\",\r\n // parent: \"#\"\r\n // });\r\n // }\r\n $.each(cb, function (i, k) {\r\n var r = {\r\n id: k.Code,\r\n text: k.Name,\r\n parent: pid ? pid : \"#\"\r\n };\r\n if (!pid) {\r\n if(k.Provinces) r.children = true;\r\n else r.children = false;\r\n } else {\r\n\r\n }\r\n result.push(r);\r\n });\r\n if (!pid) {\r\n areaData = result;//初始化\r\n } else {\r\n areaData = areaData.concat(result);\r\n }\r\n wholeCount += result.length;\r\n dtd.resolve(result);\r\n };\r\n if (id === \"#\") {\r\n if(!dataSource || dataSource.length <= 0){\r\n junboCore.createArea.initData(function (cb) {\r\n dataSource = cb;\r\n process(dataSource);\r\n // $.each(dataSource,function (i,k) {\r\n // process(k.children,k.Id);\r\n // })\r\n });\r\n }else{\r\n process(dataSource);\r\n }\r\n } else {\r\n var temp = _(dataSource).find(_(\"a=>a.Code=='\" + id+\"'\")).items;\r\n\r\n process(temp[0][\"Provinces\"],id);\r\n }\r\n return dtd.promise();\r\n },\r\n /**\r\n * 根据node获取地区数据的主要方法\r\n * @param {Node} obj 这是树形node数据\r\n * @return {Deferred} def 返回一个异步委托\r\n */\r\n ajaxProtoType = function (obj) {\r\n var dtd = $.Deferred(),\r\n id = obj[\"id\"],\r\n city_no_child = {\"1100\": \"a\", \"1200\": \"a\", \"3100\": \"a\", \"5000\": \"a\"},//直辖市\r\n /**\r\n * 获取数据\r\n * @param cb 回调结果\r\n * @param pid 父级Id\r\n */\r\n process = function (cb, pid) {\r\n if (cb.Code === 100) {\r\n var result = [];\r\n if (!pid) {\r\n result.push({\r\n id: \"####\",\r\n text: \"全选\",\r\n parent: \"#\"\r\n });\r\n }\r\n $.each(cb.Result, function (i, k) {\r\n var r = {\r\n id: k.value,\r\n text: k.text,\r\n parent: pid ? pid : \"#\"\r\n };\r\n if (!pid) {\r\n if (!city_no_child[k.value]) {\r\n r.children = true;\r\n }\r\n } else {\r\n\r\n }\r\n result.push(r);\r\n });\r\n if (!pid) {\r\n areaData = result;//初始化\r\n } else {\r\n areaData = areaData.concat(result);\r\n }\r\n wholeCount += result.length;\r\n dtd.resolve(result);\r\n } else {\r\n dtd.reject(cb);\r\n }\r\n };\r\n if (id === \"#\") {\r\n junboCore.createArea.getProvince(function (cb) {\r\n process(cb);\r\n })\r\n } else {\r\n junboCore.createArea.getCity(id, function (cb) {\r\n process(cb, id);\r\n }, {showMain: false})\r\n }\r\n return dtd.promise();\r\n }\r\n ;\r\n\r\n\r\n /**\r\n * 获取选择的内容\r\n * @returns {Array} 结构: {id:\"\",text:\"\",selected:int,children:\"\"}\r\n */\r\n _this.getSelected = function () {\r\n var sel = [], area = $.extend(true, {}, areaSel);\r\n if (area) {\r\n $.each(area, function (i, k) {\r\n var item = k;\r\n if (!item.hide) {\r\n if (item.children) {\r\n var child = [];\r\n $.each(item.children, function (m, n) {\r\n if (!n.hide) {\r\n child.push(n);\r\n }\r\n });\r\n item.children = child;\r\n }\r\n sel.push(item);\r\n }\r\n })\r\n }\r\n return sel;\r\n };\r\n\r\n /**\r\n * 清空所有选择\r\n */\r\n _this.reset = function (list) {\r\n areaSel = [];\r\n tree.uncheck_all();\r\n render_selected(null);\r\n $panel.find(\".tree-area\").animate({scrollTop: 0});\r\n if (list) {\r\n var length = list.length, now = 0;\r\n $.each(list, function (i, k) {\r\n var node = tree.get_node(k);\r\n if (node) {\r\n addSel(node);\r\n tree.select_node(node);\r\n now++;\r\n } else {\r\n var parent = \"\";\r\n var s = k.split(\"_\");\r\n if(s.length == 2) parent = s[0];\r\n else parent = k.substr(0, 2) + \"00\";\r\n tree.open_node(parent, function () {\r\n node = tree.get_node(k);\r\n addSel(node);\r\n tree.select_node(node);\r\n now++;\r\n });\r\n }\r\n });\r\n var thread = setInterval(function () {\r\n if (now === length) {\r\n clearInterval(thread);\r\n }\r\n }, 200);\r\n }\r\n };\r\n /**\r\n * 清空所有选择\r\n */\r\n\r\n init();\r\n }\r\n\r\n /**\r\n * 生成一个地区选择控件\r\n * @param para\r\n * @returns {AreaSelect}\r\n */\r\n junboCore.areaSelect = function (para) {\r\n return new AreaSelect(para);\r\n };\r\n\r\n return junboCore;\r\n})(jQuery, JunboCore);\r\n","/**\r\n * 生成一个组织选择联动框\r\n * Created by tangfan on 2015/8/31.\r\n */\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n /**\r\n * 组织管理\r\n */\r\n junboCore.orgManage = (function (core) {\r\n var orgmanage = {};\r\n /**\r\n * 创建\r\n * @param {Object} para\r\n * @param {String} para.divId 父级DIV的ID\r\n * @param {Object} para.service 服务对象\r\n * @param {String} para.service.url 服务地址\r\n * @param {String} para.service.id 如果不是ROOT指定ID路径,请自由指定\r\n * @param {String} para.orgCode 初始化组织CODE\r\n * @param {String} para.orgName 初始化组织CODE\r\n * @param {String} para.bindValueField 绑定值\r\n * @param {Boolean} para.showMySelf 是否显示自身的渠道\r\n */\r\n orgmanage.createOrg = function (para) {\r\n return new Org(para);\r\n };\r\n\r\n /**\r\n * 组织管理\r\n * @class\r\n */\r\n var Org = function (para) {\r\n var _para = {\r\n orgName: \"\",\r\n orgCode: \"\",\r\n bindField: \"OrgId\",\r\n showMySelf: true,//是否显示自身的渠道\r\n showAll: false,//是否显示所有项\r\n allText: \"所有\",\r\n allValue: \"all\"\r\n };\r\n\r\n var $this = $(this);\r\n var $origin = this;\r\n\r\n var init = function (para) {\r\n var _this = $origin;\r\n _this.$this = $this;\r\n _para = $.extend({}, _para, para);\r\n _this.para = _para;\r\n _this.$div = $(\"#\" + _para.divId);\r\n _this.OrgService = $.extend({}, _para.service);\r\n if (!_this.OrgService[\"Id\"]) {\r\n _this.OrgService[\"Id\"] = \"org\";\r\n }\r\n _this.$bindValueField = _para.bindField;\r\n _this.showMySelf = _para.showMySelf;\r\n _this.showAll = _para.showAll;//是否展示所有\r\n _this.allText = _para.allText || \"所有\";\r\n _this.allValue = _para.allValue || \"all\";\r\n _this.useCache = _para.cache;\r\n //core.log(_this.OrgService);\r\n _this.$orgCode = _para.orgCode;\r\n $this.reset();\r\n };\r\n\r\n $this.reset = function (completed) {\r\n var _this = $origin;\r\n _this.$data = [];\r\n var first = _this.pushData([], _this.para.orgCode);\r\n if (_this.showMySelf) {\r\n core.Service.ajax('GetOrg', {OrgId: _this.para.orgCode}, function (callback) {\r\n if (callback.Code == 100) {\r\n if (_this.showAll) {\r\n first.data.push({\r\n text: _this.allText,\r\n value: _this.allValue,\r\n name: _this.allText,\r\n entity: null,\r\n selected: true\r\n });\r\n }\r\n first.data.push({\r\n text: _this.para.orgName,\r\n value: _this.para.orgCode,\r\n name: _this.para.orgName,\r\n entity: callback.Result,\r\n selected: !_this.showAll\r\n });\r\n _this.render(first);\r\n _this.querySubOrg(_this.para.orgCode, function (callBack) {\r\n switch (callBack.Code) {\r\n case 100:\r\n $.each(callBack.Result, function (i, k) {\r\n first.data.push(k);\r\n });\r\n if (first.data.length > 0 && !_this.showMySelf) {\r\n first.data[0].selected = true;\r\n }\r\n _this.render(first);\r\n break;\r\n case 99:\r\n _this.render(callBack.Result);\r\n break;\r\n default:\r\n $this.trigger(\"error\", callBack);\r\n break;\r\n }\r\n if (completed instanceof Function) {\r\n completed();\r\n }\r\n $this.trigger(\"initCompleted\");\r\n });\r\n }\r\n }, _this.OrgService.Id);\r\n }\r\n };\r\n\r\n init(para);\r\n\r\n /**\r\n * 获取选择项的value值\r\n */\r\n $this.getSelect = function (object) {\r\n if ($origin.$data.length > 0) {\r\n var findShow = $.grep($origin.$data, function (k, i) {\r\n return k.shown;\r\n });\r\n if (findShow.length > 0) {\r\n for (var i = findShow.length - 1; i >= 0; i--) {\r\n var k = findShow[i];\r\n var val = $(\"#\" + k.id + \" option:selected\").val();\r\n var check = val != \"\";\r\n if (check) {\r\n if (object == \"obj\") {\r\n return $.grep(k.data, function (k, i) {\r\n return k.value == val;\r\n })[0];\r\n }\r\n return val;\r\n }\r\n }\r\n }\r\n return _para.OrgCode;\r\n } else {\r\n return _para.OrgCode;\r\n }\r\n };\r\n\r\n /**\r\n * 清空所有选择\r\n */\r\n $this.clearSelect = function () {\r\n if ($origin.$data.length > 0) {\r\n $origin.clearData(0);\r\n var data = $origin.$data[0];\r\n var item = data.data[0] || {code: \"\", text: \"\", entity: {}};\r\n $(\"#\" + data.id).dropkick(\"reset\");\r\n $this.trigger(\"change\", {\r\n value: item.code,\r\n text: item.name,\r\n entity: item.entity,\r\n isClearSelect: true\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * 设置是否可用状态\r\n * @param {Boolean} status true-可用 false-不可用\r\n */\r\n $this.setStatus = function (status) {\r\n try {\r\n if ($origin.$data.length > 0) {\r\n $.each($origin.$data, function (i, k) {\r\n $(\"#\" + k.id).dropkick(\"disable\", !status);\r\n })\r\n }\r\n }catch(err){}\r\n };\r\n\r\n /**\r\n * 手动触发一个选项\r\n * @func\r\n * @param index 第N组组织\r\n * @param index2 第N组组织的第M条数据,不填时,默认为0\r\n */\r\n $this.touchOne = function (index, index2) {\r\n var _this = $origin;\r\n if (_this.$data.length > 0 && _this.$data.length > index) {\r\n var item = _this.$data[index];\r\n var item_child = !!index2 ? 0 : index2;\r\n if (!!item.data && item.data.length > 0) {\r\n item_child = item.data.length > item_child ? item_child : 0;\r\n _this.triggerChange($(\"#\" + item.id), item, item.data[item_child].value, item.data[item_child].text);\r\n }\r\n }\r\n return $this;\r\n };\r\n\r\n /**\r\n * 根据值匹配去删除一个项目\r\n * @param value\r\n */\r\n $this.deleteByValue = function (value) {\r\n var _this = $origin;\r\n var find = $.grep(_this.$data, function (k, i) {\r\n if (k.shown) {\r\n var find2 = $.grep(k.data, function (n, m) {\r\n return n.value == value;\r\n });\r\n return find2.length > 0;\r\n }\r\n });\r\n if (find.length > 0) {\r\n var g = find[0];\r\n $(\"#\" + g.id + \" option[value='\" + value + \"']\").remove();\r\n $(\"#\" + g.id).dropkick(\"refresh\");\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * 获取当前选择项的索引\r\n */\r\n $this.getSelectIndex = function (value) {\r\n var _this = $origin;\r\n if (!!value) {\r\n var getIndex = 0;\r\n var findValue = $.grep(_this.$data, function (k, i) {\r\n var f = k.shown && $.grep(k.data, function (n, m) {\r\n return n.value == value;\r\n }).length > 0;\r\n if (f) {\r\n getIndex = i - 2 >= 0 ? 0 : i - 2;\r\n }\r\n });\r\n return getIndex;\r\n } else {\r\n for (var i = _this.$data.length - 1; i >= 0; i--) {\r\n var item = _this.$data[i];\r\n if (item.shown) {\r\n return i;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 根据索引刷新当前的项目,会再次获取当前项的第一项内容\r\n */\r\n $this.refreshByIndex = function (index, refreshCompleted) {\r\n var _this = $origin;\r\n if (_this.$data.length > 0 && _this.$data.length > index) {\r\n var item = _this.$data[index];\r\n var item_child = 0;\r\n var value = item.code;\r\n var findlast = $.grep(_this.$data, function (k, i) {\r\n if (i != index) {\r\n return $.grep(k.data, function (n, m) {\r\n if (n.value == item.code) {\r\n item_child = m;\r\n return true;\r\n }\r\n }).length > 0;\r\n }\r\n });\r\n if (findlast.length > 0) {\r\n var findItem = findlast[0];\r\n if (!!findItem.data && findItem.data.length > 0) {\r\n item_child = findItem.data.length > item_child ? item_child : 0;\r\n _this.triggerChange($(\"#\" + findItem.id), findItem, value, findItem.data[item_child].text, refreshCompleted);\r\n }\r\n }\r\n }\r\n return $this;\r\n };\r\n\r\n return $this;\r\n };\r\n\r\n Org.prototype = {\r\n $tmpl: '',\r\n $data: [],\r\n $this: null,\r\n pushData: function (data, code) {\r\n var length = this.$data.length;\r\n var grep = $.grep(this.$data, function (k, i) {\r\n return k.code == code;\r\n });\r\n if (grep.length == 0) {\r\n var d = $.extend({}, {\r\n id: core.guid(core.getRandom(1000)), // 每个数据的唯一id\r\n data: data, // 下列列表缓存\r\n code: code, // 用户实际需要使用的数据\r\n index: length,// 当前序列 用于清除数据\r\n shown: false,// 是否已展示\r\n query: false, // 是否已查询过\r\n placeholder: \"请选择\"\r\n });\r\n this.$data.push(d);\r\n return d;\r\n } else {\r\n return grep[0];\r\n }\r\n },\r\n clearData: function (start) {\r\n if (start < this.$data.length) {\r\n $.each(this.$data, function (i, k) {\r\n if (i > start) {\r\n var $k = $(\"#\" + k.id);\r\n $k.dropkick(\"destroy\");\r\n $k.remove();\r\n k.shown = false;\r\n }\r\n });\r\n //this.$data = this.$data.slice(0, start + 1);\r\n }\r\n },\r\n getLastItem: function () {\r\n var length = this.$data.length;\r\n if (length > 0) {\r\n return this.$data[length - 1].id;\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n getFirstItem: function () {\r\n var length = this.$data.length;\r\n if (length > 0) {\r\n return this.$data[0].id;\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n querySubOrg: function (orgCode, callback) {\r\n if (!orgCode) return;\r\n var _this = this;\r\n var id = _this.OrgService.Id;\r\n var bindField = this.$bindValueField;\r\n var getNew = true;\r\n if (this.useCache) {\r\n var grep = $.grep(this.$data, function (k, i) {\r\n return k.code == orgCode;\r\n });\r\n getNew = grep.length == 1 && grep[0].data && grep[0].data.length <= 1 || grep.length == 0;\r\n } else {\r\n getNew = true;\r\n }\r\n if (getNew) {\r\n core.Service.ajax(this.OrgService.url, {\r\n OrgId: orgCode,\r\n PageRow: 100000,\r\n StartRow: 1,\r\n IncludeBlack: 1\r\n }, function (orgBack) {\r\n if (callback instanceof Function) {\r\n var result = [];\r\n if (orgBack.Result) {\r\n var records = orgBack.Result.Records;\r\n if (records) {\r\n // todo重构数据\r\n $.each(records, function (i, k) {\r\n result.push({\r\n text: k.OrgName,\r\n name: k.OrgName,\r\n value: k[bindField] || k[\"OrgId\"] || k[\"OrgCode\"],\r\n entity: k\r\n })\r\n });\r\n }\r\n }\r\n callback({Code: orgBack.Code, Msg: orgBack.Msg, Result: result})\r\n }\r\n }, id);\r\n } else {\r\n callback({Code: 99, Msg: \"cache\", Result: grep[0]})\r\n }\r\n },\r\n triggerChange: function (dk, tData, value, label, completed) {\r\n var _this = this;\r\n if (value === this.allValue) {\r\n _this.$this.trigger(\"change\", {value: value, text: label, entity: {}});\r\n _this.clearData(tData.index);\r\n if (completed instanceof Function) {\r\n completed({Code: 100});\r\n }\r\n return;\r\n }\r\n var entity = $.grep(tData.data, function (k, i) {\r\n return k[\"value\"] == value;\r\n });\r\n entity = entity.length > 0 ? entity[0][\"entity\"] : null;\r\n _this.$this.trigger(\"change\", {value: value, text: label, entity: entity});\r\n //if (!tData.query && !_this.useCache) {\r\n dk.dropkick(\"disable\", true);\r\n //}\r\n //if (firstClear) {\r\n _this.clearData(tData.index);\r\n //}\r\n //module.log(tData.index);\r\n if (value == tData.code) {\r\n dk.dropkick(\"disable\", false);\r\n return;\r\n }\r\n var $dk = dk;\r\n var dkData = dk.data(\"dropkick\");\r\n if (!!dkData) {\r\n $dk = dkData.$dk;\r\n }\r\n if ($dk.find(\"+div.loading\").length == 0) {\r\n $dk.after(\"
      \");\r\n }\r\n _this.querySubOrg(value, function (callBack) {\r\n //if (!tData.query && !_this.useCache) {\r\n dk.dropkick(\"disable\", false);\r\n //}\r\n tData.query = true;\r\n //module.log(\"Org \" + label + \"[\" + value + \"] search completed!\");\r\n $dk.parent().find(\"div.loading\").remove();\r\n switch (callBack.Code) {\r\n case 100:\r\n if (callBack.Result.length != 0) {\r\n var ling = _this.pushData([], value);\r\n //if (_this.showMySelf) {\r\n ling.data = [];\r\n ling.data.push({\r\n name: label,\r\n text: \"全部\",\r\n value: value,\r\n selected: true,\r\n entity: entity\r\n });\r\n //}\r\n $.each(callBack.Result, function (i, k) {\r\n ling.data.push(k);\r\n //if (ling.data.length > 0 && !_this.showMySelf) {\r\n // ling.data[0].selected = true;\r\n //}\r\n });\r\n _this.render(ling);\r\n }\r\n break;\r\n case 99:\r\n _this.render(callBack.Result);\r\n break;\r\n default:\r\n //core.log(callBack);\r\n break;\r\n }\r\n if (completed instanceof Function) {\r\n completed(callBack);\r\n }\r\n })\r\n },\r\n renderOpr: function (tData) {\r\n var _this = this;\r\n var tk = $(\"#\" + tData.id);\r\n var a = tk.data(\"dropkick\");\r\n if (!a) {\r\n tk.dropkick({\r\n minWidth: 118,\r\n autoWidth: true,\r\n //autoMode: true,\r\n height: 37,\r\n change: function (value, label) {\r\n _this.triggerChange($(this), tData, value, label);\r\n }\r\n });\r\n } else {\r\n //tk.dropkick(\"refresh\");\r\n }\r\n tData.shown = true;\r\n return tk.data(\"dropkick\");\r\n },\r\n render: function (tData/* ...id */) {\r\n try {\r\n var _this = this;\r\n var html = core.tmplHtml(this.$tmpl, tData);\r\n var id = tData.id;\r\n var fid = _this.getFirstItem();\r\n var fc = fid == \"\" || fid == id; // 渲染第一个下拉列表\r\n if (fc) {\r\n this.$div.html(html);\r\n } else {\r\n // 在最后一个渲染列表之后新建列表\r\n var f = $.grep(_this.$data, function (k, i) {\r\n return k.shown;\r\n });\r\n _this.renderOpr(f[f.length - 1]).$dk.after(html);\r\n }\r\n _this.renderOpr(tData);\r\n if (fc) {\r\n // 第一个下拉列表触发器\r\n _this.$this.trigger(\"renderFirst\", tData);\r\n } else {\r\n _this.$this.trigger(\"rendered\", tData)\r\n }\r\n } catch (err) {\r\n core.log(err);\r\n }\r\n }\r\n };\r\n\r\n return orgmanage;\r\n })(junboCore || {});\r\n return junboCore;\r\n}(jQuery, JunboCore || {}));","/**\r\n * Created by tangfan on 2015/8/31.\r\n * 综合管理平台init\r\n */\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n\r\n junboCore.viewInit = function (initPara) {\r\n var debug = initPara.debug;\r\n junboCore.set(\"optionView\", junboCore.createView({\r\n template: \"{{?it.placeholder }}\\n \\n{{?}}\\n{{?it.data && it.data.length > 0}}\\n {{~it.data:v:i }}\\n \\n {{~}}\\n{{?}}\",\r\n }, function () {\r\n junboCore.tmplByStr(this.template, this.id, this);\r\n try {\r\n $(\"#\" + this.id).dropkick(\"refresh\");\r\n } catch (err) {\r\n junboCore.log(err);\r\n }\r\n }));\r\n\r\n junboCore.set(\"config\", {\r\n debug: initPara.debug,\r\n autoHideLayer: initPara.autoHideLayer,\r\n msg: initPara[\"msg\"] || \"\",\r\n release: (function (url) {\r\n return !/localhost/.test(url) && /^[a-z]/.test(url)\r\n })(window.location.host.toString())\r\n });\r\n var testDebug = /\\d+\\.\\d+\\.\\d+/.test(window.location.hostname);\r\n if (debug) {\r\n initPara.footer.version += \"    库版本:\" + junboCore.version + \"\";\r\n if (initPara[\"test\"]) {\r\n var testUrl = initPara[\"test\"][\"url\"] || \"/test/test_\" + window.location.pathname.split(\"/\").pop().split(\".\").shift() + \".html\";\r\n initPara.footer.version += \"    单元测试\";\r\n }\r\n }\r\n\r\n // 存储用户数据\r\n try {\r\n var userEntity = JSON.parse($.cookie(\"UserEntity\"));\r\n if (userEntity) {\r\n initPara.userInfo.userName = userEntity.UName;\r\n } else {\r\n if (!initPara.isLogin) {\r\n // 在非登录页 没有找到用户信息,则通知登出并跳回登录页\r\n junboCore.Service.postRText(junboCore.combineRoot(\"/WebService/Logout.aspx\"), null, function (callBack) {\r\n junboCore.$$module.trigger(\"redirect\", \"logout\");\r\n }, function () {\r\n });\r\n return junboCore;\r\n }\r\n }\r\n junboCore.set(\"userEntity\", userEntity);\r\n } catch (err) {\r\n }\r\n return initPara;\r\n };\r\n\r\n return junboCore;\r\n}(jQuery, JunboCore));\r\n","/**\r\n * 综合管理平台页面所需\r\n * Created by tangfan on 2015/8/31.\r\n *\r\n * 2016-5-18:新增应用内弹窗模块、安装框条件行为、桌面应用推荐、业务流程统计、用户手机应用分布统计等5个模块的地址定义 by Dachao Li\r\n */\r\n\r\nvar JunboCore = (function ($, junboCore) {\r\n var menuTmpl = \"{{~it.menus:v:i }}\\n
      \\n \\n 0 }} v v02 {{?}}\\\">\\n \\n

      {{=v.name}}

      \\n
      \\n
      \\n {{? v.children && v.children.length > 0 }}\\n
      \\n \\n
      \\n {{?}}\\n{{~}}\";\r\n\r\n /**\r\n * 菜单绑定\r\n */\r\n function bindMenuEvent() {\r\n var findSelect = $(\".left .menu .select\");\r\n if (findSelect.length == 0) {\r\n $(\".left .menu .content\").toggle(false).prev(\".title\").find(\".v\").addClass(\"v02\");\r\n return;\r\n }\r\n var findChild = findSelect.filter(\".child-menu\"),//是否为父级\r\n isParent = findChild.length == 0//只含有父级时\r\n ;\r\n var parent = $(\".left .menu .title\");//所有父级标题\r\n if (isParent) {\r\n // 父级处理\r\n findSelect.siblings(\".content\").toggle(false);//隐藏其它下拉列表\r\n findSelect.siblings(\".title\").find(\".v\").removeClass(\"v02\");\r\n var next = findSelect.next();\r\n if (next.is(\".content\")) {\r\n findSelect.find(\".v\").removeClass(\"v02\");\r\n }\r\n } else {\r\n // 子级处理\r\n var childWrap = findChild.closest(\".content\");\r\n childWrap.siblings(\".content\").toggle(false);\r\n childWrap.siblings(\".title\").find(\".v\").removeClass(\"v02\");\r\n var parentTitle = childWrap.prev(\".title\");\r\n parentTitle.addClass(\"select\").find(\".v\").addClass(\"v02\");//子级展示,添加子级菜单下箭头\r\n }\r\n // 绑定点击事件\r\n parent.click(function () {\r\n var $this = $(this);\r\n var next = $this.next(\".content\");\r\n var isHidden = next.is(\":hidden\");\r\n\r\n function toggle() {\r\n $this.find(\".v\").toggleClass(\"v02\", isHidden);\r\n }\r\n\r\n if (isHidden) {\r\n next.slideDown(\"fast\", function () {\r\n toggle();\r\n }).siblings(\".content\").slideUp(\"fast\", function () {\r\n $this.siblings(\".title\").removeClass(\"active\").find(\".v\").removeClass(\"v02\");\r\n });\r\n } else {\r\n next.slideUp(\"fast\", function () {\r\n toggle();\r\n });\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * 生成区域管理model\r\n * @returns {Area}\r\n */\r\n junboCore.createArea = (function (core) {\r\n /**\r\n * 区域model\r\n */\r\n var Area = function () {\r\n\r\n /**\r\n * 获取所有省市信息\r\n * @param {Boolean} obj.showMain 显示全国\r\n */\r\n this.getProvince = function (callBack, obj) {\r\n core.Service.ajax(\"GetProvince\", {\r\n ProvinceCode: \"\",\r\n StartRow: 1,\r\n PageRow: 10000\r\n }, function (provinceBack) {\r\n if (callBack instanceof Function) {\r\n var result = [];//{value: \" \", text: \"全国\"}\r\n if (obj && obj[\"showMain\"]) {\r\n result.push({value: \"0000\", text: \"全国\"});\r\n }\r\n if (provinceBack.Result) {\r\n var records = provinceBack.Result.Records;\r\n if (records) {\r\n $.each(records, function (i, k) {\r\n result.push({value: k.ProvinceCode, text: k.ProvinceName})\r\n })\r\n }\r\n }\r\n callBack({Code: provinceBack.Code, Msg: provinceBack.Msg, Result: result});\r\n }\r\n }, \"org\");\r\n };\r\n\r\n /**\r\n * 获取城市编码\r\n * @param {String} provinceCode 获取该省的所有市级\r\n * @param {Function} callBack 回调函数\r\n * @param {Object} obj 参数\r\n * @param {Boolean} obj.showMain 在顶部显示全省市属性,默认值为true\r\n */\r\n this.getCity = function (provinceCode, callBack, obj) {\r\n if ($.trim(provinceCode) === \"\" || provinceCode === \"0000\") {\r\n callBack({Code: 100, Msg: \"\", Result: []});\r\n return;\r\n }\r\n\r\n var o = $.extend(true, {\r\n showMain: true\r\n }, obj);\r\n core.Service.ajax(\"GetCity\", {\r\n ProvinceCode: provinceCode,\r\n CityCode: \"\",\r\n StartRow: 1,\r\n PageRow: 10000\r\n }, function (cityBack) {\r\n if (callBack instanceof Function) {\r\n var result = [];\r\n if (cityBack.Result) {\r\n var records = cityBack.Result.Records;\r\n if (records) {\r\n if (o.showMain) {\r\n result.push({value: provinceCode, text: \"全省/市\", selected: true});\r\n }\r\n $.each(records, function (i, k) {\r\n result.push({value: k.CityCode, text: k.CityName})\r\n })\r\n }\r\n }\r\n callBack({Code: cityBack.Code, Msg: cityBack.Msg, Result: result});\r\n }\r\n }, \"org\")\r\n }\r\n\r\n /**\r\n * Created by liangshw on 2016/12/07.\r\n * 初始化所有区域信息\r\n * @param {funtion} callBackFunc 处理初始化树的回调函数\r\n */\r\n this.initData = function (callBackFunc) {\r\n $.getJSON (\"/area.txt\", function (data)\r\n {\r\n if(data && data.length > 0){\r\n // var result = [];\r\n // var children = [];\r\n // result.push({\r\n // id: \"####\",\r\n // text: \"全选\",\r\n // children: false\r\n // });\r\n // $.each(data,function (i,k) {\r\n // children = [];\r\n // if(k.Provinces && k.Provinces.length>0){\r\n // $.each(k.Provinces,function (j,s) {\r\n // children.push({\r\n // 'id': s.Code,\r\n // 'text': s.Name\r\n // });\r\n // })\r\n // }else {\r\n // children = false;\r\n // }\r\n // result.push({\r\n // 'id': k.Code,\r\n // 'text': k.Name,\r\n // 'children' : children\r\n // });\r\n // });\r\n if (callBackFunc instanceof Function) {\r\n callBackFunc(data);\r\n }\r\n }\r\n });\r\n // core.Service.ajax(\"GetAreaData\",null,function (cb) {\r\n // if (callBackFunc instanceof Function) {\r\n // callBackFunc({Code: cb.Code, Msg: cb.Msg, Result: cb.result});\r\n // }\r\n // },\"area\")\r\n };\r\n };\r\n\r\n return new Area();\r\n })(junboCore);\r\n\r\n /**\r\n * 设置多选菜单项目\r\n * @param para\r\n * @param {String} para.id 设置项目的宿主ID\r\n * @param {String} para.placeholder 水印文字\r\n * @param {Array} para.data 设置项目的数据\r\n * @param {String} para.data[].value 项目的Value内容\r\n * @param {String} para.data[].text 项目的显示内容\r\n * @param {String} para.data[].selected 默认选中 默认值为false\r\n */\r\n junboCore.setOptionItems = function (para) {\r\n var data = junboCore.get();\r\n var view = $.extend({}, data.optionView, para);\r\n if (typeof view.id == \"string\" && $.trim(view.id) != \"\") {\r\n if (view.render instanceof Function) {\r\n view.render.call(view);\r\n } else {\r\n throw \"未指定渲染多选菜单项目的方法!\"\r\n }\r\n } else {\r\n throw \"设置多选菜单项目时,未指定宿主ID!\";\r\n }\r\n };\r\n\r\n /**\r\n * 设置下拉框的值\r\n * @param id\r\n * @param value\r\n */\r\n junboCore.setOption = function (id, value) {\r\n $(\"#\" + id).dropkick(\"setValue\", value);\r\n };\r\n\r\n /**\r\n * 获取选中的下拉列表菜单的值\r\n * @param {String} idPara select的ID\r\n * @return {*} 之前设置过的value值\r\n */\r\n junboCore.getOptionSelected = function (idPara) {\r\n if ($.trim(idPara) == \"\") throw \"在获取下拉列表选择项目时,未传递ID参数!\";\r\n return $(\"#\" + idPara + \" option:selected\").val();\r\n };\r\n\r\n junboCore.pageInit = function (initPara) {\r\n var _this = junboCore,\r\n data = junboCore.get()\r\n ;\r\n // 左侧菜单\r\n var app = function (flag) {\r\n return \"AppManage/\" + flag + \".html\";\r\n };\r\n _this.set(\"menu\", {\r\n id: \"\",\r\n active: \"\",\r\n data: {\r\n org: {\r\n root: \"orgmanage\",\r\n data: [{\r\n id: \"01\",\r\n name: \"账号管理\",\r\n href: \"account.html\"\r\n }, {\r\n id: \"02\",\r\n name: \"组织管理\",\r\n href: \"org.html\"\r\n }]\r\n },\r\n cp: {\r\n data: [\r\n {id:\"dspContent\",name: \"DSP内容管理\", href: \"cp/dspContent.html\"},//2016-09-28 by liangshw\r\n {name: \"广告主管理\", href: \"cp/advertiser.html\"},\r\n {\r\n name: \"内容管理\",\r\n children: [\r\n {name: \"APP管理\", href: \"cp/content/app.html\"},\r\n {name: \"网页管理\", href: \"cp/content/web.html\"},\r\n {name: \"其它管理\", href: \"cp/content/other.html\"},\r\n {name : \"广告管理\", href : \"cp/content/adManage.html\"}\r\n ]\r\n },\r\n {name: \"推广库管理\", href: \"cp/promotionLib.html\"},\r\n {\r\n name: \"分发与同步\",\r\n children: [\r\n {name: \"分发任务\", href: \"cp/distribute.html\"},\r\n {name: \"同步管理\", href: \"cp/sync.html\"}\r\n ]\r\n }\r\n ]\r\n },\r\n opr: {\r\n root: \"\",\r\n data: [\r\n {id: \"o0\", name: \"渠道组管理\", href: \"AppManage/ChannelManage.html\"},\r\n {id: \"o1\", name: \"SDK模块在线配置\", href: \"AppManage/sdkOlSetup.html\"},\r\n {\r\n id: \"o2\",\r\n name: \"SDK运营配置\",\r\n children: [\r\n {id: \"chargeChannel\", name: \"计费支付模块\", href: app(\"chargeChannel\")},//2017-01-20 by liangshw\r\n {id: \"adControl\", name: \"广告控制模块\", href: app(\"adControl\")},//2016-09-03 by liangshw\r\n {id: \"adConfig\", name: \"广告运营配置\", href: app(\"adConfig\")},//2016-09-18 by liangshw\r\n {id: \"dsp\", name: \"DSP广告模块\", href: app(\"dsp\")},\r\n {id: \"fib\", name: \"悬浮图标浏览器\", href: app(\"flowIcoBrowser\")},\r\n {\r\n id: \"s21\",\r\n name: \"宿主剥离模块\",\r\n href: app(\"host_stripped\")\r\n },\r\n {\r\n id: \"s2\",\r\n name: \"桌面应用推荐管理\",\r\n href: app(\"DesktopApp\")\r\n },\r\n {\r\n id: \"s12\",\r\n name: \"安装界面推荐\",\r\n href: app(\"recommend/install\")\r\n },\r\n {\r\n id: \"s10\",\r\n name: \"桌面游戏合辑\",\r\n href: app(\"game/gameCollection\")\r\n },\r\n {\r\n id: \"s13\",\r\n name: \"应用内广告推荐\",\r\n href: app(\"recommend/appAd\")\r\n },\r\n {\r\n id: \"s8\",\r\n name: \"精品应用中心内容配置\",\r\n href: app(\"app_center_jinping\")\r\n },\r\n {\r\n id: \"s14\",\r\n name: \"浏览器首页推荐\",\r\n href: app(\"recommend/homepage\")\r\n },\r\n {id: \"s15\", name: \"通知栏管理\", href: app(\"notification\")},\r\n {id: \"s16\", name: '桌面应用合辑', href: app(\"app_collect\")},\r\n {id: \"s17\", name: '推荐应用替换', href: app(\"app_replace\")},\r\n {id: \"s18\", name: '用户群屏蔽管理', href: app(\"user_mask\")},\r\n {id: \"s19\", name: '悬浮图标广告管理', href: app(\"float_ico\")},\r\n {id: \"s20\", name: '场景化推荐弹框', href: app(\"scene_recommend\")},\r\n {\r\n id: \"s1\",\r\n name: \"桌面快捷方式管理\",\r\n href: \"dc/foldershortcut.html\"\r\n },\r\n {\r\n id: \"s3\",\r\n name: \"第三方升级管理\",\r\n href: \"dc/upgradeappmanage.html\"\r\n },\r\n {\r\n id: \"s4\",\r\n name: \"第三方推荐管理\",\r\n href: \"dc/recommendappmanage.html\"\r\n },\r\n {\r\n id: \"s5\",\r\n name: \"PUSH管理\",\r\n href: \"dc/pushContentManage.html\",\r\n children: [{\r\n id: \"s51\",\r\n name: \"内容管理\",\r\n href: \"dc/pushContentManage.html\"\r\n }, {\r\n id: \"s52\",\r\n name: \"任务管理\",\r\n href: \"dc/pushTaskManage.html\"\r\n }]\r\n },\r\n {\r\n id: \"s6\",\r\n name: \"热词配置管理\",\r\n href: \"dc/HotWordManage.html\"\r\n },\r\n {\r\n id: \"s7\",\r\n name: \"退出推荐管理\",\r\n href: \"dc/exitRecommendManage.html\"\r\n },\r\n {\r\n id: \"s9\",\r\n name: \"应用中心搜索推荐\",\r\n href: app(\"RecommendSearch/index\")\r\n },\r\n {\r\n id: \"s11\",\r\n name: \"桌游广告管理\",\r\n href: app(\"game/adManage\")\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n /**\r\n * 分成平台\r\n */\r\n share: {\r\n root: \"sharePlat\",\r\n data: [{\r\n id: \"s0\",\r\n name: \"SDK渠道分成\",\r\n children: [{id: \"s01\", name: \"渠道分成客户管理\", href: \"customer.html\"}]\r\n }]\r\n },\r\n maintain: {\r\n root: \"VCManage\",\r\n data: [{\r\n name: \"版本管理\",\r\n href: \"\",\r\n children: [\r\n {\r\n id: \"01\",\r\n name: \"版本发布\",\r\n href: \"Publish.html\"\r\n },\r\n {\r\n id: \"02\",\r\n name: \"密钥管理\",\r\n href: \"UpgradeKey.html\"\r\n },\r\n {\r\n id: \"03\",\r\n name: \"历史文件版本\",\r\n href: \"ClientFileQuery.html\"\r\n },\r\n {\r\n id: \"04\",\r\n name: \"历史客户端版本\",\r\n href: \"VersionQuery.html\"\r\n },\r\n {\r\n id: \"05\",\r\n name: \"流量SDK历史版本\",\r\n href: \"LLLFSDKVersion.html\"\r\n }, {\r\n id: \"06\",\r\n name: \"SDK模块历史版本\",\r\n href: \"SDKModuleFile.html\"\r\n }, {\r\n id: \"07\",\r\n name: \"SDK功能模块管理\",\r\n href: \"sdkModule.html\"\r\n }, {\r\n id: \"08\",\r\n name: \"SDK-JAR包管理\",\r\n href: \"jar.html\"\r\n },\r\n {\r\n id: \"09\",\r\n name: \"总控模块\",\r\n href: \"masterControlFileQuery.html\"\r\n }\r\n , {\r\n id: \"10\",\r\n name: \"宿主升级\",\r\n href: \"host_upgrade.html\"\r\n }, {\r\n id: \"11\",\r\n name: \"Shell文件管理\",\r\n href: \"shell.html\"\r\n }\r\n ]\r\n }]\r\n },\r\n flow: {\r\n root: \"flowmanage\",\r\n data: [{\r\n name: \"预警通用配置\",\r\n href: \"warning.aspx\"\r\n }, {\r\n name: \"供应商产品管理\",\r\n href: \"flowset/supplier.aspx\"\r\n },\r\n // {\r\n // name: \"流量基础产品管理\",\r\n // href: \"flowset/base.aspx\"\r\n // }, {\r\n // name: \"骏伯流量产品管理\",\r\n // href: \"flowset/junboflow.aspx\"\r\n // },{\r\n // name: \"骏伯流量套餐管理\",\r\n // href: \"flowset/junboflowset.aspx\"\r\n // },\r\n {\r\n name: \"流量客户管理\",\r\n href: \"flowset/users.aspx\"\r\n },\r\n // {name: \"供应商配置\", href: \"flowset/supplier_config.html\"},\r\n {\r\n name: \"抢红包配置\",\r\n href: \"flowconfiguration/redpacketset.html\"\r\n }, {\r\n name: \"流量订购页面配置\",\r\n href: \"flowconfiguration/ordermanage.html\"\r\n }, {\r\n name: \"TO C业务退款管理\",\r\n href: \"flowrefundmanage/refundTOC.html\"\r\n }, {\r\n name: \"客户退款管理\",\r\n href: \"flowrefundmanage/refundTOB.html\"\r\n },\r\n {\r\n name: \"回调管理\",\r\n href: \"flowconfiguration/callbackmanage.html\"\r\n },\r\n {\r\n name: \"预警管理\",\r\n href: \"flowconfiguration/earlywarning.html\"\r\n },\r\n // {\r\n // name : \"缓存订单处理\",\r\n // href : \"flowconfiguration/cachemanage.html\"\r\n // },\r\n {\r\n name : \"订单分布情况\",\r\n href : \"flowconfiguration/orderquery.html\"\r\n },\r\n {\r\n name : \"供应商折扣查询\",\r\n href : \"flowconfiguration/supplierdiscount.html\"\r\n },\r\n {\r\n name : \"虚拟供应商管理\",\r\n href : \"flowconfiguration/virtualvendor.html\"\r\n }\r\n ]\r\n },\r\n report: {\r\n root: \"report\",\r\n data: [{\r\n name: \"用户分析\",\r\n children: [\r\n {name: \"活跃用户\", href: \"user/active.html\"},\r\n //{name: \"新增用户\", href: \"user/analysis.html\"},\r\n \r\n //{name: \"留存用户\", href: \"user/retained.html\"}\r\n ]\r\n },\r\n {name: \"用户应用分布情况\", href: \"appProportion/appProportion.html\"},//2016-5-18新增\r\n {name: \"业务流程数据统计\", href: \"workFlow/workFlow.html\"},//2016-5-18新增\r\n {\r\n name: \"安装统计分析\",\r\n children: [\r\n {id: \"i01\", name: \"安装统计报表\", href: \"install/report.html\"}\r\n //{name: \"任务安装应用统计\", href: \"install/taskApp.html\"},\r\n //{name: \"渠道安装应用统计\", href: \"install/channelApp.html\"},\r\n //{name: \"任务安装用户统计\", href: \"install/taskUser.html\"},\r\n //{name: \"渠道安装用户统计\", href: \"install/channelUser.html\"}\r\n ]\r\n },\r\n {\r\n name: \"用户行为分析\",//2016-5-18新增\r\n children: [\r\n {name: \"桌面应用推荐\", href: \"behavior/desktopApp.html\"},\r\n {name: \"应用内广告弹框\", href: \"behavior/appAd.html\"},\r\n {name: \"安装框推荐\", href: \"behavior/frameRecommend.html\"}\r\n ]\r\n },\r\n {id: \"r0\", name: \"报表中心\", href: \"reportCenter.html\"}\r\n\r\n ]\r\n }\r\n }\r\n });\r\n // 顶部菜单\r\n _this.set(\"navMenuView\", junboCore.createView($.extend({}, {\r\n id: \"nav-menu\",\r\n active: -1,\r\n debug: true,\r\n data: \"###navMenuData###\",\r\n template: \"{{~it.data:v:i}}\\n
    • \\n {{? v.id == it.active }}\\n {{=v.name}}\\n {{??}}\\n {{=v.name}}\\n {{?}}\\n {{ if (!v.href && it.debug) { }}\\n building\\n {{ } }}\\n
    • \\n{{~}}\"\r\n }, initPara.navMenus)));\r\n\r\n // 设置登录的用户名\r\n _this.set(\"headView\", junboCore.createView({\r\n id: \"user-info\",\r\n debug: initPara.debug,\r\n template: '欢迎您!    {{=it.userName}}    修改密码    注销  \\n{{ if (it.debug) { }}\\n DEBUG模式\\n{{ } }}',\r\n userName: initPara.userInfo.userName || $.cookie(\"userName\") || \"NAN\"\r\n }));\r\n\r\n // 设置公司及版本号\r\n _this.set(\"footView\", junboCore.createView({\r\n id: \"footer\",\r\n version: initPara.footer.version,\r\n company: initPara.footer.company,\r\n template: '{{=it.version}}

      {{=it.company}}

      ',\r\n }));\r\n\r\n // 根据id查找菜单\r\n function findMenuById(id, list) {\r\n var i = 0;\r\n if (list && list.length > 0) {\r\n for (i; i < list.length; i++) {\r\n var item = list[i];\r\n if (item.id === id) {\r\n return item;\r\n }\r\n var nx = findMenuById(id, item.children);\r\n if (nx) {\r\n return {parent: item, menu: nx}\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // 菜单配置\r\n var newMenu = initPara[\"menu\"];\r\n if (newMenu) {\r\n // 为了兼容老版本 如果含有menu项,由优先启动menu项\r\n var id = data.menu.id = newMenu[\"id\"];\r\n if (id) {\r\n _this.log(\"当前菜单ID:\" + id);\r\n var active = data.menu.active = newMenu[\"active\"],\r\n menuData = data.menu.data[data.menu.id],\r\n urlPara = newMenu[\"urlPara\"] || {},\r\n a_type = junboCore.getType(active),\r\n mode = 0//菜单激活模式:0-排序模式 1-id模式\r\n ;\r\n if (menuData) {\r\n var parent = -1;\r\n var child = -1;\r\n var child_1 = -1;//第三级菜单\r\n if (active && a_type === \"string\") {\r\n if (active.length >= 2) {\r\n parent = parseInt(data.menu.active.substr(0, 2), 10);\r\n }\r\n if (active.length >= 4) {\r\n child = parseInt(data.menu.active.substr(2, 2), 10);\r\n }\r\n if (active.length >= 6) {\r\n child_1 = parseInt(data.menu.active.substr(4, 2), 10);\r\n }\r\n } else if (a_type === \"object\") {\r\n child_1 = active[\"id\"];\r\n mode = 1;\r\n }\r\n function getMenuUrl(url) {\r\n return !!url ? url.charAt(0) !== \"/\" ? _this.combineRoot(_this.combineUrl(menuData.root, url)) : _this.combineRoot(url) : \"\";\r\n }\r\n\r\n if (mode === 1) {\r\n var menu = findMenuById(child_1, menuData.data);\r\n if (menu) {\r\n menu.active = true;\r\n if (menu.menu) {\r\n menu.menu.active = true;\r\n }\r\n if (menu.parent) {\r\n menu.parent.active = true;\r\n }\r\n }\r\n }\r\n $.each(menuData.data, function (i, k) {\r\n var urlp1 = urlPara[k.id];\r\n k.href = getMenuUrl(k.href);\r\n !!urlp1 ? k.href += urlp1 : \"\";\r\n if (parent == i && parent >= 0 && child < 0) {\r\n k.active = true;\r\n }\r\n if (k.children) {\r\n $.each(k.children, function (m, n) {\r\n var urlp2 = urlPara[n.id];\r\n n.href = getMenuUrl(n.href);\r\n !!urlp2 ? n.href += urlp2 : \"\";\r\n var contain = false;\r\n if (n.children) {\r\n $.each(n.children, function (mm, nn) {\r\n if (i == parent && m == child && mm == child_1) {\r\n nn.active = true;\r\n //n.active = true;\r\n k.active = true;\r\n contain = true;\r\n }\r\n })\r\n }\r\n if (!contain) {\r\n if (i == parent && m == child) {\r\n n.active = true;\r\n k.active = true;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n _this.set(\"menuView\", junboCore.createView({\r\n id: \"menu\",\r\n menus: menuData.data,\r\n debug: initPara.debug,\r\n template: menuTmpl\r\n }));\r\n }\r\n }\r\n } else {\r\n _this.set(\"menuView\", junboCore.createView({\r\n id: \"menu\",\r\n menus: initPara.menus,\r\n debug: initPara.debug,\r\n template: menuTmpl\r\n }));\r\n }\r\n\r\n // 初始化数据绑定项\r\n // 限定输入框操作\r\n var input_limit = $(\"input[type='text'][data-type]\");\r\n junboCore.Limit = new DataFilterModel(input_limit);\r\n\r\n $(\"#cancellation\").click(function () {\r\n var d = dialog({\r\n title: \"提示\",\r\n content: \"

      是否注销?

      \",\r\n button: [{\r\n value: \"否\",\r\n callback: function () {\r\n },\r\n autofocus: true\r\n }, {\r\n value: \"是\",\r\n callback: function () {\r\n this.title(\"\");\r\n this.content(\"Loading..\");\r\n this.button([]);\r\n this.width(\"auto\");\r\n this.height(\"auto\");\r\n this.reset();\r\n _this.Service.postRText(_this.combineRoot(\"/WebService/Logout.aspx\"), null, function (callBack) {\r\n //junboCore.$$module.trigger(\"redirect\", \"logout\");\r\n junboCore.redirect(\"login\");\r\n }, function () {\r\n });\r\n return false;\r\n }\r\n }\r\n ],\r\n cancel: false\r\n }).width(480);\r\n d.showModal();\r\n });\r\n\r\n //$(\"#updatePwd\").click(function () {\r\n //});\r\n\r\n // 绑定菜单事件\r\n bindMenuEvent();\r\n\r\n // 水印控制\r\n placeholder();\r\n\r\n // 滚动控制\r\n scrollControl();\r\n\r\n // 窗口控制\r\n sizeControl();\r\n };\r\n\r\n /**\r\n * 数据过滤类\r\n * @param jquerySelector\r\n * @constructor\r\n */\r\n var DataFilterModel = function (jquerySelector) {\r\n var number_reg = /^\\d+$/;\r\n var input_flag = junboCore.browser.ieVersion <= 8 ? \"propertychange\" : \"input\";\r\n var addEvent = function ($s, type) {\r\n var $s0 = $s[0];\r\n var maxlength = parseInt($s.attr(\"limitlength\"), 10) || parseInt($s.attr(\"maxlength\"), 10) || 0;\r\n switch (type) {\r\n case \"number\":\r\n $s.bind(\"keydown\", number);\r\n junboCore.attachEvent($s0, input_flag, function () {\r\n var val = $s0.value;\r\n if (!(val || $s0.last)) {\r\n return true;\r\n }\r\n if (val == \"\") {\r\n $s0.last = \"\";\r\n return true;\r\n }\r\n var last = $s0.last || \"\";\r\n if (val != last) {\r\n if (!number_reg.test(val)) {\r\n $s0.value = last;\r\n return true;\r\n }\r\n $s0.last = val;\r\n }\r\n });\r\n break;\r\n case \"limitlength\":\r\n if (maxlength > 0) {\r\n junboCore.attachEvent($s0, input_flag, limitLength);\r\n }\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * 数字的按键绑定事件\r\n * @param event\r\n */\r\n var number = function (event) {\r\n var k = window.event ? event.keyCode : event.which;\r\n //junboCore.log(k);\r\n //junboCore.log(event);\r\n var accept = ((k >= 48) && (k <= 57)) || ( k >= 96 && k <= 105) || k == 8 || k == 0 || k == 9 || k == 116;\r\n var type = event.target.getAttribute(\"data-type\") || \"\";\r\n if (type.indexOf(\"copy\") >= 0) {\r\n accept = accept || (k == 17 || k == 86);\r\n }\r\n if (accept) {\r\n } else {\r\n if (window.event) {\r\n window.event.returnValue = false;\r\n }\r\n else {\r\n event.preventDefault(); //for firefox\r\n }\r\n }\r\n };\r\n var limitLength = function (event) {\r\n var maxLength = parseInt(event.target.maxLength, 10) || 0;\r\n var input = event.target;\r\n if (input.attributes[\"limitlength\"]) {\r\n maxLength = parseInt(input.attributes[\"limitlength\"].value, 10) || 0;\r\n }\r\n var val = input.value;\r\n if (!(val || input.last)) {\r\n return true;\r\n }\r\n if (val == \"\") {\r\n input.last = \"\";\r\n return true;\r\n }\r\n var last = input.last || \"\";\r\n if (val != last) {\r\n if (val.lengthEx() > maxLength) {\r\n input.value = last;\r\n return true;\r\n }\r\n input.last = val;\r\n }\r\n };\r\n\r\n var $source = jquerySelector;\r\n $.each($source, function (i, k) {\r\n var $k = $(k);\r\n var type = $k.attr(\"data-type\");\r\n var types = type.split(\" \");\r\n $.each(types, function (m, n) {\r\n addEvent($k, n);\r\n })\r\n });\r\n\r\n this.limit = function ($input) {\r\n junboCore.attachEvent($input, input_flag, limitLength);\r\n };\r\n\r\n this.removeLimit = function ($input) {\r\n junboCore.removeEvent($input, input_flag, limitLength);\r\n }\r\n };\r\n\r\n /**\r\n * placeholder初始化\r\n */\r\n var placeholder = function () {\r\n return;\r\n if (('placeholder' in document.createElement('input'))) return;\r\n var spanEle = $('');\r\n spanEle.css({\r\n \"color\": \"#838383\"\r\n });\r\n var findAll = $(\"input[placeholder]\");\r\n findAll.after(spanEle);\r\n $.each(findAll, function (i, k) {\r\n var $k = $(k);\r\n var id = $k.attr(\"id\");\r\n if (!id) {\r\n var gid = junboCore.guid();\r\n $k.attr(\"id\", gid);\r\n id = gid;\r\n }\r\n var text = $k.attr(\"placeholder\") || \" \";\r\n var $p = $k.find(\"+.placeholder\");\r\n $p.attr(\"id\", \"label_\" + id);\r\n $p.attr(\"default_txt\", text);\r\n $k.removeAttr(\"placeholder\");\r\n //var pos = $k.position();\r\n $p.css({\r\n left: \"-\" + ($k.outerWidth() - 10) + \"px\"\r\n //top: (pos.top + 3) + \"px\"\r\n });\r\n new placeholder(id);\r\n });\r\n\r\n\r\n function placeholder(q) {\r\n var a = junboCore;\r\n var v = \"label_\", u = document.getElementById(v + q), t = document.getElementById(q);\r\n if (!u || !t) {\r\n return;\r\n }\r\n a.addEvent(t, \"keyup\", setValue);\r\n a.addEvent(t, \"keydown\", setValue);\r\n a.addEvent(t, \"input\", setValue);\r\n a.addEvent(t, \"click\", setValue);\r\n t.onfocus = function () {\r\n this.setAttribute(\"_focus\", 1);\r\n setValue(this);\r\n color(true);\r\n };\r\n t.onblur = function () {\r\n this.removeAttribute(\"_focus\");\r\n setValue(this);\r\n color();\r\n };\r\n function color(x) {\r\n u.style.color = x ? \"#ccc\" : \"\";\r\n };\r\n function setValue() {\r\n u.innerHTML = t.value ? \" \" : u.getAttribute(\"default_txt\");\r\n u.style.color = t.value ? \"\" : \"#ccc\";\r\n };\r\n function w(y, x) {\r\n if (y.value) {\r\n x.innerHTML = \" \";\r\n }\r\n else {\r\n x.innerHTML = x.getAttribute(\"default_txt\");\r\n }\r\n };\r\n w(t, u);\r\n setTimeout(function (y, x) {\r\n return function () {\r\n w(y, x);\r\n };\r\n }(t, u), 100);\r\n setInterval(function (y, x) {\r\n return function () {\r\n w(y, x);\r\n };\r\n }(t, u), 800);\r\n }\r\n };\r\n\r\n var WaterMark = function (element, text, para) {\r\n var place = document.createElement(\"span\"),\r\n _o = $.extend({}, {\r\n cls: \"\",\r\n height: 0\r\n }, para)\r\n ;\r\n element.parentNode.insertBefore(place, element);\r\n place.className = \"w-label\" + (_o.cls ? \" \" + _o.cls : \"\");\r\n place.innerHTML = text;\r\n place.style.height = ( _o.height === 0 ? element.offsetHeight : _o.height ) + \"px\";\r\n if (_o[\"line-height\"]) {\r\n place.style.lineHeight = _o[\"line-height\"];\r\n } else {\r\n place.style.lineHeight = place.style.height;\r\n }\r\n if (_o.width) {\r\n place.style.width = _o.width + \"px\";\r\n }\r\n if (_o[\"margin-top\"]) {\r\n place.style.marginTop = _o[\"margin-top\"] + \"px\";\r\n }\r\n element.place = this;\r\n function hideIfHasValue() {\r\n //element.value &&\r\n if (place.className.indexOf(\"w-hide\") == -1) {\r\n place.className += \" w-hide\"\r\n }\r\n }\r\n\r\n function onFocus() {\r\n hideIfHasValue();\r\n if (!element.value && place.className.indexOf(\"w-active\") == -1) {\r\n place.className += \" w-active\"\r\n }\r\n }\r\n\r\n function onBlur() {\r\n if (!element.value) {\r\n place.className = place.className.replace(\" w-active\", \"\");\r\n place.className = place.className.replace(\" w-hide\", \"\")\r\n }\r\n }\r\n\r\n function onClick() {\r\n hideIfHasValue();\r\n try {\r\n element.focus && element.focus()\r\n } catch (ex) {\r\n }\r\n }\r\n\r\n //hideIfHasValue();\r\n if (element.value) {\r\n if (place.className.indexOf(\"w-hide\") == -1) {\r\n place.className += \" w-hide\"\r\n }\r\n }\r\n\r\n junboCore.addEvent(element, \"focus\", onFocus);\r\n junboCore.addEvent(element, \"blur\", onBlur);\r\n junboCore.addEvent(element, \"keydown\", hideIfHasValue);\r\n junboCore.addEvent(place, \"click\", onClick);\r\n this.unload = function () {\r\n junboCore.removeEvent(element, \"focus\", onFocus);\r\n junboCore.removeEvent(element, \"blur\", onBlur);\r\n junboCore.removeEvent(element, \"keydown\", hideIfHasValue);\r\n junboCore.removeEvent(place, \"click\", onClick);\r\n if (element[\"parentNode\"]) {\r\n element.parentNode.removeChild(place);\r\n }\r\n element.place = null\r\n };\r\n this.setText = function (text) {\r\n place.innerHTML = text;\r\n }\r\n };\r\n\r\n /**\r\n * 显示水印文字,所有兼容大部分浏览器而设\r\n * @param {String} ele 元素ID\r\n * @param {String} text 显示的水印文字\r\n * @param {String} para 参数\r\n * @param {String} para.cls 水印class\r\n */\r\n junboCore.watermark = function (ele, text, para) {\r\n var $ele = $(ele);\r\n if (junboCore.browser.support.placeholder) {\r\n $ele.attr(\"placeholder\", text);\r\n return;\r\n }\r\n var data = $ele.data(\"watermark\");\r\n if (data) {\r\n data.setText(text);\r\n } else {\r\n var e = ele;\r\n if (e.indexOf(\"#\") === 0) {\r\n e = window[e.substr(1, e.length - 1)];\r\n }\r\n $ele.data(\"watermark\", new WaterMark(e, text, para))\r\n }\r\n };\r\n\r\n /**\r\n * 滚动控制\r\n */\r\n var scrollControl = function () {\r\n if (window[\"container\"]) {\r\n try {\r\n var offsetTop = $(\"#container > .right\").offset().top;\r\n var $menu = $(\"#container > .left > .menu\");\r\n $(window).scroll(function () {\r\n var top = $(this).scrollTop();\r\n if ($menu.data(\"fixed\")) {\r\n if (top < offsetTop) {\r\n $menu.data(\"fixed\", false);\r\n $menu.removeAttr(\"style\");\r\n }\r\n return;\r\n }\r\n if (top >= offsetTop) {\r\n $menu.data(\"fixed\", true);\r\n $menu.css({\"position\": \"fixed\", \"top\": \"0\"});\r\n changeMenu();\r\n }\r\n });\r\n } catch (err) {\r\n\r\n }\r\n }\r\n };\r\n\r\n var changeMenu = function () {\r\n var $menu = $(\"#container > .left > .menu\");\r\n var height = $(window).outerHeight() - 42;\r\n if (height > 0) {\r\n if (height < 640) {\r\n $menu.css(\"height\", height + \"px\");\r\n } else {\r\n $menu.css(\"height\", \"640px\");\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 窗体大小控制\r\n */\r\n var sizeControl = function () {\r\n $(window).resizeend(function () {\r\n changeMenu();\r\n });\r\n };\r\n return junboCore;\r\n}(jQuery, JunboCore));\r\n","/**\r\n * ready 启动器 包含 init 及 ready\r\n * Created by tangfan on 2015/8/31.\r\n * 2015-09-22 新增 readyInner 。此值在page.js 或者 init.js中设置 使ready时,内部调用\r\n */\r\nvar JunboCore = (function ($, junboCore) {\r\n junboCore.Limit = null;//限制类\r\n\r\n /**\r\n * 隐藏页面的遮罩层\r\n * 通常只有在调用了检测该用户是否在线的接口返回后,才调用此方法\r\n * @param {Object} para\r\n * @param {Function} para.completed 遮罩删除完成事件\r\n */\r\n junboCore.layerOut = function (para) {\r\n var layer = $(\".layer\");\r\n if (layer != \"undefined\") {\r\n layer.fadeOut(\"slow\", function () {\r\n layer.remove();\r\n if (typeof para == \"undefined\") return junboCore;\r\n if (typeof para[\"completed\"] != \"undefined\") {\r\n if (para.completed instanceof Function) {\r\n para.completed();\r\n }\r\n }\r\n });\r\n }\r\n return junboCore;\r\n };\r\n\r\n /**\r\n * 显示遮罩层\r\n * @param para\r\n * @param {Function} para.completed 遮罩载入完成\r\n */\r\n junboCore.layerIn = function (para) {\r\n $(\"body\").append(\"\")\r\n $(\".layer\").fadeIn(\"slow\", function () {\r\n if (typeof para == \"undefined\") return junboCore;\r\n if (typeof para[\"completed\"] != \"undefined\") {\r\n if (para.completed instanceof Function) {\r\n para.completed();\r\n }\r\n }\r\n junboCore.log(\"显示了遮罩层!\");\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * 初始化参数默认值\r\n * @type {{debug: boolean, userInfo: {userName: string, organization: string, role: string}, footer: {version: string, company: string}, menus: {}, action: null}}\r\n */\r\n var initPara = {\r\n /**\r\n * 是否输出Debug信息\r\n */\r\n debug: false,\r\n autoHideLayer: true,\r\n /**\r\n * 用户的基本信息\r\n * id : 填充到的div id\r\n * userName : 用户名称\r\n * organization : 用户组织\r\n * role : 用户角色\r\n */\r\n userInfo: {},\r\n /**\r\n * 底部公司及版本显示\r\n */\r\n footer: {\r\n version: \"当前版本:v1.0.213.20150530\",\r\n company: \"© 广州骏伯网络科技有限公司\"\r\n },\r\n /**\r\n * 导航菜单\r\n */\r\n navMenus: {},\r\n /**\r\n * menu内部元素变量如下\r\n * name {String} : 菜单标题\r\n * active {Boolean} : 是否为选中\r\n * href {String} : 点击跳转地址\r\n * children {Array:Menu} : 子菜单 同样包含name 、active 以及 href\r\n */\r\n menus: {},\r\n service: {},\r\n /**\r\n * 其它初始化执行的操作\r\n */\r\n action: null,\r\n /**\r\n * 图标加载\r\n */\r\n icon: {\r\n use: true\r\n },\r\n /**\r\n * 默认启用service.json\r\n */\r\n useService: \"###userService###\",\r\n /**\r\n * 是否需要检查session\r\n */\r\n session: {\r\n url: \"/WebService/Session.aspx\"\r\n }\r\n };\r\n var initCompleted = false;\r\n var initDoing = false;\r\n var noInit = false;\r\n /**\r\n * 时间控件初始化\r\n * 根据需求\r\n * 在鼠标悬停时,显示清空按钮\r\n */\r\n var timeInputInit = function () {\r\n var findAll = $(\"input[ctrl-style='time']\")//找到所有时间控件\r\n ;\r\n if (findAll.length > 0) {\r\n $.each(findAll, function (i, k) {\r\n var $k = $(k);\r\n $k.css(\"padding-right\", \"20px\");\r\n var float = $k.css(\"float\"),\r\n height = $k.outerHeight(),\r\n width = $k.outerWidth(),\r\n ml = (function (ml) {\r\n var m = ml.match(/\\d+/);\r\n if (m.length > 0) {\r\n return ~~m[0];\r\n }\r\n })($k.css(\"margin-left\")),\r\n position = $k.position(),\r\n tips = $k.attr(\"ctrl-tips\") || \"清除\",\r\n ctrl = \"\",\r\n data = {\r\n float: float,\r\n position: \"absolute\",\r\n top: position.top + height / 2 - 9,\r\n left: position.left + width - 20 + ml,\r\n tips: tips//提示内容\r\n },\r\n getStyle = function () {\r\n return {\r\n top: $k.position().top + $k.outerHeight() / 2 - 9,\r\n left: $k.position().left + $k.outerWidth() - 20 + ml\r\n }\r\n }\r\n ;\r\n $k.after(junboCore.tmplHtml(ctrl, data));\r\n //var eventChangeFlag = !junboCore.browser.isIE ? \"input\" : \"propertychange\";\r\n //junboCore.attachEvent(k, eventChangeFlag, function () {\r\n // console.log(arguments);\r\n //});\r\n $(\"body\").on(\"click\", \".time-close\", function () {\r\n var $t = $(this);\r\n try {\r\n $t.prev(\"input[ctrl-style='time']\").datepicker(\"update\", \"\");\r\n } catch (err) {\r\n junboCore.log(err);\r\n }\r\n $t.toggle(false);\r\n });\r\n var isover = false;\r\n $k.on({\r\n \"mouseover\": function (event) { //changeDate改变时间时\r\n if (!event.target.value) return;\r\n isover = true;\r\n var style = getStyle();\r\n $k.next(\".time-close\").css({\r\n left: style.left,\r\n top: style.top\r\n }).toggle(true)\r\n },\r\n \"mouseout\": function (e) {\r\n var $next = $k.next(\".time-close\"),\r\n stt = null,\r\n timeout = function () {\r\n if (stt != null) {\r\n clearTimeout(stt);\r\n stt = null;\r\n }\r\n stt = setTimeout(function () {\r\n if (!isover) {\r\n $k.next(\".time-close\").toggle(false);\r\n isover = false;\r\n }\r\n }, 400);\r\n }\r\n ;\r\n isover = false;\r\n $next.one(\"mouseover\", function () {\r\n isover = true;\r\n }).one(\"mouseout\", function () {\r\n isover = false;\r\n timeout();\r\n });\r\n timeout();\r\n }\r\n })\r\n });\r\n } else {\r\n junboCore.log(\"can not find time ctrl.\");\r\n }\r\n };\r\n /**\r\n * 所有输入框输出焦点时,自动显示错误\r\n * msg align delay check(有值即可,开启检测) checkEmpty:true/*false 是否检测空值\r\n */\r\n var inputBlurInit = function () {\r\n var InputBlurModel = (function () {\r\n function InputModel() {\r\n function msg(id, para) {\r\n return junboCore.window.scrollTo(\".right\", id, function (callback) {\r\n var d = dialog({\r\n content: para.msg,\r\n quickClose: true,\r\n align: para.align || \"left\",\r\n autofocus: false\r\n });\r\n d.show(document.getElementById(id));\r\n if (!para.nofocus) {\r\n $(\"#\" + id).focus();\r\n }\r\n setTimeout(function () {\r\n d.close().remove();\r\n if (junboCore.isFunction(callback)) {\r\n callback();\r\n }\r\n }, para.delay);\r\n }, {y: 100});\r\n }\r\n\r\n $(\"body\").on(\"blur\", \"input\", function (event) {\r\n var $target = $(event.target),\r\n para = {\r\n msg: \"必填项信息有误,请检查\",\r\n align: \"left\",\r\n delay: 2000,\r\n nofocus: true,\r\n check: false\r\n };\r\n\r\n function delayFunc() {\r\n var _msg = $target.attr(\"msg\");\r\n if (_msg) para.msg = _msg;\r\n var align = $target.attr(\"align\");\r\n if (align) para.align = align;\r\n var delay = ~~$target.attr(\"delay\");\r\n if (delay) {\r\n para.delay = delay;\r\n }\r\n var check = $target.attr(\"check\");\r\n if (!check) return;\r\n para.check = true;\r\n var checkEmpty = $target.attr(\"checkEmpty\") === \"true\";\r\n if (!checkEmpty) {\r\n if (!$target.val()) {\r\n return;\r\n }\r\n }\r\n var id = $target.attr(\"id\");\r\n var $parent = $target.parent();\r\n if (id && !$target.check()) {\r\n // 检测该元素的父级在100毫秒内如果仍然是显示状态,才显示提示内容\r\n setTimeout(function () {\r\n if (!$parent.is(\":hidden\")) {\r\n msg(id, para);\r\n }\r\n }, 100)\r\n } else {\r\n junboCore.log(\"ele none id or check out of, input blur dis.\");\r\n }\r\n }\r\n\r\n setTimeout(function () {\r\n if ($target.data(\"check-click\")) return;\r\n delayFunc();\r\n }, 200)\r\n })\r\n }\r\n\r\n return new InputModel();\r\n })();\r\n return InputBlurModel;\r\n };\r\n\r\n /**\r\n * 初始化\r\n * @param para\r\n * @param {Boolean} para.debug debug状态\r\n * @param {Object} para.footer 底部渲染\r\n * @param {String} para.footer.version 版本号\r\n * @param {String} para.footer.company 公司名称\r\n * @param {Object} para.menu 新左侧菜单设置项\r\n * @param {String} para.menu.id 菜单选择ID\r\n * @param {Number} para.menu.active 菜单选择数字项 第一位为父级 第二位为子级\r\n * @param {Object} para.menu.urlPara 菜单参数\r\n * @param {String} para.menu.urlPara.id 指定ID 由内部定义\r\n * @param {Array} para.menus 左侧菜单栏显示菜单\r\n * @param {String} para.menus[].name 菜单标题\r\n * @param {String} para.menus[].active 是否为选中\r\n * @param {String} para.menus[].href 点击菜单跳转地址\r\n * @param {Array} para.menus[].children 子菜单\r\n * @param {String} para.menus[].children[].name 菜单标题\r\n * @param {String} para.menus[].children[].active 是否为选中\r\n * @param {String} para.menus[].children[].href 点击菜单跳转地址\r\n * @param {Object} para.navMenus 顶部菜单栏显示\r\n * @param {String} para.navMenus.id 默认ID为nav-menu的ul标签\r\n * @param {Number} para.navMenus.active 第几项为选中 初始化值为0\r\n * @param {Array} para.navMenus.data 顶部菜单栏菜单项目\r\n * @param {String} para.navMenus.data[].name 菜单标题\r\n * @param {String} para.navMenus.data[].active 是否为选中\r\n * @param {String} para.navMenus.data[].href 点击菜单跳转地址\r\n * @param {Object} para.service 服务参数\r\n * @param {String} para.service.url 服务转发地址\r\n * @param {String} para.service.key 关键KEY\r\n * @param {String} para.service.clientVer 客户端版本\r\n * @param {Function} para.active 在界面渲染完成后触发的事件\r\n * @param {Boolean} para.noInit 不初始化\r\n * @param {Object} para.root 根地址定义\r\n * @param {String} para.root.url 重定义ROOT地址\r\n * @param {String} para.root.id 根关键ID 默认值 self\r\n * @param {String} para.root.useRoot 是否使用ROOT 默认值:是\r\n * @param {Object} para.icon 图标\r\n * @param {Boolean} para.use 是否使用? true 为是\r\n * @param {String} para.iconUrl 图标地址\r\n * @returns {*}\r\n */\r\n junboCore.init = function (para) {\r\n if (initDoing) return junboCore;\r\n if (!initCompleted) {\r\n // 事件绑定\r\n // 用于显示公有界面内容\r\n junboCore.$$module.bind(\"dataChange\", function (event, obj) {\r\n if (obj != \"undefined\" && typeof obj.flag != \"undefined\") {\r\n if (typeof obj.target.render != \"undefined\") {\r\n obj.target.render.call(obj.target);\r\n }\r\n }\r\n }).bind(\"redirect\", function (event, obj) {\r\n switch (obj) {\r\n case \"login\":\r\n //$.cookie(\"redirect\", top.location.href.replace(data.httpRoot, \"\"), {expires: 1 / 24});\r\n break;\r\n case \"logout\":\r\n //$.cookie(\"redirect\", \"\", {expires: -1});\r\n break;\r\n }\r\n junboCore.redirect(\"login\");\r\n return _this;\r\n });\r\n\r\n var _this = junboCore;\r\n var isLogin = !!para[\"isLogin\"];\r\n var debug = !!para && para.hasOwnProperty(\"debug\") ? initPara.debug : /http:\\/\\/(localhost|127.0.0.1)/.test(window.location.href.toString());\r\n initPara.debug = debug;\r\n initPara.isLogin = isLogin;\r\n initDoing = true;\r\n initPara = junboCore.viewInit($.extend({}, initPara, para));\r\n noInit = initPara.noInit;\r\n function start() {\r\n var data = junboCore.get();\r\n _this.log(data);\r\n var v_root = initPara[\"root\"];\r\n if (v_root) {\r\n var obj_root = v_root;\r\n if (obj_root.hasOwnProperty(\"id\")) {\r\n data.rootFlag = obj_root.id;\r\n if (debug) {\r\n if (data.root.hasOwnProperty(obj_root.id)) {\r\n if (obj_root.hasOwnProperty(\"url\")) {\r\n if ($.trim(obj_root.url) != \"\") {\r\n data.root[obj_root.id] = obj_root.url;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (debug) {\r\n if (obj_root.hasOwnProperty(\"url\")) {\r\n if ($.trim(obj_root.url) != \"\") {\r\n data.root[data.rootFlag] = obj_root.url;\r\n }\r\n }\r\n }\r\n }\r\n $.each(obj_root, function (i, k) {\r\n if (i != \"url\" && i != \"id\") {\r\n //if (data.root.hasOwnProperty(i)) {\r\n data.root[i] = k;\r\n //}\r\n }\r\n });\r\n if (obj_root.hasOwnProperty(\"useRoot\")) {\r\n data.useRoot = obj_root[\"useRoot\"];\r\n }\r\n _this.log(data.root);\r\n _this.log(\"当前使用路径ID:\" + data.rootFlag);\r\n if (typeof data.httpRoot === \"string\") {\r\n _this.log(\"当前使用根路径:\" + data.httpRoot);\r\n } else {\r\n var root_str = \"\";\r\n for (var ss in data.httpRoot) {\r\n root_str += ss + \": \" + data.httpRoot[ss] + \"\\r\\n\";\r\n }\r\n _this.log(\"当前使用根路径:\\r\\n\" + root_str);\r\n }\r\n }\r\n _this.Service = _this.createService(initPara.service);\r\n\t\t\t\t\t_this.ajax = _this.Service.ajax;\r\n $(document).ready(function () {\r\n try {\r\n var init_ = function () {\r\n if (!noInit && _this.pageInit) {\r\n _this.pageInit(initPara);\r\n }\r\n\r\n // 最后执行尾操作\r\n try {\r\n //placeholder();//兼容IE\r\n timeInputInit();\r\n inputBlurInit();//\r\n // 跳转至激活的菜单处\r\n var currentMenu = $(\".left .child-menu.select\");\r\n if (currentMenu.length === 0) {\r\n currentMenu = $(\".left .title.select\");\r\n if (currentMenu.length === 0) {\r\n currentMenu = null;\r\n }\r\n }\r\n if (currentMenu) {\r\n junboCore.window.scrollTo(\".left\", currentMenu);\r\n }\r\n if (initPara.action instanceof Function) {\r\n initPara.action();\r\n }\r\n } catch (err) {\r\n _this.log(err);\r\n if (data.config.debug) {\r\n alert(\"启动参数:active,存在错误,请检查数据!\");\r\n }\r\n }\r\n if (typeof initPara[\"icon\"] === \"object\") {\r\n var icon = initPara[\"icon\"];\r\n if (icon[\"use\"]) {\r\n var href = icon[\"iconUrl\"] || junboCore.combineRoot(\"favicon.png\");\r\n $(\"head\").append('');\r\n }\r\n }\r\n initCompleted = true;\r\n _this.log(\"JunboCore初始化完成!\");\r\n };\r\n if (initPara.session) { //initPara.session取消调用session\r\n var timeOut = setTimeout(function () {\r\n $(\".layer\").html(\"网络有点慢,请稍候...\");\r\n }, 3000);\r\n _this.Service.postRText(_this.combineRoot(initPara.session.url), null, function (callBack) {\r\n clearTimeout(timeOut);\r\n if (callBack != \"None Uid\") {\r\n if (isLogin) {\r\n junboCore.redirect(\"index\");\r\n } else {\r\n //if (!debug) {\r\n // data.httpRoot = /http/.test(callBack) ? callBack : \"http://www.liulianglf.com/\";\r\n //}\r\n init_();\r\n }\r\n } else {\r\n init_();\r\n if (!isLogin) {\r\n junboCore.redirect(\"login\");\r\n }\r\n }\r\n }, function (error) {\r\n $(\".layer\").html(error.Msg);\r\n });\r\n } else {\r\n //if (!junboCore.get(\"userEntity\")) {\r\n // junboCore.redirect(\"login\");\r\n //} else {\r\n init_();\r\n //}\r\n }\r\n } catch (err) {\r\n _this.log(\"JunboCore初始化失败!\");\r\n _this.log(err);\r\n }\r\n });\r\n }\r\n\r\n if (initPara.useService) {\r\n $.getJSON(\"/service.json\", function (d, s) {\r\n if (d) {\r\n junboCore.set($.extend({}, junboCore.get(), d));\r\n }\r\n start();\r\n }).fail(function () {\r\n start();\r\n });\r\n } else {\r\n start();\r\n }\r\n }\r\n return junboCore;\r\n };\r\n\r\n /**\r\n * 是否准备完成\r\n * @param {Function} func 启动\r\n */\r\n junboCore.ready = function (func) {\r\n var _this = junboCore;\r\n _this.init();\r\n var data = junboCore.get();\r\n if (func instanceof Function) {\r\n function readyInner() {\r\n if (junboCore.getType(junboCore[\"readyInner\"]) === \"function\") {\r\n junboCore[\"readyInner\"].call(junboCore);\r\n }\r\n }\r\n\r\n if (!initCompleted) {\r\n _this.log(\"等待JunboCore初始化完成!\");\r\n var wait = setInterval(function () {\r\n if (initCompleted) {\r\n clearInterval(wait);\r\n if (!noInit) {\r\n if (data.config.hasOwnProperty(\"autoHideLayer\")) {\r\n if (data.config.autoHideLayer) {\r\n _this.layerOut();\r\n }\r\n } else {\r\n _this.layerOut();\r\n }\r\n }\r\n //var userDebug = junboCore.get(\"url\", \"debug\");\r\n //if (userDebug !== undefined) {\r\n // junboCore.set(\"config\", {debug: userDebug === \"true\"});\r\n //}\r\n readyInner();\r\n func.call(junboCore);\r\n }\r\n }, 200);\r\n } else {\r\n readyInner();\r\n func.call(junboCore);\r\n }\r\n }\r\n return _this;\r\n };\r\n\r\n return junboCore;\r\n }(jQuery || Zepto, JunboCore || {})\r\n);"],"sourceRoot":"./"}