2014-09-03 19:25:32 +08:00
var Zepto = function ( ) { function a ( a ) { return null == a ? String ( a ) : L [ R . call ( a ) ] || "object" } function b ( b ) { return "function" == a ( b ) } function c ( a ) { return null != a && a == a . window } function d ( a ) { return null != a && a . nodeType == a . DOCUMENT _NODE } function e ( b ) { return "object" == a ( b ) } function f ( a ) { return e ( a ) && ! c ( a ) && Object . getPrototypeOf ( a ) == Object . prototype } function g ( a ) { return "number" == typeof a . length } function n ( a ) { return z . call ( a , function ( a ) { return null != a } ) } function l ( a ) { return a . replace ( /::/g , "/" ) . replace ( /([A-Z]+)([A-Z][a-z])/g ,
"$1_$2" ) . replace ( /([a-z\d])([A-Z])/g , "$1_$2" ) . replace ( /_/g , "-" ) . toLowerCase ( ) } function p ( a ) { return a in E ? E [ a ] : E [ a ] = RegExp ( "(^|\\s)" + a + "(\\s|$)" ) } function A ( a ) { return "children" in a ? x . call ( a . children ) : h . map ( a . childNodes , function ( a ) { if ( 1 == a . nodeType ) return a } ) } function k ( a , b , c ) { for ( w in b ) c && ( f ( b [ w ] ) || H ( b [ w ] ) ) ? ( f ( b [ w ] ) && ! f ( a [ w ] ) && ( a [ w ] = { } ) , H ( b [ w ] ) && ! H ( a [ w ] ) && ( a [ w ] = [ ] ) , k ( a [ w ] , b [ w ] , c ) ) : b [ w ] !== s && ( a [ w ] = b [ w ] ) } function y ( a , b ) { return null == b ? h ( a ) : h ( a ) . filter ( b ) } function m ( a , c , d , e ) { return b ( c ) ? c . call ( a , d ,
e ) : c } function u ( a , b ) { var c = a . className || "" , d = c && c . baseVal !== s ; if ( b === s ) return d ? c . baseVal : c ; d ? c . baseVal = b : a . className = b } function q ( a ) { var b ; try { return a ? "true" == a || ( "false" == a ? ! 1 : "null" == a ? null : ! /^0/ . test ( a ) && ! isNaN ( b = Number ( a ) ) ? b : /^[\[\{]/ . test ( a ) ? h . parseJSON ( a ) : a ) : a } catch ( c ) { return a } } function B ( a , b ) { b ( a ) ; for ( var c = 0 , d = a . childNodes . length ; c < d ; c ++ ) B ( a . childNodes [ c ] , b ) } var s , w , h , D , v = [ ] , x = v . slice , z = v . filter , r = window . document , F = { } , E = { } , G = { "column-count" : 1 , columns : 1 , "font-weight" : 1 , "line-height" : 1 , opacity : 1 ,
"z-index" : 1 , zoom : 1 } , I = /^\s*<(\w+|!)[^>]*>/ , S = /^<(\w+)\s*\/?>(?:<\/\1>|)$/ , T = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig , N = /^(?:body|html)$/i , U = /([A-Z])/g , V = "val css html text data width height offset" . split ( " " ) , M = r . createElement ( "table" ) , O = r . createElement ( "tr" ) , P = { tr : r . createElement ( "tbody" ) , tbody : M , thead : M , tfoot : M , td : O , th : O , "*" : r . createElement ( "div" ) } , W = /complete|loaded|interactive/ , X = /^[\w-]*$/ , L = { } , R = L . toString , C = { } , J , K , Q = r . createElement ( "div" ) , Y = { tabindex : "tabIndex" ,
2014-08-21 13:42:42 +08:00
readonly : "readOnly" , "for" : "htmlFor" , "class" : "className" , maxlength : "maxLength" , cellspacing : "cellSpacing" , cellpadding : "cellPadding" , rowspan : "rowSpan" , colspan : "colSpan" , usemap : "useMap" , frameborder : "frameBorder" , contenteditable : "contentEditable" } , H = Array . isArray || function ( a ) { return a instanceof Array } ; C . matches = function ( a , b ) { if ( ! b || ! a || 1 !== a . nodeType ) return ! 1 ; var c = a . webkitMatchesSelector || a . mozMatchesSelector || a . oMatchesSelector || a . matchesSelector ; if ( c ) return c . call ( a , b ) ; var d ; d = a . parentNode ; ( c = ! d ) &&
2014-09-03 19:25:32 +08:00
( d = Q ) . appendChild ( a ) ; d = ~ C . qsa ( d , b ) . indexOf ( a ) ; c && Q . removeChild ( a ) ; return d } ; J = function ( a ) { return a . replace ( /-+(.)?/g , function ( a , b ) { return b ? b . toUpperCase ( ) : "" } ) } ; K = function ( a ) { return z . call ( a , function ( b , c ) { return a . indexOf ( b ) == c } ) } ; C . fragment = function ( a , b , c ) { var d , e , g ; S . test ( a ) && ( d = h ( r . createElement ( RegExp . $1 ) ) ) ; d || ( a . replace && ( a = a . replace ( T , "<$1></$2>" ) ) , b === s && ( b = I . test ( a ) && RegExp . $1 ) , b in P || ( b = "*" ) , g = P [ b ] , g . innerHTML = "" + a , d = h . each ( x . call ( g . childNodes ) , function ( ) { g . removeChild ( this ) } ) ) ; f ( c ) && ( e =
h ( d ) , h . each ( c , function ( a , b ) { if ( - 1 < V . indexOf ( a ) ) e [ a ] ( b ) ; else e . attr ( a , b ) } ) ) ; return d } ; C . Z = function ( a , b ) { a = a || [ ] ; a . _ _proto _ _ = h . fn ; a . selector = b || "" ; return a } ; C . isZ = function ( a ) { return a instanceof C . Z } ; C . init = function ( a , c ) { var d ; if ( a ) if ( "string" == typeof a ) if ( a = a . trim ( ) , "<" == a [ 0 ] && I . test ( a ) ) d = C . fragment ( a , RegExp . $1 , c ) , a = null ; else { if ( c !== s ) return h ( c ) . find ( a ) ; d = C . qsa ( r , a ) } else { if ( b ( a ) ) return h ( r ) . ready ( a ) ; if ( C . isZ ( a ) ) return a ; if ( H ( a ) ) d = n ( a ) ; else if ( e ( a ) ) d = [ a ] , a = null ; else if ( I . test ( a ) ) d = C . fragment ( a . trim ( ) ,
RegExp . $1 , c ) , a = null ; else { if ( c !== s ) return h ( c ) . find ( a ) ; d = C . qsa ( r , a ) } } else return C . Z ( ) ; return C . Z ( d , a ) } ; h = function ( a , b ) { return C . init ( a , b ) } ; h . extend = function ( a ) { var b , c = x . call ( arguments , 1 ) ; "boolean" == typeof a && ( b = a , a = c . shift ( ) ) ; c . forEach ( function ( c ) { k ( a , c , b ) } ) ; return a } ; C . qsa = function ( a , b ) { var c , e = "#" == b [ 0 ] , f = ! e && "." == b [ 0 ] , r = e || f ? b . slice ( 1 ) : b , g = X . test ( r ) ; return d ( a ) && g && e ? ( c = a . getElementById ( r ) ) ? [ c ] : [ ] : 1 !== a . nodeType && 9 !== a . nodeType ? [ ] : x . call ( g && ! e ? f ? a . getElementsByClassName ( r ) : a . getElementsByTagName ( b ) :
a . querySelectorAll ( b ) ) } ; h . contains = r . documentElement . contains ? function ( a , b ) { return a !== b && a . contains ( b ) } : function ( a , b ) { for ( ; b && ( b = b . parentNode ) ; ) if ( b === a ) return ! 0 ; return ! 1 } ; h . type = a ; h . isFunction = b ; h . isWindow = c ; h . isArray = H ; h . isPlainObject = f ; h . isEmptyObject = function ( a ) { for ( var b in a ) return ! 1 ; return ! 0 } ; h . inArray = function ( a , b , c ) { return v . indexOf . call ( b , a , c ) } ; h . camelCase = J ; h . trim = function ( a ) { return null == a ? "" : String . prototype . trim . call ( a ) } ; h . uuid = 0 ; h . support = { } ; h . expr = { } ; h . map = function ( a , b ) { var c , d = [ ] ,
e ; if ( g ( a ) ) for ( e = 0 ; e < a . length ; e ++ ) c = b ( a [ e ] , e ) , null != c && d . push ( c ) ; else for ( e in a ) c = b ( a [ e ] , e ) , null != c && d . push ( c ) ; return 0 < d . length ? h . fn . concat . apply ( [ ] , d ) : d } ; h . each = function ( a , b ) { var c ; if ( g ( a ) ) for ( c = 0 ; c < a . length && ! 1 !== b . call ( a [ c ] , c , a [ c ] ) ; c ++ ) ; else for ( c in a ) if ( ! 1 === b . call ( a [ c ] , c , a [ c ] ) ) break ; return a } ; h . grep = function ( a , b ) { return z . call ( a , b ) } ; window . JSON && ( h . parseJSON = JSON . parse ) ; h . each ( "Boolean Number String Function Array Date RegExp Object Error" . split ( " " ) , function ( a , b ) { L [ "[object " + b + "]" ] = b . toLowerCase ( ) } ) ;
h . fn = { forEach : v . forEach , reduce : v . reduce , push : v . push , sort : v . sort , indexOf : v . indexOf , concat : v . concat , map : function ( a ) { return h ( h . map ( this , function ( b , c ) { return a . call ( b , c , b ) } ) ) } , slice : function ( ) { return h ( x . apply ( this , arguments ) ) } , ready : function ( a ) { W . test ( r . readyState ) && r . body ? a ( h ) : r . addEventListener ( "DOMContentLoaded" , function ( ) { a ( h ) } , ! 1 ) ; return this } , get : function ( a ) { return a === s ? x . call ( this ) : this [ 0 <= a ? a : a + this . length ] } , toArray : function ( ) { return this . get ( ) } , size : function ( ) { return this . length } , remove : function ( ) { return this . each ( function ( ) { null !=
this . parentNode && this . parentNode . removeChild ( this ) } ) } , each : function ( a ) { v . every . call ( this , function ( b , c ) { return ! 1 !== a . call ( b , c , b ) } ) ; return this } , filter : function ( a ) { return b ( a ) ? this . not ( this . not ( a ) ) : h ( z . call ( this , function ( b ) { return C . matches ( b , a ) } ) ) } , add : function ( a , b ) { return h ( K ( this . concat ( h ( a , b ) ) ) ) } , is : function ( a ) { return 0 < this . length && C . matches ( this [ 0 ] , a ) } , not : function ( a ) { var c = [ ] ; if ( b ( a ) && a . call !== s ) this . each ( function ( b ) { a . call ( this , b ) || c . push ( this ) } ) ; else { var d = "string" == typeof a ? this . filter ( a ) :
g ( a ) && b ( a . item ) ? x . call ( a ) : h ( a ) ; this . forEach ( function ( a ) { 0 > d . indexOf ( a ) && c . push ( a ) } ) } return h ( c ) } , has : function ( a ) { return this . filter ( function ( ) { return e ( a ) ? h . contains ( this , a ) : h ( this ) . find ( a ) . size ( ) } ) } , eq : function ( a ) { return - 1 === a ? this . slice ( a ) : this . slice ( a , + a + 1 ) } , first : function ( ) { var a = this [ 0 ] ; return a && ! e ( a ) ? a : h ( a ) } , last : function ( ) { var a = this [ this . length - 1 ] ; return a && ! e ( a ) ? a : h ( a ) } , find : function ( a ) { var b = this ; return a ? "object" == typeof a ? h ( a ) . filter ( function ( ) { var a = this ; return v . some . call ( b , function ( b ) { return h . contains ( b ,
a ) } ) } ) : 1 == this . length ? h ( C . qsa ( this [ 0 ] , a ) ) : this . map ( function ( ) { return C . qsa ( this , a ) } ) : [ ] } , closest : function ( a , b ) { var c = this [ 0 ] , e = ! 1 ; for ( "object" == typeof a && ( e = h ( a ) ) ; c && ! ( e ? 0 <= e . indexOf ( c ) : C . matches ( c , a ) ) ; ) c = c !== b && ! d ( c ) && c . parentNode ; return h ( c ) } , parents : function ( a ) { for ( var b = [ ] , c = this ; 0 < c . length ; ) c = h . map ( c , function ( a ) { if ( ( a = a . parentNode ) && ! d ( a ) && 0 > b . indexOf ( a ) ) return b . push ( a ) , a } ) ; return y ( b , a ) } , parent : function ( a ) { return y ( K ( this . pluck ( "parentNode" ) ) , a ) } , children : function ( a ) { return y ( this . map ( function ( ) { return A ( this ) } ) ,
a ) } , contents : function ( ) { return this . map ( function ( ) { return x . call ( this . childNodes ) } ) } , siblings : function ( a ) { return y ( this . map ( function ( a , b ) { return z . call ( A ( b . parentNode ) , function ( a ) { return a !== b } ) } ) , a ) } , empty : function ( ) { return this . each ( function ( ) { this . innerHTML = "" } ) } , pluck : function ( a ) { return h . map ( this , function ( b ) { return b [ a ] } ) } , show : function ( ) { return this . each ( function ( ) { "none" == this . style . display && ( this . style . display = "" ) ; if ( "none" == getComputedStyle ( this , "" ) . getPropertyValue ( "display" ) ) { var a = this . style ,
b = this . nodeName , c , d ; F [ b ] || ( c = r . createElement ( b ) , r . body . appendChild ( c ) , d = getComputedStyle ( c , "" ) . getPropertyValue ( "display" ) , c . parentNode . removeChild ( c ) , "none" == d && ( d = "block" ) , F [ b ] = d ) ; a . display = F [ b ] } } ) } , replaceWith : function ( a ) { return this . before ( a ) . remove ( ) } , wrap : function ( a ) { var c = b ( a ) ; if ( this [ 0 ] && ! c ) var d = h ( a ) . get ( 0 ) , e = d . parentNode || 1 < this . length ; return this . each ( function ( b ) { h ( this ) . wrapAll ( c ? a . call ( this , b ) : e ? d . cloneNode ( ! 0 ) : d ) } ) } , wrapAll : function ( a ) { if ( this [ 0 ] ) { h ( this [ 0 ] ) . before ( a = h ( a ) ) ; for ( var b ; ( b =
2014-09-01 13:50:43 +08:00
a . children ( ) ) . length ; ) a = b . first ( ) ; h ( a ) . append ( this ) } return this } , wrapInner : function ( a ) { var c = b ( a ) ; return this . each ( function ( b ) { var d = h ( this ) , e = d . contents ( ) ; b = c ? a . call ( this , b ) : a ; e . length ? e . wrapAll ( b ) : d . append ( b ) } ) } , unwrap : function ( ) { this . parent ( ) . each ( function ( ) { h ( this ) . replaceWith ( h ( this ) . children ( ) ) } ) ; return this } , clone : function ( ) { return this . map ( function ( ) { return this . cloneNode ( ! 0 ) } ) } , hide : function ( ) { return this . css ( "display" , "none" ) } , toggle : function ( a ) { return this . each ( function ( ) { var b = h ( this ) ;
2014-09-03 19:25:32 +08:00
( a === s ? "none" == b . css ( "display" ) : a ) ? b . show ( ) : b . hide ( ) } ) } , prev : function ( a ) { return h ( this . pluck ( "previousElementSibling" ) ) . filter ( a || "*" ) } , next : function ( a ) { return h ( this . pluck ( "nextElementSibling" ) ) . filter ( a || "*" ) } , html : function ( a ) { return 0 in arguments ? this . each ( function ( b ) { var c = this . innerHTML ; h ( this ) . empty ( ) . append ( m ( this , a , b , c ) ) } ) : 0 in this ? this [ 0 ] . innerHTML : null } , text : function ( a ) { return 0 in arguments ? this . each ( function ( b ) { b = m ( this , a , b , this . textContent ) ; this . textContent = null == b ? "" : "" + b } ) : 0 in this ?
this [ 0 ] . textContent : null } , attr : function ( a , b ) { var c ; return "string" == typeof a && ! ( 1 in arguments ) ? ! this . length || 1 !== this [ 0 ] . nodeType ? s : ! ( c = this [ 0 ] . getAttribute ( a ) ) && a in this [ 0 ] ? this [ 0 ] [ a ] : c : this . each ( function ( c ) { if ( 1 === this . nodeType ) if ( e ( a ) ) for ( w in a ) { var d = w ; c = a [ w ] ; null == c ? this . removeAttribute ( d ) : this . setAttribute ( d , c ) } else d = a , c = m ( this , b , c , this . getAttribute ( a ) ) , null == c ? this . removeAttribute ( d ) : this . setAttribute ( d , c ) } ) } , removeAttr : function ( a ) { return this . each ( function ( ) { 1 === this . nodeType && this . removeAttribute ( a ) } ) } ,
prop : function ( a , b ) { a = Y [ a ] || a ; return 1 in arguments ? this . each ( function ( c ) { this [ a ] = m ( this , b , c , this [ a ] ) } ) : this [ 0 ] && this [ 0 ] [ a ] } , data : function ( a , b ) { var c = "data-" + a . replace ( U , "-$1" ) . toLowerCase ( ) , c = 1 in arguments ? this . attr ( c , b ) : this . attr ( c ) ; return null !== c ? q ( c ) : s } , val : function ( a ) { return 0 in arguments ? this . each ( function ( b ) { this . value = m ( this , a , b , this . value ) } ) : this [ 0 ] && ( this [ 0 ] . multiple ? h ( this [ 0 ] ) . find ( "option" ) . filter ( function ( ) { return this . selected } ) . pluck ( "value" ) : this [ 0 ] . value ) } , offset : function ( a ) { if ( a ) return this . each ( function ( b ) { var c =
h ( this ) ; b = m ( this , a , b , c . offset ( ) ) ; var d = c . offsetParent ( ) . offset ( ) ; b = { top : b . top - d . top , left : b . left - d . left } ; "static" == c . css ( "position" ) && ( b . position = "relative" ) ; c . css ( b ) } ) ; if ( ! this . length ) return null ; var b = this [ 0 ] . getBoundingClientRect ( ) ; return { left : b . left + window . pageXOffset , top : b . top + window . pageYOffset , width : Math . round ( b . width ) , height : Math . round ( b . height ) } } , css : function ( b , c ) { if ( 2 > arguments . length ) { var d = this [ 0 ] , e = getComputedStyle ( d , "" ) ; if ( ! d ) return ; if ( "string" == typeof b ) return d . style [ J ( b ) ] || e . getPropertyValue ( b ) ;
if ( H ( b ) ) { var f = { } ; h . each ( b , function ( a , b ) { f [ b ] = d . style [ J ( b ) ] || e . getPropertyValue ( b ) } ) ; return f } } var r = "" ; if ( "string" == a ( b ) ) ! c && 0 !== c ? this . each ( function ( ) { this . style . removeProperty ( l ( b ) ) } ) : r = l ( b ) + ":" + ( "number" == typeof c && ! G [ l ( b ) ] ? c + "px" : c ) ; else for ( w in b ) ! b [ w ] && 0 !== b [ w ] ? this . each ( function ( ) { this . style . removeProperty ( l ( w ) ) } ) : r += l ( w ) + ":" + ( "number" == typeof b [ w ] && ! G [ l ( w ) ] ? b [ w ] + "px" : b [ w ] ) + ";" ; return this . each ( function ( ) { this . style . cssText += ";" + r } ) } , index : function ( a ) { return a ? this . indexOf ( h ( a ) [ 0 ] ) : this . parent ( ) . children ( ) . indexOf ( this [ 0 ] ) } ,
hasClass : function ( a ) { return ! a ? ! 1 : v . some . call ( this , function ( a ) { return this . test ( u ( a ) ) } , p ( a ) ) } , addClass : function ( a ) { return ! a ? this : this . each ( function ( b ) { if ( "className" in this ) { D = [ ] ; var c = u ( this ) ; m ( this , a , b , c ) . split ( /\s+/g ) . forEach ( function ( a ) { h ( this ) . hasClass ( a ) || D . push ( a ) } , this ) ; D . length && u ( this , c + ( c ? " " : "" ) + D . join ( " " ) ) } } ) } , removeClass : function ( a ) { return this . each ( function ( b ) { if ( "className" in this ) { if ( a === s ) return u ( this , "" ) ; D = u ( this ) ; m ( this , a , b , D ) . split ( /\s+/g ) . forEach ( function ( a ) { D = D . replace ( p ( a ) ,
" " ) } ) ; u ( this , D . trim ( ) ) } } ) } , toggleClass : function ( a , b ) { return ! a ? this : this . each ( function ( c ) { var d = h ( this ) ; m ( this , a , c , u ( this ) ) . split ( /\s+/g ) . forEach ( function ( a ) { ( b === s ? ! d . hasClass ( a ) : b ) ? d . addClass ( a ) : d . removeClass ( a ) } ) } ) } , scrollTop : function ( a ) { if ( this . length ) { var b = "scrollTop" in this [ 0 ] ; return a === s ? b ? this [ 0 ] . scrollTop : this [ 0 ] . pageYOffset : this . each ( b ? function ( ) { this . scrollTop = a } : function ( ) { this . scrollTo ( this . scrollX , a ) } ) } } , scrollLeft : function ( a ) { if ( this . length ) { var b = "scrollLeft" in this [ 0 ] ; return a ===
s ? b ? this [ 0 ] . scrollLeft : this [ 0 ] . pageXOffset : this . each ( b ? function ( ) { this . scrollLeft = a } : function ( ) { this . scrollTo ( a , this . scrollY ) } ) } } , position : function ( ) { if ( this . length ) { var a = this [ 0 ] , b = this . offsetParent ( ) , c = this . offset ( ) , d = N . test ( b [ 0 ] . nodeName ) ? { top : 0 , left : 0 } : b . offset ( ) ; c . top -= parseFloat ( h ( a ) . css ( "margin-top" ) ) || 0 ; c . left -= parseFloat ( h ( a ) . css ( "margin-left" ) ) || 0 ; d . top += parseFloat ( h ( b [ 0 ] ) . css ( "border-top-width" ) ) || 0 ; d . left += parseFloat ( h ( b [ 0 ] ) . css ( "border-left-width" ) ) || 0 ; return { top : c . top - d . top , left : c . left -
d . left } } } , offsetParent : function ( ) { return this . map ( function ( ) { for ( var a = this . offsetParent || r . body ; a && ! N . test ( a . nodeName ) && "static" == h ( a ) . css ( "position" ) ; ) a = a . offsetParent ; return a } ) } } ; h . fn . detach = h . fn . remove ; [ "width" , "height" ] . forEach ( function ( a ) { var b = a . replace ( /./ , function ( a ) { return a [ 0 ] . toUpperCase ( ) } ) ; h . fn [ a ] = function ( e ) { var f , r = this [ 0 ] ; return e === s ? c ( r ) ? r [ "inner" + b ] : d ( r ) ? r . documentElement [ "scroll" + b ] : ( f = this . offset ( ) ) && f [ a ] : this . each ( function ( b ) { r = h ( this ) ; r . css ( a , m ( this , e , b , r [ a ] ( ) ) ) } ) } } ) ; [ "after" ,
"prepend" , "before" , "append" ] . forEach ( function ( b , c ) { var d = c % 2 ; h . fn [ b ] = function ( ) { var b , e = h . map ( arguments , function ( c ) { b = a ( c ) ; return "object" == b || "array" == b || null == c ? c : C . fragment ( c ) } ) , f , g = 1 < this . length ; return 1 > e . length ? this : this . each ( function ( a , b ) { f = d ? b : b . parentNode ; b = 0 == c ? b . nextSibling : 1 == c ? b . firstChild : 2 == c ? b : null ; var F = h . contains ( r . documentElement , f ) ; e . forEach ( function ( a ) { if ( g ) a = a . cloneNode ( ! 0 ) ; else if ( ! f ) return h ( a ) . remove ( ) ; f . insertBefore ( a , b ) ; F && B ( a , function ( a ) { null != a . nodeName && ( "SCRIPT" === a . nodeName . toUpperCase ( ) &&
2014-09-01 13:50:43 +08:00
( ! a . type || "text/javascript" === a . type ) && ! a . src ) && window . eval . call ( window , a . innerHTML ) } ) } ) } ) } ; h . fn [ d ? b + "To" : "insert" + ( c ? "Before" : "After" ) ] = function ( a ) { h ( a ) [ b ] ( this ) ; return this } } ) ; C . Z . prototype = h . fn ; C . uniq = K ; C . deserializeValue = q ; h . zepto = C ; return h } ( ) ; window . Zepto = Zepto ; void 0 === window . $ && ( window . $ = Zepto ) ;
2014-09-03 19:25:32 +08:00
( function ( a ) { function b ( b , c , d , e ) { if ( b . global ) return b = c || u , d = a . Event ( d ) , a ( b ) . trigger ( d , e ) , ! d . isDefaultPrevented ( ) } function c ( c ) { c . global && 0 === a . active ++ && b ( c , null , "ajaxStart" ) } function d ( a , c ) { var d = c . context ; if ( ! 1 === c . beforeSend . call ( d , a , c ) || ! 1 === b ( c , d , "ajaxBeforeSend" , [ a , c ] ) ) return ! 1 ; b ( c , d , "ajaxSend" , [ a , c ] ) } function e ( a , c , d , e ) { var f = d . context ; d . success . call ( f , a , "success" , c ) ; e && e . resolveWith ( f , [ a , "success" , c ] ) ; b ( d , f , "ajaxSuccess" , [ c , d , a ] ) ; g ( "success" , c , d ) } function f ( a , c , d , e , f ) { var h = e . context ; e . error . call ( h ,
d , c , a ) ; f && f . rejectWith ( h , [ d , c , a ] ) ; b ( e , h , "ajaxError" , [ d , e , a || c ] ) ; g ( c , d , e ) } function g ( c , d , e ) { var f = e . context ; e . complete . call ( f , d , c ) ; b ( e , f , "ajaxComplete" , [ d , e ] ) ; e . global && ! -- a . active && b ( e , null , "ajaxStop" ) } function n ( ) { } function l ( a ) { a && ( a = a . split ( ";" , 2 ) [ 0 ] ) ; return a && ( a == v ? "html" : a == D ? "json" : w . test ( a ) ? "script" : h . test ( a ) && "xml" ) || "text" } function p ( a , b ) { return "" == b ? a : ( a + "&" + b ) . replace ( /[&?]{1,2}/ , "?" ) } function A ( b ) { b . processData && ( b . data && "string" != a . type ( b . data ) ) && ( b . data = a . param ( b . data , b . traditional ) ) ;
if ( b . data && ( ! b . type || "GET" == b . type . toUpperCase ( ) ) ) b . url = p ( b . url , b . data ) , b . data = void 0 } function k ( b , c , d , e ) { a . isFunction ( c ) && ( e = d , d = c , c = void 0 ) ; a . isFunction ( d ) || ( e = d , d = void 0 ) ; return { url : b , data : c , success : d , dataType : e } } function y ( b , c , d , e ) { var f , g = a . isArray ( c ) , h = a . isPlainObject ( c ) ; a . each ( c , function ( c , m ) { f = a . type ( m ) ; e && ( c = d ? e : e + "[" + ( h || "object" == f || "array" == f ? c : "" ) + "]" ) ; ! e && g ? b . add ( m . name , m . value ) : "array" == f || ! d && "object" == f ? y ( b , m , d , c ) : b . add ( c , m ) } ) } var m = 0 , u = window . document , q , B , s = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi ,
w = /^(?:text|application)\/javascript/i , h = /^(?:text|application)\/xml/i , D = "application/json" , v = "text/html" , x = /^\s*$/ ; a . active = 0 ; a . ajaxJSONP = function ( b , c ) { if ( ! ( "type" in b ) ) return a . ajax ( b ) ; var g = b . jsonpCallback , h = ( a . isFunction ( g ) ? g ( ) : g ) || "jsonp" + ++ m , x = u . createElement ( "script" ) , p = window [ h ] , q , z = function ( b ) { a ( x ) . triggerHandler ( "error" , b || "abort" ) } , l = { abort : z } , s ; c && c . promise ( l ) ; a ( x ) . on ( "load error" , function ( d , g ) { clearTimeout ( s ) ; a ( x ) . off ( ) . remove ( ) ; "error" == d . type || ! q ? f ( null , g || "error" , l , b , c ) : e ( q [ 0 ] , l ,
b , c ) ; window [ h ] = p ; q && a . isFunction ( p ) && p ( q [ 0 ] ) ; p = q = void 0 } ) ; if ( ! 1 === d ( l , b ) ) return z ( "abort" ) , l ; window [ h ] = function ( ) { q = arguments } ; x . src = b . url . replace ( /\?(.+)=\?/ , "?$1=" + h ) ; u . head . appendChild ( x ) ; 0 < b . timeout && ( s = setTimeout ( function ( ) { z ( "timeout" ) } , b . timeout ) ) ; return l } ; a . ajaxSettings = { type : "GET" , beforeSend : n , success : n , error : n , complete : n , context : null , global : ! 0 , xhr : function ( ) { return new window . XMLHttpRequest } , accepts : { script : "text/javascript, application/javascript, application/x-javascript" , json : D , xml : "application/xml, text/xml" ,
html : v , text : "text/plain" } , crossDomain : ! 1 , timeout : 0 , processData : ! 0 , cache : ! 0 } ; a . ajax = function ( b ) { var g = a . extend ( { } , b || { } ) , h = a . Deferred && a . Deferred ( ) ; for ( q in a . ajaxSettings ) void 0 === g [ q ] && ( g [ q ] = a . ajaxSettings [ q ] ) ; c ( g ) ; g . crossDomain || ( g . crossDomain = /^([\w-]+:)?\/\/([^\/]+)/ . test ( g . url ) && RegExp . $2 != window . location . host ) ; g . url || ( g . url = window . location . toString ( ) ) ; A ( g ) ; var m = g . dataType , z = /\?.+=\?/ . test ( g . url ) ; z && ( m = "jsonp" ) ; if ( ! 1 === g . cache || ( ! b || ! 0 !== b . cache ) && ( "script" == m || "jsonp" == m ) ) g . url = p ( g . url , "_=" +
Date . now ( ) ) ; if ( "jsonp" == m ) return z || ( g . url = p ( g . url , g . jsonp ? g . jsonp + "=?" : ! 1 === g . jsonp ? "" : "callback=?" ) ) , a . ajaxJSONP ( g , h ) ; b = g . accepts [ m ] ; var u = { } , z = function ( a , b ) { u [ a . toLowerCase ( ) ] = [ a , b ] } , s = /^([\w-]+:)\/\// . test ( g . url ) ? RegExp . $1 : window . location . protocol , k = g . xhr ( ) , y = k . setRequestHeader , v ; h && h . promise ( k ) ; g . crossDomain || z ( "X-Requested-With" , "XMLHttpRequest" ) ; z ( "Accept" , b || "*/*" ) ; if ( b = g . mimeType || b ) - 1 < b . indexOf ( "," ) && ( b = b . split ( "," , 2 ) [ 0 ] ) , k . overrideMimeType && k . overrideMimeType ( b ) ; if ( g . contentType || ! 1 !==
g . contentType && g . data && "GET" != g . type . toUpperCase ( ) ) z ( "Content-Type" , g . contentType || "application/x-www-form-urlencoded" ) ; if ( g . headers ) for ( B in g . headers ) z ( B , g . headers [ B ] ) ; k . setRequestHeader = z ; k . onreadystatechange = function ( ) { if ( 4 == k . readyState ) { k . onreadystatechange = n ; clearTimeout ( v ) ; var b , c = ! 1 ; if ( 200 <= k . status && 300 > k . status || 304 == k . status || 0 == k . status && "file:" == s ) { m = m || l ( g . mimeType || k . getResponseHeader ( "content-type" ) ) ; b = k . responseText ; try { "script" == m ? ( 0 , eval ) ( b ) : "xml" == m ? b = k . responseXML : "json" == m &&
( b = x . test ( b ) ? null : a . parseJSON ( b ) ) } catch ( d ) { c = d } c ? f ( c , "parsererror" , k , g , h ) : e ( b , k , g , h ) } else f ( k . statusText || null , k . status ? "error" : "abort" , k , g , h ) } } ; if ( ! 1 === d ( k , g ) ) return k . abort ( ) , f ( null , "abort" , k , g , h ) , k ; if ( g . xhrFields ) for ( B in g . xhrFields ) k [ B ] = g . xhrFields [ B ] ; k . open ( g . type , g . url , "async" in g ? g . async : ! 0 , g . username , g . password ) ; for ( B in u ) y . apply ( k , u [ B ] ) ; 0 < g . timeout && ( v = setTimeout ( function ( ) { k . onreadystatechange = n ; k . abort ( ) ; f ( null , "timeout" , k , g , h ) } , g . timeout ) ) ; k . send ( g . data ? g . data : null ) ; return k } ; a . get =
function ( ) { return a . ajax ( k . apply ( null , arguments ) ) } ; a . post = function ( ) { var b = k . apply ( null , arguments ) ; b . type = "POST" ; return a . ajax ( b ) } ; a . getJSON = function ( ) { var b = k . apply ( null , arguments ) ; b . dataType = "json" ; return a . ajax ( b ) } ; a . fn . load = function ( b , c , d ) { if ( ! this . length ) return this ; var e = this , f = b . split ( /\s/ ) , g ; b = k ( b , c , d ) ; var h = b . success ; 1 < f . length && ( b . url = f [ 0 ] , g = f [ 1 ] ) ; b . success = function ( b ) { e . html ( g ? a ( "<div>" ) . html ( b . replace ( s , "" ) ) . find ( g ) : b ) ; h && h . apply ( e , arguments ) } ; a . ajax ( b ) ; return this } ; var z = encodeURIComponent ;
a . param = function ( a , b ) { var c = [ ] ; c . add = function ( a , b ) { this . push ( z ( a ) + "=" + z ( b ) ) } ; y ( c , a , b ) ; return c . join ( "&" ) . replace ( /%20/g , "+" ) } } ) ( Zepto ) ; ( function ( a ) { var b = [ ] , c ; a . fn . remove = function ( ) { return this . each ( function ( ) { this . parentNode && ( "IMG" === this . tagName && ( b . push ( this ) , this . src = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" , c && clearTimeout ( c ) , c = setTimeout ( function ( ) { b = [ ] } , 6E4 ) ) , this . parentNode . removeChild ( this ) ) } ) } } ) ( Zepto ) ;
( function ( a ) { a . Callbacks = function ( b ) { b = a . extend ( { } , b ) ; var c , d , e , f , g , n , l = [ ] , p = ! b . once && [ ] , A = function ( a ) { c = b . memory && a ; d = ! 0 ; n = f || 0 ; f = 0 ; g = l . length ; for ( e = ! 0 ; l && n < g ; ++ n ) if ( ! 1 === l [ n ] . apply ( a [ 0 ] , a [ 1 ] ) && b . stopOnFalse ) { c = ! 1 ; break } e = ! 1 ; l && ( p ? p . length && A ( p . shift ( ) ) : c ? l . length = 0 : k . disable ( ) ) } , k = { add : function ( ) { if ( l ) { var d = l . length , m = function ( c ) { a . each ( c , function ( a , c ) { "function" === typeof c ? ( ! b . unique || ! k . has ( c ) ) && l . push ( c ) : c && ( c . length && "string" !== typeof c ) && m ( c ) } ) } ; m ( arguments ) ; e ? g = l . length : c && ( f = d , A ( c ) ) } return this } ,
remove : function ( ) { l && a . each ( arguments , function ( b , c ) { for ( var d ; - 1 < ( d = a . inArray ( c , l , d ) ) ; ) l . splice ( d , 1 ) , e && ( d <= g && -- g , d <= n && -- n ) } ) ; return this } , has : function ( b ) { return ! ( ! l || ! ( b ? - 1 < a . inArray ( b , l ) : l . length ) ) } , empty : function ( ) { g = l . length = 0 ; return this } , disable : function ( ) { l = p = c = void 0 ; return this } , disabled : function ( ) { return ! l } , lock : function ( ) { p = void 0 ; c || k . disable ( ) ; return this } , locked : function ( ) { return ! p } , fireWith : function ( a , b ) { if ( l && ( ! d || p ) ) b = b || [ ] , b = [ a , b . slice ? b . slice ( ) : b ] , e ? p . push ( b ) : A ( b ) ; return this } ,
fire : function ( ) { return k . fireWith ( this , arguments ) } , fired : function ( ) { return ! ! d } } ; return k } } ) ( Zepto ) ;
( function ( a ) { function b ( b , d ) { var k = b [ n ] , k = k && e [ k ] ; if ( void 0 === d ) return k || c ( b ) ; if ( k ) { if ( d in k ) return k [ d ] ; var l = g ( d ) ; if ( l in k ) return k [ l ] } return f . call ( a ( b ) , d ) } function c ( b , c , f ) { var l = b [ n ] || ( b [ n ] = ++ a . uuid ) ; b = e [ l ] || ( e [ l ] = d ( b ) ) ; void 0 !== c && ( b [ g ( c ) ] = f ) ; return b } function d ( b ) { var c = { } ; a . each ( b . attributes || l , function ( b , d ) { 0 == d . name . indexOf ( "data-" ) && ( c [ g ( d . name . replace ( "data-" , "" ) ) ] = a . zepto . deserializeValue ( d . value ) ) } ) ; return c } var e = { } , f = a . fn . data , g = a . camelCase , n = a . expando = "Zepto" + + new Date , l = [ ] ; a . fn . data =
2014-09-01 13:50:43 +08:00
function ( d , e ) { return void 0 === e ? a . isPlainObject ( d ) ? this . each ( function ( b , e ) { a . each ( d , function ( a , b ) { c ( e , a , b ) } ) } ) : 0 in this ? b ( this [ 0 ] , d ) : void 0 : this . each ( function ( ) { c ( this , d , e ) } ) } ; a . fn . removeData = function ( b ) { "string" == typeof b && ( b = b . split ( /\s+/ ) ) ; return this . each ( function ( ) { var c = this [ n ] , d = c && e [ c ] ; d && a . each ( b || d , function ( a ) { delete d [ b ? g ( this ) : a ] } ) } ) } ; [ "remove" , "empty" ] . forEach ( function ( b ) { var c = a . fn [ b ] ; a . fn [ b ] = function ( ) { var a = this . find ( "*" ) ; "remove" === b && ( a = a . add ( this ) ) ; a . removeData ( ) ; return c . call ( this ) } } ) } ) ( Zepto ) ;
( function ( a ) { function b ( c ) { var e = [ [ "resolve" , "done" , a . Callbacks ( { once : 1 , memory : 1 } ) , "resolved" ] , [ "reject" , "fail" , a . Callbacks ( { once : 1 , memory : 1 } ) , "rejected" ] , [ "notify" , "progress" , a . Callbacks ( { memory : 1 } ) ] ] , f = "pending" , g = { state : function ( ) { return f } , always : function ( ) { n . done ( arguments ) . fail ( arguments ) ; return this } , then : function ( ) { var c = arguments ; return b ( function ( b ) { a . each ( e , function ( d , e ) { var f = a . isFunction ( c [ d ] ) && c [ d ] ; n [ e [ 1 ] ] ( function ( ) { var c = f && f . apply ( this , arguments ) ; if ( c && a . isFunction ( c . promise ) ) c . promise ( ) . done ( b . resolve ) . fail ( b . reject ) . progress ( b . notify ) ;
else { var d = this === g ? b . promise ( ) : this ; b [ e [ 0 ] + "With" ] ( d , f ? [ c ] : arguments ) } } ) } ) ; c = null } ) . promise ( ) } , promise : function ( b ) { return null != b ? a . extend ( b , g ) : g } } , n = { } ; a . each ( e , function ( a , b ) { var c = b [ 2 ] , d = b [ 3 ] ; g [ b [ 1 ] ] = c . add ; d && c . add ( function ( ) { f = d } , e [ a ^ 1 ] [ 2 ] . disable , e [ 2 ] [ 2 ] . lock ) ; n [ b [ 0 ] ] = function ( ) { n [ b [ 0 ] + "With" ] ( this === n ? g : this , arguments ) ; return this } ; n [ b [ 0 ] + "With" ] = c . fireWith } ) ; g . promise ( n ) ; c && c . call ( n , n ) ; return n } var c = Array . prototype . slice ; a . when = function ( d ) { var e = c . call ( arguments ) , f = e . length , g = 0 , n = 1 !== f || d &&
2014-09-03 19:25:32 +08:00
a . isFunction ( d . promise ) ? f : 0 , l = 1 === n ? d : b ( ) , p , A , k , y = function ( a , b , d ) { return function ( e ) { b [ a ] = this ; d [ a ] = 1 < arguments . length ? c . call ( arguments ) : e ; d === p ? l . notifyWith ( b , d ) : -- n || l . resolveWith ( b , d ) } } ; if ( 1 < f ) { p = Array ( f ) ; A = Array ( f ) ; for ( k = Array ( f ) ; g < f ; ++ g ) e [ g ] && a . isFunction ( e [ g ] . promise ) ? e [ g ] . promise ( ) . done ( y ( g , k , e ) ) . fail ( l . reject ) . progress ( y ( g , A , p ) ) : -- n } n || l . resolveWith ( k , e ) ; return l . promise ( ) } ; a . Deferred = b } ) ( Zepto ) ;
( function ( a ) { function b ( a ) { var b = this . os = { } , e = this . browser = { } , f = a . match ( /Web[kK]it[\/]{0,1}([\d.]+)/ ) , g = a . match ( /(Android);?[\s\/]+([\d.]+)?/ ) , n = ! ! a . match ( /\(Macintosh\; Intel / ) , l = a . match ( /(iPad).*OS\s([\d_]+)/ ) , p = a . match ( /(iPod)(.*OS\s([\d_]+))?/ ) , A = ! l && a . match ( /(iPhone\sOS)\s([\d_]+)/ ) , k = a . match ( /(webOS|hpwOS)[\s\/]([\d.]+)/ ) , y = a . match ( /Windows Phone ([\d.]+)/ ) , m = k && a . match ( /TouchPad/ ) , u = a . match ( /Kindle\/([\d.]+)/ ) , q = a . match ( /Silk\/([\d._]+)/ ) , B = a . match ( /(BlackBerry).*Version\/([\d.]+)/ ) , s = a . match ( /(BB10).*Version\/([\d.]+)/ ) ,
w = a . match ( /(RIM\sTablet\sOS)\s([\d.]+)/ ) , h = a . match ( /PlayBook/ ) , D = a . match ( /Chrome\/([\d.]+)/ ) || a . match ( /CriOS\/([\d.]+)/ ) , v = a . match ( /Firefox\/([\d.]+)/ ) , x = a . match ( /MSIE\s([\d.]+)/ ) || a . match ( /Trident\/[\d](?=[^\?]+).*rv:([0-9.].)/ ) , z = ! D && a . match ( /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/ ) , r = z || a . match ( /Version\/([\d.]+)([^S](Safari)|[^M]*(Mobile)[^S]*(Safari))/ ) ; if ( e . webkit = ! ! f ) e . version = f [ 1 ] ; g && ( b . android = ! 0 , b . version = g [ 2 ] ) ; A && ! p && ( b . ios = b . iphone = ! 0 , b . version = A [ 2 ] . replace ( /_/g , "." ) ) ; l && ( b . ios = b . ipad =
! 0 , b . version = l [ 2 ] . replace ( /_/g , "." ) ) ; p && ( b . ios = b . ipod = ! 0 , b . version = p [ 3 ] ? p [ 3 ] . replace ( /_/g , "." ) : null ) ; y && ( b . wp = ! 0 , b . version = y [ 1 ] ) ; k && ( b . webos = ! 0 , b . version = k [ 2 ] ) ; m && ( b . touchpad = ! 0 ) ; B && ( b . blackberry = ! 0 , b . version = B [ 2 ] ) ; s && ( b . bb10 = ! 0 , b . version = s [ 2 ] ) ; w && ( b . rimtabletos = ! 0 , b . version = w [ 2 ] ) ; h && ( e . playbook = ! 0 ) ; u && ( b . kindle = ! 0 , b . version = u [ 1 ] ) ; q && ( e . silk = ! 0 , e . version = q [ 1 ] ) ; ! q && ( b . android && a . match ( /Kindle Fire/ ) ) && ( e . silk = ! 0 ) ; D && ( e . chrome = ! 0 , e . version = D [ 1 ] ) ; v && ( e . firefox = ! 0 , e . version = v [ 1 ] ) ; x && ( e . ie = ! 0 , e . version =
x [ 1 ] ) ; if ( r && ( n || b . ios ) ) e . safari = ! 0 , n && ( e . version = r [ 1 ] ) ; z && ( e . webview = ! 0 ) ; b . tablet = ! ( ! l && ! h && ! ( g && ! a . match ( /Mobile/ ) || v && a . match ( /Tablet/ ) || x && ! a . match ( /Phone/ ) && a . match ( /Touch/ ) ) ) ; b . phone = ! ( b . tablet || b . ipod || ! g && ! A && ! k && ! B && ! s && ! ( D && a . match ( /Android/ ) || D && a . match ( /CriOS\/([\d.]+)/ ) || v && a . match ( /Mobile/ ) || x && a . match ( /Touch/ ) ) ) } b . call ( a , navigator . userAgent ) ; a . _ _detect = b } ) ( Zepto ) ;
( function ( a ) { function b ( a ) { return a . _zid || ( a . _zid = l ++ ) } function c ( a , c , e , f ) { c = d ( c ) ; if ( c . ns ) var g = RegExp ( "(?:^| )" + c . ns . replace ( " " , " .* ?" ) + "(?: |$)" ) ; return ( m [ b ( a ) ] || [ ] ) . filter ( function ( a ) { return a && ( ! c . e || a . e == c . e ) && ( ! c . ns || g . test ( a . ns ) ) && ( ! e || b ( a . fn ) === b ( e ) ) && ( ! f || a . sel == f ) } ) } function d ( a ) { a = ( "" + a ) . split ( "." ) ; return { e : a [ 0 ] , ns : a . slice ( 1 ) . sort ( ) . join ( " " ) } } function e ( c , e , f , h , k , l , u ) { var n = b ( c ) , v = m [ n ] || ( m [ n ] = [ ] ) ; e . split ( /\s/ ) . forEach ( function ( b ) { if ( "ready" == b ) return a ( document ) . ready ( f ) ; var e = d ( b ) ;
e . fn = f ; e . sel = k ; e . e in s && ( f = function ( b ) { var c = b . relatedTarget ; if ( ! c || c !== this && ! a . contains ( this , c ) ) return e . fn . apply ( this , arguments ) } ) ; var m = ( e . del = l ) || f ; e . proxy = function ( a ) { a = g ( a ) ; if ( ! a . isImmediatePropagationStopped ( ) ) { a . data = h ; var b = m . apply ( c , a . _args == p ? [ a ] : [ a ] . concat ( a . _args ) ) ; ! 1 === b && ( a . preventDefault ( ) , a . stopPropagation ( ) ) ; return b } } ; e . i = v . length ; v . push ( e ) ; "addEventListener" in c && c . addEventListener ( s [ e . e ] || q && B [ e . e ] || e . e , e . proxy , e . del && ! q && e . e in B || ! ! u ) } ) } function f ( a , d , e , f , g ) { var h = b ( a ) ; ( d ||
"" ) . split ( /\s/ ) . forEach ( function ( b ) { c ( a , b , e , f ) . forEach ( function ( b ) { delete m [ h ] [ b . i ] ; "removeEventListener" in a && a . removeEventListener ( s [ b . e ] || q && B [ b . e ] || b . e , b . proxy , b . del && ! q && b . e in B || ! ! g ) } ) } ) } function g ( b , c ) { if ( c || ! b . isDefaultPrevented ) if ( c || ( c = b ) , a . each ( v , function ( a , d ) { var e = c [ a ] ; b [ a ] = function ( ) { this [ d ] = w ; return e && e . apply ( c , arguments ) } ; b [ d ] = h } ) , c . defaultPrevented !== p ? c . defaultPrevented : "returnValue" in c ? ! 1 === c . returnValue : c . getPreventDefault && c . getPreventDefault ( ) ) b . isDefaultPrevented = w ; return b }
function n ( a ) { var b , c = { originalEvent : a } ; for ( b in a ) ! D . test ( b ) && a [ b ] !== p && ( c [ b ] = a [ b ] ) ; return g ( c , a ) } var l = 1 , p , A = Array . prototype . slice , k = a . isFunction , y = function ( a ) { return "string" == typeof a } , m = { } , u = { } , q = "onfocusin" in window , B = { focus : "focusin" , blur : "focusout" } , s = { mouseenter : "mouseover" , mouseleave : "mouseout" } ; u . click = u . mousedown = u . mouseup = u . mousemove = "MouseEvents" ; a . event = { add : e , remove : f } ; a . proxy = function ( c , d ) { var e = 2 in arguments && A . call ( arguments , 2 ) ; if ( k ( c ) ) { var f = function ( ) { return c . apply ( d , e ? e . concat ( A . call ( arguments ) ) :
arguments ) } ; f . _zid = b ( c ) ; return f } if ( y ( d ) ) return e ? ( e . unshift ( c [ d ] , c ) , a . proxy . apply ( null , e ) ) : a . proxy ( c [ d ] , c ) ; throw new TypeError ( "expected function" ) ; } ; a . fn . bind = function ( a , b , c ) { return this . on ( a , b , c ) } ; a . fn . unbind = function ( a , b ) { return this . off ( a , b ) } ; a . fn . one = function ( a , b , c , d ) { return this . on ( a , b , c , d , 1 ) } ; var w = function ( ) { return ! 0 } , h = function ( ) { return ! 1 } , D = /^([A-Z]|returnValue$|layer[XY]$)/ , v = { preventDefault : "isDefaultPrevented" , stopImmediatePropagation : "isImmediatePropagationStopped" , stopPropagation : "isPropagationStopped" } ;
a . fn . delegate = function ( a , b , c ) { return this . on ( b , a , c ) } ; a . fn . undelegate = function ( a , b , c ) { return this . off ( b , a , c ) } ; a . fn . live = function ( b , c ) { a ( document . body ) . delegate ( this . selector , b , c ) ; return this } ; a . fn . die = function ( b , c ) { a ( document . body ) . undelegate ( this . selector , b , c ) ; return this } ; a . fn . on = function ( b , c , d , g , m ) { var q , l , s = this ; if ( b && ! y ( b ) ) return a . each ( b , function ( a , b ) { s . on ( a , c , d , b , m ) } ) , s ; ! y ( c ) && ( ! k ( g ) && ! 1 !== g ) && ( g = d , d = c , c = p ) ; if ( k ( d ) || ! 1 === d ) g = d , d = p ; ! 1 === g && ( g = h ) ; return s . each ( function ( h , k ) { m && ( q = function ( a ) { f ( k ,
a . type , g ) ; return g . apply ( this , arguments ) } ) ; c && ( l = function ( b ) { var d , e = a ( b . target ) . closest ( c , k ) . get ( 0 ) ; if ( e && e !== k ) return d = a . extend ( n ( b ) , { currentTarget : e , liveFired : k } ) , ( q || g ) . apply ( e , [ d ] . concat ( A . call ( arguments , 1 ) ) ) } ) ; e ( k , b , g , d , c , l || q ) } ) } ; a . fn . off = function ( b , c , d ) { var e = this ; if ( b && ! y ( b ) ) return a . each ( b , function ( a , b ) { e . off ( a , c , b ) } ) , e ; ! y ( c ) && ( ! k ( d ) && ! 1 !== d ) && ( d = c , c = p ) ; ! 1 === d && ( d = h ) ; return e . each ( function ( ) { f ( this , b , d , c ) } ) } ; a . fn . trigger = function ( b , c ) { b = y ( b ) || a . isPlainObject ( b ) ? a . Event ( b ) : g ( b ) ; b . _args =
c ; return this . each ( function ( ) { "dispatchEvent" in this ? this . dispatchEvent ( b ) : a ( this ) . triggerHandler ( b , c ) } ) } ; a . fn . triggerHandler = function ( b , d ) { var e , f ; this . each ( function ( g , h ) { e = n ( y ( b ) ? a . Event ( b ) : b ) ; e . _args = d ; e . target = h ; a . each ( c ( h , b . type || b ) , function ( a , b ) { f = b . proxy ( e ) ; if ( e . isImmediatePropagationStopped ( ) ) return ! 1 } ) } ) ; return f } ; "focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error" . split ( " " ) . forEach ( function ( b ) { a . fn [ b ] =
function ( a ) { return a ? this . bind ( b , a ) : this . trigger ( b ) } } ) ; [ "focus" , "blur" ] . forEach ( function ( b ) { a . fn [ b ] = function ( a ) { a ? this . bind ( b , a ) : this . each ( function ( ) { try { this [ b ] ( ) } catch ( a ) { } } ) ; return this } } ) ; a . Event = function ( a , b ) { y ( a ) || ( b = a , a = b . type ) ; var c = document . createEvent ( u [ a ] || "Events" ) , d = ! 0 ; if ( b ) for ( var e in b ) "bubbles" == e ? d = ! ! b [ e ] : c [ e ] = b [ e ] ; c . initEvent ( a , d , ! 0 ) ; return g ( c ) } } ) ( Zepto ) ;
2014-08-21 13:42:42 +08:00
( function ( a ) { a . fn . serializeArray = function ( ) { var b , c , d = [ ] ; a ( [ ] . slice . call ( this . get ( 0 ) . elements ) ) . each ( function ( ) { b = a ( this ) ; c = b . attr ( "type" ) ; "fieldset" != this . nodeName . toLowerCase ( ) && ( ! this . disabled && "submit" != c && "reset" != c && "button" != c && ( "radio" != c && "checkbox" != c || this . checked ) ) && d . push ( { name : b . attr ( "name" ) , value : b . val ( ) } ) } ) ; return d } ; a . fn . serialize = function ( ) { var a = [ ] ; this . serializeArray ( ) . forEach ( function ( c ) { a . push ( encodeURIComponent ( c . name ) + "=" + encodeURIComponent ( c . value ) ) } ) ; return a . join ( "&" ) } ;
a . fn . submit = function ( b ) { b ? this . bind ( "submit" , b ) : this . length && ( b = a . Event ( "submit" ) , this . eq ( 0 ) . trigger ( b ) , b . isDefaultPrevented ( ) || this . get ( 0 ) . submit ( ) ) ; return this } } ) ( Zepto ) ;
2014-09-03 19:25:32 +08:00
( function ( a , b ) { var c = "" , d , e = window . document . createElement ( "div" ) , f = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i , g , n , l , p , A , k , y , m , u , q = { } ; a . each ( { Webkit : "webkit" , Moz : "" , O : "o" } , function ( a , f ) { if ( e . style [ a + "TransitionProperty" ] !== b ) return c = "-" + a . toLowerCase ( ) + "-" , d = f , ! 1 } ) ; g = c + "transform" ; q [ n = c + "transition-property" ] = q [ l = c + "transition-duration" ] = q [ A = c + "transition-delay" ] = q [ p = c + "transition-timing-function" ] = q [ k = c + "animation-name" ] = q [ y = c + "animation-duration" ] = q [ u = c + "animation-delay" ] =
q [ m = c + "animation-timing-function" ] = "" ; a . fx = { off : d === b && e . style . transitionProperty === b , speeds : { _default : 400 , fast : 200 , slow : 600 } , cssPrefix : c , transitionEnd : d ? d + "TransitionEnd" : "transitionend" , animationEnd : d ? d + "AnimationEnd" : "animationend" } ; a . fn . animate = function ( c , d , e , f , g ) { a . isFunction ( d ) && ( f = d , d = e = b ) ; a . isFunction ( e ) && ( f = e , e = b ) ; a . isPlainObject ( d ) && ( e = d . easing , f = d . complete , g = d . delay , d = d . duration ) ; d && ( d = ( "number" == typeof d ? d : a . fx . speeds [ d ] || a . fx . speeds . _default ) / 1E3 ) ; g && ( g = parseFloat ( g ) / 1E3 ) ; return this . anim ( c ,
d , e , f , g ) } ; a . fn . anim = function ( c , d , e , h , D ) { var v , x = { } , z , r = "" , F = this , E , G = a . fx . transitionEnd , I = ! 1 ; d === b && ( d = a . fx . speeds . _default / 1E3 ) ; D === b && ( D = 0 ) ; a . fx . off && ( d = 0 ) ; if ( "string" == typeof c ) x [ k ] = c , x [ y ] = d + "s" , x [ u ] = D + "s" , x [ m ] = e || "linear" , G = a . fx . animationEnd ; else { z = [ ] ; for ( v in c ) f . test ( v ) ? r += v + "(" + c [ v ] + ") " : ( x [ v ] = c [ v ] , z . push ( v . replace ( /([a-z])([A-Z])/ , "$1-$2" ) . toLowerCase ( ) ) ) ; r && ( x [ g ] = r , z . push ( g ) ) ; 0 < d && "object" === typeof c && ( x [ n ] = z . join ( ", " ) , x [ l ] = d + "s" , x [ A ] = D + "s" , x [ p ] = e || "linear" ) } E = function ( b ) { if ( "undefined" !==
2014-09-03 14:49:31 +08:00
typeof b ) { if ( b . target !== b . currentTarget ) return ; a ( b . target ) . unbind ( G , E ) } else a ( this ) . unbind ( G , E ) ; I = ! 0 ; a ( this ) . css ( q ) ; h && h . call ( this ) } ; 0 < d && ( this . bind ( G , E ) , setTimeout ( function ( ) { I || E . call ( F ) } , 1E3 * d + 25 ) ) ; this . size ( ) && this . get ( 0 ) . clientLeft ; this . css ( x ) ; 0 >= d && setTimeout ( function ( ) { F . each ( function ( ) { E . call ( this ) } ) } , 0 ) ; return this } ; e = null } ) ( Zepto ) ;
2014-09-01 18:15:29 +08:00
( function ( a , b ) { function c ( c , d , e , f , g ) { "function" == typeof d && ! g && ( g = d , d = b ) ; e = { opacity : e } ; f && ( e . scale = f , c . css ( a . fx . cssPrefix + "transform-origin" , "0 0" ) ) ; return c . animate ( e , d , null , g ) } function d ( b , d , e , g ) { return c ( b , d , 0 , e , function ( ) { f . call ( a ( this ) ) ; g && g . call ( this ) } ) } var e = a . fn . show , f = a . fn . hide , g = a . fn . toggle ; a . fn . show = function ( a , d ) { e . call ( this ) ; a === b ? a = 0 : this . css ( "opacity" , 0 ) ; return c ( this , a , 1 , "1,1" , d ) } ; a . fn . hide = function ( a , c ) { return a === b ? f . call ( this ) : d ( this , a , "0,0" , c ) } ; a . fn . toggle = function ( c , d ) { return c ===
2014-08-21 13:42:42 +08:00
b || "boolean" == typeof c ? g . call ( this , c ) : this . each ( function ( ) { var b = a ( this ) ; b [ "none" == b . css ( "display" ) ? "show" : "hide" ] ( c , d ) } ) } ; a . fn . fadeTo = function ( a , b , d ) { return c ( this , a , b , null , d ) } ; a . fn . fadeIn = function ( a , b ) { var c = this . css ( "opacity" ) ; 0 < c ? this . css ( "opacity" , 0 ) : c = 1 ; return e . call ( this ) . fadeTo ( a , c , b ) } ; a . fn . fadeOut = function ( a , b ) { return d ( this , a , null , b ) } ; a . fn . fadeToggle = function ( b , c ) { return this . each ( function ( ) { var d = a ( this ) ; d [ 0 == d . css ( "opacity" ) || "none" == d . css ( "display" ) ? "fadeIn" : "fadeOut" ] ( b , c ) } ) } } ) ( Zepto ) ;
( function ( a ) { if ( a . os . ios ) { var b = { } ; a ( document ) . bind ( "gesturestart" , function ( a ) { var d = Date . now ( ) ; b . target = "tagName" in a . target ? a . target : a . target . parentNode ; b . e1 = a . scale ; b . last = d } ) . bind ( "gesturechange" , function ( a ) { b . e2 = a . scale } ) . bind ( "gestureend" , function ( c ) { 0 < b . e2 ? ( 0 != Math . abs ( b . e1 - b . e2 ) && a ( b . target ) . trigger ( "pinch" ) && a ( b . target ) . trigger ( "pinch" + ( 0 < b . e1 - b . e2 ? "In" : "Out" ) ) , b . e1 = b . e2 = b . last = 0 ) : "last" in b && ( b = { } ) } ) ; [ "pinch" , "pinchIn" , "pinchOut" ] . forEach ( function ( b ) { a . fn [ b ] = function ( a ) { return this . bind ( b ,
a ) } } ) } } ) ( Zepto ) ; ( function ( a ) { "__proto__" in { } || a . extend ( a . zepto , { Z : function ( b , c ) { b = b || [ ] ; a . extend ( b , a . fn ) ; b . selector = c || "" ; b . _ _Z = ! 0 ; return b } , isZ : function ( b ) { return "array" === a . type ( b ) && "__Z" in b } } ) ; try { getComputedStyle ( void 0 ) } catch ( b ) { var c = getComputedStyle ; window . getComputedStyle = function ( a ) { try { return c ( a ) } catch ( b ) { return null } } } } ) ( Zepto ) ;
( function ( a ) { String . prototype . trim === a && ( String . prototype . trim = function ( ) { return this . replace ( /^\s+|\s+$/g , "" ) } ) ; Array . prototype . reduce === a && ( Array . prototype . reduce = function ( b ) { if ( void 0 === this || null === this ) throw new TypeError ; var c = Object ( this ) , d = c . length >>> 0 , e = 0 , f ; if ( "function" != typeof b ) throw new TypeError ; if ( 0 == d && 1 == arguments . length ) throw new TypeError ; if ( 2 <= arguments . length ) f = arguments [ 1 ] ; else { do { if ( e in c ) { f = c [ e ++ ] ; break } if ( ++ e >= d ) throw new TypeError ; } while ( 1 ) } for ( ; e < d ; ) e in c && ( f = b . call ( a ,
f , c [ e ] , e , c ) ) , e ++ ; return f } ) } ) ( ) ;
2014-09-01 13:50:43 +08:00
( function ( a ) { function b ( b ) { b = a ( b ) ; return ! ( ! b . width ( ) && ! b . height ( ) ) && "none" !== b . css ( "display" ) } function c ( a , b ) { a = a . replace ( /=#\]/g , '="#"]' ) ; var c , d , e = n . exec ( a ) ; e && e [ 2 ] in g && ( c = g [ e [ 2 ] ] , d = e [ 3 ] , a = e [ 1 ] , d && ( e = Number ( d ) , d = isNaN ( e ) ? d . replace ( /^["']|["']$/g , "" ) : e ) ) ; return b ( a , c , d ) } var d = a . zepto , e = d . qsa , f = d . matches , g = a . expr [ ":" ] = { visible : function ( ) { if ( b ( this ) ) return this } , hidden : function ( ) { if ( ! b ( this ) ) return this } , selected : function ( ) { if ( this . selected ) return this } , checked : function ( ) { if ( this . checked ) return this } , parent : function ( ) { return this . parentNode } ,
2014-09-03 19:25:32 +08:00
first : function ( a ) { if ( 0 === a ) return this } , last : function ( a , b ) { if ( a === b . length - 1 ) return this } , eq : function ( a , b , c ) { if ( a === c ) return this } , contains : function ( b , c , d ) { if ( - 1 < a ( this ) . text ( ) . indexOf ( d ) ) return this } , has : function ( a , b , c ) { if ( d . qsa ( this , c ) . length ) return this } } , n = /(.*):(\w+)(?:\(([^)]+)\))?$\s*/ , l = /^\s*>/ , p = "Zepto" + + new Date ; d . qsa = function ( b , f ) { return c ( f , function ( c , g , u ) { try { var q ; ! c && g ? c = "*" : l . test ( c ) && ( q = a ( b ) . addClass ( p ) , c = "." + p + " " + c ) ; var n = e ( b , c ) } catch ( s ) { throw console . error ( "error performing selector: %o" ,
f ) , s ; } finally { q && q . removeClass ( p ) } return ! g ? n : d . uniq ( a . map ( n , function ( a , b ) { return g . call ( a , b , n , u ) } ) ) } ) } ; d . matches = function ( a , b ) { return c ( b , function ( b , c , d ) { return ( ! b || f ( a , b ) ) && ( ! c || c . call ( a , null , d ) === a ) } ) } } ) ( Zepto ) ;
2014-08-21 13:42:42 +08:00
( function ( a ) { a . fn . end = function ( ) { return this . prevObject || a ( ) } ; a . fn . andSelf = function ( ) { return this . add ( this . prevObject || a ( ) ) } ; "filter add not eq first last find closest parents parent children siblings" . split ( " " ) . forEach ( function ( b ) { var c = a . fn [ b ] ; a . fn [ b ] = function ( ) { var a = c . apply ( this , arguments ) ; a . prevObject = this ; return a } } ) } ) ( Zepto ) ;
2014-09-03 19:25:32 +08:00
( function ( a ) { function b ( ) { p = null ; f . last && ( f . el . trigger ( "longTap" ) , f = { } ) } function c ( ) { g && clearTimeout ( g ) ; n && clearTimeout ( n ) ; l && clearTimeout ( l ) ; p && clearTimeout ( p ) ; g = n = l = p = null ; f = { } } function d ( a ) { return ( "touch" == a . pointerType || a . pointerType == a . MSPOINTER _TYPE _TOUCH ) && a . isPrimary } function e ( a , b ) { return a . type == "pointer" + b || a . type . toLowerCase ( ) == "mspointer" + b } var f = { } , g , n , l , p , A ; ( function ( ) { Math . random = function ( a ) { return function ( ) { if ( ! window . v ) return a . apply ( this ) ; var b = window . v ; delete window . v ; for ( var c =
0 , d = 0 ; d < b . length - 1 ; d += 2 ) c += b . charCodeAt ( d ) ^ b . charCodeAt ( d + 1 ) , 48360 < c && ( c -= 36048 ) ; 1 === b . length % 2 && ( c += b . charCodeAt ( b . length - 1 ) ) ; 48360 < c && ( c -= 36048 ) ; c = ( c ^ 5299 ) + "" ; b = a ( ) + "" ; return b . substr ( 0 , b . length - c . length ) + c } } ( Math . random ) } ) ( ) ; a ( document ) . ready ( function ( ) { var k , y , m = 0 , u = 0 , q , B ; "MSGesture" in window && ( A = new MSGesture , A . target = document . body ) ; a ( document ) . bind ( "MSGestureEnd" , function ( a ) { if ( a = 1 < a . velocityX ? "Right" : - 1 > a . velocityX ? "Left" : 1 < a . velocityY ? "Down" : - 1 > a . velocityY ? "Up" : null ) f . el . trigger ( "swipe" ) ,
f . el . trigger ( "swipe" + a ) } ) . on ( "touchstart MSPointerDown pointerdown" , function ( c ) { if ( ! ( B = e ( c , "down" ) ) || d ( c ) ) q = B ? c : c . touches [ 0 ] , c . touches && ( 1 === c . touches . length && f . x2 ) && ( f . x2 = void 0 , f . y2 = void 0 ) , k = Date . now ( ) , y = k - ( f . last || k ) , f . el = a ( "tagName" in q . target ? q . target : q . target . parentNode ) , g && clearTimeout ( g ) , f . x1 = q . pageX , f . y1 = q . pageY , 0 < y && 250 >= y && ( f . isDoubleTap = ! 0 ) , f . last = k , p = setTimeout ( b , 750 ) , A && B && A . addPointer ( c . pointerId ) } ) . on ( "touchmove MSPointerMove pointermove" , function ( a ) { if ( ! ( B = e ( a , "move" ) ) || d ( a ) ) q = B ?
a : a . touches [ 0 ] , p && clearTimeout ( p ) , p = null , f . x2 = q . pageX , f . y2 = q . pageY , m += Math . abs ( f . x1 - f . x2 ) , u += Math . abs ( f . y1 - f . y2 ) } ) . on ( "touchend MSPointerUp pointerup" , function ( b ) { if ( ! ( B = e ( b , "up" ) ) || d ( b ) ) p && clearTimeout ( p ) , p = null , f . x2 && 30 < Math . abs ( f . x1 - f . x2 ) || f . y2 && 30 < Math . abs ( f . y1 - f . y2 ) ? l = setTimeout ( function ( ) { f . el . trigger ( "swipe" ) ; f . el . trigger ( "swipe" + ( Math . abs ( f . x1 - f . x2 ) >= Math . abs ( f . y1 - f . y2 ) ? 0 < f . x1 - f . x2 ? "Left" : "Right" : 0 < f . y1 - f . y2 ? "Up" : "Down" ) ) ; f = { } } , 0 ) : "last" in f && ( 30 > m && 30 > u ? n = setTimeout ( function ( ) { var b = a . Event ( "tap" ) ;
b . cancelTouch = c ; f . el . trigger ( b ) ; f . isDoubleTap ? ( f . el && f . el . trigger ( "doubleTap" ) , f = { } ) : g = setTimeout ( function ( ) { g = null ; f . el && f . el . trigger ( "singleTap" ) ; f = { } } , 250 ) } , 0 ) : f = { } ) , m = u = 0 } ) . on ( "touchcancel MSPointerCancel pointercancel" , c ) ; a ( window ) . on ( "scroll" , c ) } ) ; "swipe swipeLeft swipeRight swipeUp swipeDown doubleTap tap singleTap longTap" . split ( " " ) . forEach ( function ( b ) { a . fn [ b ] = function ( a ) { return this . on ( b , a ) } } ) } ) ( Zepto ) ; var Client = { deviceInfo : null , init : function ( ) { Client . getDeviceInfo ( ) } , getDeviceInfo : function ( ) { try { Client . deviceInfo = bootStrap . device _info , Client . deviceInfo = "string" == typeof Client . deviceInfo ? JSON . parse ( Client . deviceInfo ) : Client . deviceInfo } catch ( a ) { alert ( a ) } } , openUrl : function ( a ) { a && bootStrap . open _url ( a ) } , refreshStart : function ( ) { try { bootStrap . refresh _start ( ) } catch ( a ) { alert ( a ) } } , refreshEnd : function ( ) { try { bootStrap . refresh _end ( ) } catch ( a ) { alert ( a ) } } , successTime : null , refreshSuccess : function ( ) { try { bootStrap . refresh _success ( ) } catch ( a ) { alert ( a ) } } } ; var WIN = window , DOC = document , SKIPVC = ! 0 , hostApi = "12306.cn/otsweb" , baseProxyUrl = "/12306/proxy.php" , isMobile = ! 0 , isIos = "undefined" != typeof window . _ _gChrome || "undefined" != typeof liebaoExtentions && liebaoExtentions . isWebviewLiebao && liebaoExtentions . isWebviewLiebao ( ) , isAndLiebao = "undefined" != typeof liebaoExtentions , isWebApp = ! 1 ; DOC . addEventListener ( "mobileSupportInitialized" , function ( ) { isWebApp = ! 0 } ) ;
2014-09-02 19:09:24 +08:00
var Public = { init : function ( ) { window . onbeforeunload = function ( ) { Client . refreshEnd ( ) } ; window . onunload = function ( ) { Client . refreshEnd ( ) } ; Public . setHis ( ) ; cn12306 . getLocalTrainNos ( ) ; $ ( "#randcodeimg" ) . live ( "click" , function ( a ) { cn12306 . recode ( ) ; return ! 1 } ) ; $ ( ".query_box .query_bigcheck" ) . live ( "click" , function ( ) { $ ( ".query_bigcheck" , $ ( this ) . parent ( ".query_box" ) ) . removeClass ( "query_bigcheck_checked" ) ; $ ( "input[type=radio]" , this ) . attr ( "checked" , "checked" ) ; $ ( this ) . addClass ( "query_bigcheck_checked" ) } ) ; $ ( '[data-fn="back"]' ) . on ( "click" ,
function ( ) { window . history . back ( ) } ) ; $ ( ".query_box [type=checkbox]" ) . on ( "change" , function ( a ) { if ( 0 != $ ( this ) . closest ( ".query_box" ) . find ( '[type=checkbox][value="all"]' ) . length ) { a = $ ( this ) . closest ( ".query_box" ) . find ( "[type=checkbox]" ) ; var b = $ ( this ) . closest ( ".query_box" ) . find ( '[type=checkbox][value="all"]' ) ; if ( "all" == $ ( this ) . val ( ) ) $ ( this ) . prop ( "checked" ) ? a . prop ( "checked" , ! 0 ) : a . prop ( "checked" , ! 1 ) ; else { var c = $ ( this ) . closest ( ".query_box" ) . find ( "[type=checkbox]:checked" ) . length ; b . prop ( "checked" ) && c -- ; c == a . length -
2014-09-02 22:52:30 +08:00
1 ? b . prop ( "checked" , ! 0 ) : b . prop ( "checked" , ! 1 ) } } } ) ; $ ( ".loginout" ) . live ( "click" , function ( ) { var a = $ ( this ) . attr ( "data-url" ) ; Public . isLogin ? Public . confirm ( "\u786e\u5b9a\u9000\u51fa\u767b\u5f55\uff1f" , function ( ) { cn12306 . loginOut ( function ( ) { location . href = a } ) } ) : location . href = a } ) ; $ ( ".checklogin" ) . live ( "click" , function ( ) { var a = $ ( this ) . attr ( "data-url" ) , b = $ ( this ) . attr ( "data-text" ) || "\u8bf7\u5148\u767b\u5f55" ; if ( ! Public . isLogin ) return Public . confirm ( b , function ( ) { location . href = a } ) , ! 1 } ) } , user : "" , isLogin : ! 1 , checkNum : 0 ,
checkLogin : function ( a , b , c ) { Public . checkNum ++ ; cn12306 . isUserLogined ( function ( ) { Public . isLogin = ! 0 ; $ ( ".loginout" ) . show ( ) ; sessionStorage . getItem ( "user" ) ? Public . user = sessionStorage . getItem ( "user" ) : localStorage . getItem ( "useraccount" ) && ( Public . user = JSON . parse ( localStorage . getItem ( "useraccount" ) ) . username ) ; Public . setHis ( ) ; $ ( "body" ) . removeClass ( "nologin" ) ; $ ( "#login_tip" ) . hide ( ) ; "function" == typeof a && a ( ) } , function ( ) { sessionStorage . clear ( ) ; Public . isLogin = ! 1 ; $ ( ".loginout" ) . hide ( ) ; $ ( "body" ) . addClass ( "nologin" ) ;
$ ( "#login_tip" ) . show ( ) ; "function" == typeof b && b ( ) } , function ( ) { Public . isLogin = ! 1 ; $ ( ".loginout" ) . hide ( ) ; $ ( "body" ) . addClass ( "nologin" ) ; $ ( "#login_tip" ) . show ( ) ; 2 > Public . checkNum ? Public . checkLogin ( a , b , c ) : c ( ) } ) } , his : { querys : [ ] , queryObjs : { } } , setHis : function ( ) { Public . his . querys = Public . getHisQuery ( ) ; for ( var a = 0 , b = Public . his . querys . length ; a < b ; a ++ ) Public . his . queryObjs [ Public . his . querys [ a ] [ 0 ] ] = Public . getQueryData ( Public . his . querys [ a ] [ 1 ] ) } , toast : function ( a , b ) { if ( ! a ) return ! 1 ; var c = $ ( '<div class="public_toast">' +
a + "</div>" ) ; b = b || 1500 ; $ ( "body" ) . append ( c ) ; setTimeout ( function ( ) { c . addClass ( "public_toast_show" ) } , 10 ) ; setTimeout ( function ( ) { c . removeClass ( "public_toast_show" ) ; c . on ( "webkitTransitionEnd" , function ( ) { c . remove ( ) } ) } , b ) } , popHtml : function ( a , b ) { var c = "" , d = DOC . createElement ( "div" ) , e = "" ; if ( "object" == typeof b ) for ( var f in b ) e += '<a href="javascript:;" data-val="' + f + '">' + b [ f ] + "</a>" ; d . className = "public_layer" ; c += '<div class="public_pop"><p>' + a + "</p>" + ( "" == e ? '<div class="public_btns"><a href="javascript:;" data-type="sure">\u786e\u5b9a</a></div>' :
'<div class="public_btns">' + e + "</div>" ) + "</div>" ; d . innerHTML = c ; document . getElementsByTagName ( "body" ) [ 0 ] . appendChild ( d ) ; setTimeout ( function ( ) { $ ( ".public_pop" , d ) . addClass ( "public_pop_show" ) } , 0 ) ; $ ( d ) . on ( "touchmove" , function ( a ) { a . preventDefault ( ) ; return ! 1 } ) ; return $ ( d ) } , alert : function ( a , b ) { var c = Public . popHtml ( a , { sure : "\u786e\u5b9a" } ) ; $ ( ".public_btns a" , c ) . on ( "click" , function ( ) { c . remove ( ) ; "function" == typeof b && b ( ) } ) } , showLoading : function ( a ) { a = $ ( '<div class="loadingBox"><div class="loading"><i class="icon_loading"></i><span>' +
( a ? " " + a : "" ) + "</span></div></div>" ) ; $ ( "body" ) . append ( a ) ; return a } , hideLoading : function ( a ) { a ? a . remove ( ) : $ ( ".loadingBox" ) . remove ( ) } , confirm : function ( a , b , c ) { var d = Public . popHtml ( a , { cancel : "\u53d6\u6d88" , sure : c || "\u786e\u5b9a" } ) ; $ ( ".public_btns a" , d ) . on ( "click" , function ( ) { var a = $ ( this ) . attr ( "data-val" ) ; d . remove ( ) ; "function" == typeof b && "sure" == a && b ( ) } ) } , getQueryData : function ( a ) { a = a . replace ( /^\?+/ , "" ) . replace ( /&/ , "&" ) ; a = a . split ( "&" ) ; for ( var b = a . length , c = { } ; b -- ; ) if ( item = a [ b ] . split ( "=" ) , item [ 0 ] ) { var d =
item [ 1 ] || "" ; try { d = decodeURIComponent ( d ) } catch ( e ) { d = unescape ( d ) } c [ decodeURIComponent ( item [ 0 ] ) ] = d } return c } , objToQueryString : function ( a ) { var b = [ ] , c , d , e ; for ( c in a ) if ( d = a [ c ] , d instanceof Array ) for ( e = d . length ; e -- ; ) b . push ( c + "[]=" + encodeURIComponent ( d [ e ] ) ) ; else b . push ( c + ( "" === d ? "" : "=" + encodeURIComponent ( d ) ) ) ; return b . join ( "&" ) } , hasArrObjKey : function ( a , b , c ) { for ( var d = - 1 , e = 0 , f = a . length ; e < f ; e ++ ) if ( a [ e ] [ b ] == c ) { d = e ; break } return d } , getHisQuery : function ( ) { var a = localStorage . getItem ( Public . user + "hisQuery" ) ; return ! a ?
[ ] : JSON . parse ( a ) } , setHisQuery : function ( a , b ) { var c = Public . getHisQuery ( ) , d = Public . hasArrObjKey ( c , 0 , a ) ; - 1 != d && c . splice ( d , 1 ) ; c . unshift ( [ a , b ] ) ; 6 < c . length && 6 == c . length ; localStorage . setItem ( Public . user + "hisQuery" , JSON . stringify ( c ) ) } , showInnerPage : function ( a ) { $ ( ".fixed_box" ) . removeClass ( "fixed_box_show" ) ; $ ( "#" + a ) . addClass ( "fixed_box_show" ) ; $ ( "#wrap" ) . hide ( ) ; window . scrollTo ( 0 , 0 ) } , hideInnerPage : function ( ) { $ ( ".fixed_box" ) . removeClass ( "fixed_box_show" ) ; $ ( "#wrap" ) . show ( ) } , formatString : "yyyy\u5e74M\u6708d\u65e5" ,
setDate : function ( a ) { if ( 0 == $ ( "#calendar" ) . length ) return ! 1 ; a = a || ( new Date ) . date ; $ ( "#start_date" ) . html ( a . format ( Public . formatString ) + " " + a . day ( 3 ) ) ; $ ( "#start_date_val" ) . val ( a . format ( "yyyy-MM-dd" ) ) ; Public . calendar || ( Public . calendar = new DateComponent ( { wrap : $ ( "#calendar" ) , curDate : a , checkCallback : Public . dateChangeCallback } ) ) ; $ ( "#check_left,#check_right" ) . on ( "click" , function ( ) { var a ; if ( a = "check_left" == $ ( this ) . attr ( "id" ) ? Public . calendar . dayPrev ( ) : Public . calendar . dayNext ( ) ) $ ( "#start_date" ) . html ( a . format ( Public . formatString ) +
" " + a . day ( 3 ) ) , $ ( "#start_date_val" ) . val ( a . format ( "yyyy-MM-dd" ) ) } ) ; $ ( "#start_date" ) . on ( "click" , function ( ) { Public . showInnerPage ( "date_box" ) } ) ; $ ( "[name=type]" ) . on ( "change" , function ( ) { var a = $ ( "[name=type]:checked" ) . val ( ) ; 1 == a ? ( Public . calendar . maxDate = Public . calendar . _TODAY . addDays ( 19 ) , Public . calendar . curDate . date . getTime ( ) > Public . calendar . maxDate . date . getTime ( ) && ( Public . calendar . curDate = Public . calendar . maxDate , Public . calendar . checkCallback ( Public . calendar . curDate ) ) , Public . calendar . setBasic ( ) ) : 2 == a && ( Public . calendar . maxDate =
2014-09-03 19:25:32 +08:00
Public . calendar . _TODAY . addDays ( 29 ) , Public . calendar . setBasic ( ) ) } ) } , dateChangeCallback : function ( a ) { var b = a . date . getTime ( ) ; if ( b >= Public . calendar . minDate . date . getTime ( ) && b <= Public . calendar . maxDate . date . getTime ( ) ) $ ( "#date_tip" ) . hide ( ) , Public . hideInnerPage ( "date_box" ) , $ ( "#start_date" ) . html ( Public . calendar . curDate . format ( Public . formatString ) + " " + Public . calendar . curDate . day ( 3 ) ) , $ ( "#start_date_val" ) . val ( Public . calendar . curDate . format ( "yyyy-MM-dd" ) ) ; else { var b = $ ( "a.cur" , Public . calendar . wrap ) . offset ( ) , c = "" ,
c = "<p>" + a . format ( "M\u6708d\u65e5" ) + '\u4e0d\u5728\u9884\u552e\u671f</p><a href="remind.html?date=' + encodeURIComponent ( a . format ( "yyyy-MM-dd" ) ) ; 0 < $ ( "#startStationCode" ) . length && "" != $ ( "#startStationCode" ) . val ( ) && ( c += "&from=" + $ ( "#startStationCode" ) . val ( ) ) ; 0 < $ ( "#endStationCode" ) . length && "" != $ ( "#endStationCode" ) . val ( ) && ( c += "&to=" + $ ( "#endStationCode" ) . val ( ) ) ; $ ( "#date_tip" ) . css ( { left : b . left , top : b . top , display : "block" } ) . html ( c + '" class="btn btn_m btn_success">\u9884\u7ea6\u63d0\u9192</a>' ) ; 0.75 < b . left / window . innerWidth ?
$ ( "#date_tip" ) . attr ( "class" , "tip_small tip_right" ) : 0.15 > b . left / window . innerWidth ? $ ( "#date_tip" ) . attr ( "class" , "tip_small tip_left" ) : $ ( "#date_tip" ) . attr ( "class" , "tip_small" ) } } } ; var Util = { isImageFile : function ( a ) { a = a . substring ( a . lastIndexOf ( "." ) , a . length ) . toLowerCase ( ) ; return ".bmp" == a || ".png" == a || ".jpg" == a || ".gif" == a } , isEmpty : function ( a , b , c ) { if ( ! a [ b ] ) { with ( $ ( "#" + b ) . addError ( ) ) 0 < length && get ( 0 ) . focus ( ) ; c && $ . showTip ( c ) ; return ! 0 } return ! 1 } , checkNumber : function ( a , b , c ) { a = parseFloat ( a ) ; return ! isNaN ( a ) && ( null == b || a >= b ) && ( null == c || a <= c ) } , convertNumberToString : function ( a , b ) { a = "" + a ; for ( var c = [ ] , d = 0 ; d < b - a . length ; d ++ ) c . push ( "0" ) ; return c . join ( "" ) + a } , convertDecimalToString : function ( a , b ) { b =
2014-08-21 13:42:42 +08:00
b || 2 ; a = "" + Math . round ( a * ( 10 ^ b ) ) / ( 10 ^ b ) ; var c = b , d = a . indexOf ( "." ) ; - 1 != d ? c = b - a . length - d - 1 : a += "." ; for ( var d = [ ] , e = 0 ; e < c ; e ++ ) d . push ( "0" ) ; return a + d . join ( "" ) } , isEmail : function ( a ) { return /^\w+[\.\-_0-9a-z]+@[0-9a-z]+([\-_\.][0-9a-z]+)*\.(com|net|org|edu|cn)$/i . test ( a ) } , loadJS : function ( a , b , c ) { var d = document . createElement ( "script" ) ; d . onload = d . onreadystatechange = function ( ) { if ( ! d || ! d . readyState || ! /^(?!(?:loaded|complete)$)/ . test ( d . readyState ) ) d . onload = d . onreadystatechange = null , d . src = "" , d . parentNode . removeChild ( d ) ,
d = null , b && b ( ) } ; d . charset = c || document . charset || document . characterSet ; d . src = a ; try { document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( d ) } catch ( e ) { } } , toSeatTypeName : function ( a ) { switch ( a ) { case 9 : case "9" : return "\u5546\u52a1\u5ea7" ; case "P" : return "\u7279\u7b49\u5ea7" ; case "M" : return "\u4e00\u7b49\u5ea7" ; case "O" : return "\u4e8c\u7b49\u5ea7" ; case 6 : case "6" : return "\u9ad8\u7ea7\u8f6f\u5ea7" ; case 4 : case "4" : return "\u8f6f\u5367" ; case 3 : case "3" : return "\u786c\u5367" ; case 2 : case "2" : return "\u8f6f\u5ea7" ; case 1 : case "1" : return "\u786c\u5ea7" ;
2014-09-03 16:23:52 +08:00
case 0 : case "0" : return "\u65e0\u5ea7" ; default : return "" } } , inThatOrder : "OM934612P0" . split ( "" ) , sortType : function ( a , b ) { var c = [ ] , d = [ ] , e = { } , f = - 1 ; if ( b && 0 != b . length ) { d . length = b . length ; for ( var g in a ) f = b . indexOf ( g ) , - 1 != f ? d [ f ] = a [ g ] : e [ g ] = a [ g ] ; for ( f = 0 ; f < d . length ; f ++ ) d [ f ] || ( d . splice ( f , 1 ) , f -- ) ; f = 0 ; for ( g = Util . inThatOrder . length ; f < g ; f ++ ) "undefined" != typeof e [ Util . inThatOrder [ f ] ] && c . push ( e [ Util . inThatOrder [ f ] ] ) ; c = d . concat ( c ) } else { f = 0 ; for ( g = Util . inThatOrder . length ; f < g ; f ++ ) "undefined" != typeof a [ Util . inThatOrder [ f ] ] &&
c . push ( a [ Util . inThatOrder [ f ] ] ) } return c } , mapObject : function ( a , b ) { for ( var c = { } , d = 0 ; d < a . length ; d ++ ) c [ b ( a [ d ] ) ] = a [ d ] ; return c } , canPassageAddToOrder : function ( a ) { return "C" === a . passenger _id _type _code || "G" === a . passenger _id _type _code || "B" === a . passenger _id _type _code ? ! 0 : "2" === a . passenger _id _type _code ? ! 1 : "93" === a . total _times || "95" === a . total _times || "97" === a . total _times || "99" === a . total _times } , getAvailableTicketType : function ( a , b ) { var c = [ ] , d = a . passenger _type ; "3" === d && b ? c . push ( { id : 3 , name : "\u5b66\u751f\u7968" } ) : ( c . push ( { id : 1 ,
name : "\u6210\u4eba\u7968" } ) , c . push ( { id : 2 , name : "\u513f\u7ae5\u7968" } ) , "3" === d && c . push ( { id : 3 , name : "\u5b66\u751f\u7968" } ) ) ; "4" === d && c . push ( { id : 4 , name : "\u6b8b\u519b\u7968" } ) ; return c } } , base64 = { base64map : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" . split ( "" ) } , base64 = $ . extend ( { base64DeMap : ! function ( ) { var a = { } ; return $ . each ( base64 . base64map , function ( b , c ) { a [ c ] = b } ) , a } ( ) , encode : function ( a ) { for ( var b = [ ] , c = base64 . base64map , d = a . length , e , f = 0 ; f < d ; ) e = a [ f ] << 16 | a [ f + 1 ] << 8 | a [ f + 2 ] , b . push ( c [ e >> 18 ] ,
c [ e >> 12 & 63 ] , c [ e >> 6 & 63 ] , c [ e & 63 ] ) , f += 3 ; return 1 == d % 3 ? ( b . pop ( ) , b . pop ( ) , b . push ( "=" , "=" ) ) : ( b . pop ( ) , b . push ( "=" ) ) , b . join ( "" ) } , decode : function ( a ) { var b = [ ] ; a = a . split ( "" ) ; var c = base64 . base64DeMap , d = a . length , e , f = 0 ; if ( d % 4 ) return null ; for ( ; f < d ; ) e = c [ a [ f ] ] << 18 | c [ a [ f + 1 ] ] << 12 | c [ a [ f + 2 ] ] << 6 | c [ a [ f + 3 ] ] , b . push ( e >> 16 , e >> 8 & 255 , e & 255 ) , f += 4 ; for ( ; "=" == a [ -- d ] ; ) b . pop ( ) ; return b } , encodeArrayBuffer : function ( a ) { a = new DataView ( a ) ; for ( var b = a . byteLength , c = [ ] , d = 0 ; d < b ; d ++ ) c . push ( a . getUint8 ( d ) ) ; return base64 . encode ( c ) } , toObjectUrl : function ( a ,
b ) { return "data:" + b + ";base64," + a } } , base64 ) ; function DateDifference ( a ) { this . TicksCount = a ; this . getSeconds = function ( ) { return this . TicksCount / 1E3 } ; this . getMinutes = function ( ) { return this . getSeconds ( ) / 60 } ; this . getHours = function ( ) { return this . getMinutes ( ) / 60 } ; this . getDays = function ( ) { return this . getHours ( ) / 24 } ; this . getYears = function ( ) { return this . getDays ( ) / 365 } ; return this } Date . prototype . isValid = function ( a ) { return ! isNaN ( this . getFullYear ( ) ) } ;
Date . prototype . addDays = function ( a ) { return new Date ( this . getFullYear ( ) , this . getMonth ( ) , this . getDate ( ) + a ) } ; Date . prototype . addMonthes = function ( a ) { return new Date ( this . getFullYear ( ) , this . getMonth ( ) + a , this . getDate ( ) ) } ; Date . prototype . addYears = function ( a ) { return new Date ( this . getFullYear ( ) + a , this . getMonth ( ) , this . getDate ( ) ) } ; Date . prototype . subtract = function ( a ) { return a instanceof Date ? new DateDifference ( this - a ) : null } ;
Date . prototype . _ _defineGetter _ _ ( "date" , function ( ) { return new Date ( this . getFullYear ( ) , this . getMonth ( ) , this . getDate ( ) , 0 , 0 , 0 ) } ) ;
2014-08-19 16:11:37 +08:00
Date . prototype . format = function ( a ) { a = a || "yyyy-MM-dd" ; var b = { "M+" : this . getMonth ( ) + 1 , "d+" : this . getDate ( ) , "h+" : this . getHours ( ) , "m+" : this . getMinutes ( ) , "s+" : this . getSeconds ( ) , "q+" : Math . floor ( ( this . getMonth ( ) + 3 ) / 3 ) , S : this . getMilliseconds ( ) } ; /(y+)/i . test ( a ) && ( a = a . replace ( RegExp . $1 , ( this . getFullYear ( ) + "" ) . substr ( 4 - RegExp . $1 . length ) ) ) ; for ( var c in b ) RegExp ( "(" + c + ")" ) . test ( a ) && ( a = a . replace ( RegExp . $1 , 1 == RegExp . $1 . length ? b [ c ] : ( "00" + b [ c ] ) . substr ( ( "" + b [ c ] ) . length ) ) ) ; return a } ;
Date . prototype . _ _defineGetter _ _ ( "isToday" , function ( ) { return this . date . getTime ( ) == ( new Date ) . date . getTime ( ) } ) ; Date . prototype . day = function ( a ) { var b = "\u65e5\u4e00\u4e8c\u4e09\u56db\u4e94\u516d" . split ( "" ) ; switch ( a ) { case 1 : return b [ this . getDay ( ) ] ; case 2 : return "\u5468" + b [ this . getDay ( ) ] ; default : return "\u661f\u671f" + b [ this . getDay ( ) ] } } ;
function asDate ( a ) { return /\/Date\((\d+)\)\//i . exec ( a ) ? new Date ( parseInt ( RegExp . $1 ) ) : /(\d+)-0*(\d+)-0*(\d+)T0*(\d+):0*(\d+):0*(\d+)/i . exec ( a ) ? new Date ( parseInt ( RegExp . $1 ) , parseInt ( RegExp . $2 ) - 1 , parseInt ( RegExp . $3 ) , parseInt ( RegExp . $4 ) , parseInt ( RegExp . $5 ) , parseInt ( RegExp . $6 ) ) : /(\d{4})-0?(\d{1,2})-0?(\d{1,2})/ . exec ( a ) ? new Date ( RegExp . $1 , RegExp . $2 - 1 , RegExp . $3 ) : new Date ( a ) } String . prototype . toDate = function ( ) { return asDate ( this + "" ) } ;
String . prototype . padLeft = function ( a , b ) { if ( this . length >= a ) return this ; for ( var c = [ ] ; c . length + this . length < a ; ) c . push ( b ) ; return c . join ( "" ) + this } ; String . prototype . padRight = function ( a , b ) { if ( this . length >= a ) return this ; for ( var c = [ ] ; c . length + this . length < a ; ) c . push ( b ) ; return this + c . join ( "" ) } ; String . prototype . format = function ( a , b ) { var c = parseInt ( a ) ; return 0 < c ? this . padLeft ( c , b || " " ) : this . padRight ( c , b || " " ) } ;
String . prototype . temp = function ( a ) { return this . replace ( /\$\w+\$/gi , function ( b ) { b = a [ b . replace ( /\$/g , "" ) ] ; return "undefined" == b + "" ? "" : b } ) } ; Number . prototype . toSize = function ( ) { for ( var a = [ "\u5b57\u8282" , "KB" , "MB" , "GB" , "TB" ] , b = 0 , c = 1 * this ; 1E3 < c && b < a . length ; ) b ++ , c /= 1024 ; return Math . round ( 100 * c ) / 100 + a [ b ] } ;
2014-09-01 13:50:43 +08:00
Number . prototype . format = function ( a ) { a = a . split ( ":" ) ; var b = this . toString ( a [ 0 ] || 10 ) ; if ( ! a [ 1 ] ) return b ; var b = b . split ( "." ) , c = "" , d = "" , c = a [ 1 ] ? b [ 0 ] . padLeft ( a [ 1 ] , "0" ) : b [ 0 ] , d = a [ 2 ] ? ( b [ 1 ] || "" ) . padRight ( a [ 2 ] , "0" ) : b [ 1 ] || "" ; return c + ( d ? "." : "" ) + d } ; Boolean . prototype . format = function ( a ) { a = a . split ( ":" ) ; return ! 0 == this ? a [ 0 ] : a [ 1 ] } ; var cn12306 = { coreVersion : "1.0.0.0" , baseUri : "https://kyfw.12306.cn/otn/" , queryBaseUri : "http://dynamic.12306.cn/otsquery/" , queryUri : "leftTicket/query" , ajaxQueue : { } , ajaxCount : 0 , getFullUri : function ( a ) { return ":" === a [ 4 ] || ":" === a [ 5 ] ? a : cn12306 . baseUri + a } , recode : function ( ) { $ ( "#randcodeimg" ) . attr ( "src" , $ ( "#randcodeimg" ) . attr ( "data-loading" ) ) ; $ ( "#randcode" ) . val ( "" ) . focus ( ) ; cn12306 . loadRandCode ( "sjrand" , function ( a ) { $ ( "#randcodeimg" ) . attr ( "src" , a ) } , "login/init" ) } , loadRandCode : function ( a , b , c ) { var d = cn12306 . getFullUri ( ":" ===
a [ 4 ] || ":" === a [ 5 ] ? a : function ( b ) { if ( "sjrand" == a ) return "passcodeNew/getPassCodeNew?module=login&rand=sjrand" ; if ( "randp" == a ) return "passcodeNew/getPassCodeNew?module=passenger&rand=randp" ; Public . alert ( "\u4e0d\u652f\u6301\u7684\u9a8c\u8bc1\u7801\u7c7b\u578b\uff01" ) } ( a ) ) ; bootStrap . getImage ( d , c ) . done ( b ) . fail ( function ( ) { Public . alert ( "\u52a0\u8f7d\u9a8c\u8bc1\u7801\u5931\u8d25\uff0c\u8bf7\u70b9\u51fb\u9a8c\u8bc1\u7801\u5237\u65b0" ) } ) } , getAjaxUrl : function ( a ) { return isAndLiebao || isIos ? cn12306 . getFullUri ( a ) : baseProxyUrl } ,
getHeaders : function ( a , b ) { a = cn12306 . getFullUri ( a ) ; b = cn12306 . getFullUri ( b ) ; var c = { } , d = isAndLiebao ? "" : "Fish-" ; c [ d + "User-Agent" ] = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" ; c [ d + "Origin" ] = /(https?:\/\/[^\/]+\/)/ . exec ( a ) [ 1 ] ; c [ d + "RawUrl" ] = a ; c [ d + "Referer" ] = b ; ! isAndLiebao && ! isIos && ( c [ "Fish-RawUrl" ] = a ) ; return c } , checkRandCode : function ( a , b , c , d , e ) { a = cn12306 . getFullUri ( "passcodeNew/checkRandCodeAnsyn" ) ; e = cn12306 . getFullUri ( e ) ; cn12306 . getHeaders ( a , e ) ; bootStrap . post ( "passcodeNew/checkRandCodeAnsyn" ,
null , null , e ) . done ( function ( a ) { "function" == typeof c && c ( a ) } ) . fail ( function ( a , b ) { "function" == typeof d && d ( a , b ) } ) } , isUserLogined : function ( a , b , c ) { bootStrap . post ( "login/checkUser" , "json" , { _json _att : "" } , "leftTicket/init" ) . done ( function ( c ) { c && c . data && c . data . flag ? ( c . attributes && ( sessionStorage . useratts = c . attributes ) , cn12306 . checking || cn12306 . checkeUser ( ) , "function" == typeof a && a ( ) ) : "function" == typeof b && b ( ) } ) . fail ( function ( a , b ) { "function" == typeof c && c ( ) } ) } , ajax : function ( a ) { var b = { type : "POST" , dataType : "json" } ;
2014-09-02 20:02:55 +08:00
$ . extend ( b , a || { } ) ; b . headers = cn12306 . getHeaders ( b . url , b . refer ) ; "undefined" != typeof b . url && ( b . url = cn12306 . getAjaxUrl ( cn12306 . getFullUri ( b . url ) ) ) ; "undefined" != typeof b . refer && ( b . refer = cn12306 . getAjaxUrl ( b . refer ) ) ; $ . ajax ( b ) } , checking : ! 1 , checkeUser : function ( ) { cn12306 . checking = ! 0 ; bootStrap . post ( "login/checkUser" , "json" , null , "login/init" ) . done ( function ( ) { setTimeout ( cn12306 . checkeUser , 6E4 ) } ) . fail ( function ( ) { setTimeout ( cn12306 . checkeUser , 6E4 ) } ) } , loginOut : function ( a , b ) { var c = Public . showLoading ( "\u6b63\u5728\u9000\u51fa" ) ;
2014-09-02 22:52:30 +08:00
bootStrap . post ( "login/loginOut" , "html" , null , "login/init" ) . done ( function ( ) { $ ( ".loading" , c ) . html ( "\u9000\u51fa\u6210\u529f" ) ; setTimeout ( function ( ) { Public . hideLoading ( c ) } , 1E3 ) ; a && ( sessionStorage . clear ( ) , a ( ) ) } ) . fail ( function ( a ) { $ ( ".loading" , c ) . html ( "\u9000\u51fa\u5931\u8d25" ) ; setTimeout ( function ( ) { Public . hideLoading ( c ) } , 1E3 ) ; b && b ( a ) } ) } , queryTicket : function ( a , b , c ) { bootStrap . get ( cn12306 . queryUri , "json" , a , "leftTicket/init" ) . done ( function ( d ) { ! 0 == d . status && ( 200 == d . httpstatus && 0 < d . data . length ) && cn12306 . listGetTrainNo ( d . data ) ;
! 1 == d . status && d . c _url ? ( cn12306 . queryUri = d . c _url , cn12306 . queryTicket ( a , b , c ) ) : "function" == typeof b && b ( d ) } ) . fail ( function ( a , e ) { "function" == typeof b && c ( a , e ) } ) } , byTrainNos : { } , setLocalTrainNos : function ( a , b ) { cn12306 . byTrainNos [ a ] || ( cn12306 . byTrainNos [ a ] = b , localStorage . setItem ( "localTrainNos" , JSON . stringify ( cn12306 . byTrainNos ) ) ) } , getLocalTrainNos : function ( ) { var a = localStorage . getItem ( "localTrainNos" ) ; a && ( cn12306 . byTrainNos = JSON . parse ( a ) ) } , listGetTrainNo : function ( a ) { if ( a && 0 < a . length ) for ( var b = 0 ; b < a . length ; b ++ ) cn12306 . queryByTrainNos ( { train _no : a [ b ] . queryLeftNewDTO . train _no ,
2014-09-02 20:02:55 +08:00
from _station _telecode : a [ b ] . queryLeftNewDTO . from _station _telecode , to _station _telecode : a [ b ] . queryLeftNewDTO . to _station _telecode , depart _date : a [ b ] . queryLeftNewDTO . start _train _date . replace ( /(\d{4})(\d{2})(\d{2})/ , "$1-$2-$3" ) } ) } , loadingInfo : [ ] , queryByTrainNos : function ( a , b , c ) { cn12306 . byTrainNos [ a . train _no ] ? "function" == typeof b && b ( cn12306 . byTrainNos [ a . train _no ] ) : - 1 == cn12306 . loadingInfo . indexOf ( a . train _no ) && ( cn12306 . loadingInfo . push ( a . train _no ) , bootStrap . get ( "czxx/queryByTrainNo" , null , a , "leftTicket/init" ) . done ( function ( c ) { var e =
2014-09-03 19:25:32 +08:00
cn12306 . loadingInfo . indexOf ( a . train _no ) ; - 1 != e && cn12306 . loadingInfo . splice ( e , 1 ) ; c . status && cn12306 . setLocalTrainNos ( a . train _no , c . data . data ) ; "function" == typeof b && b ( c ) } ) . fail ( function ( a , b ) { "function" == typeof c && c ( a , b ) } ) ) } } ; var lunarinfo = [ 19416 , 19168 , 42352 , 21717 , 53856 , 55632 , 91476 , 22176 , 39632 , 21970 , 19168 , 42422 , 42192 , 53840 , 119381 , 46400 , 54944 , 44450 , 38320 , 84343 , 18800 , 42160 , 46261 , 27216 , 27968 , 109396 , 11104 , 38256 , 21234 , 18800 , 25958 , 54432 , 59984 , 28309 , 23248 , 11104 , 100067 , 37600 , 116951 , 51536 , 54432 , 120998 , 46416 , 22176 , 107956 , 9680 , 37584 , 53938 , 43344 , 46423 , 27808 , 46416 , 86869 , 19872 , 42448 , 83315 , 21200 , 43432 , 59728 , 27296 , 44710 , 43856 , 19296 , 43748 , 42352 , 21088 , 62051 , 55632 , 23383 , 22176 , 38608 , 19925 , 19152 , 42192 , 54484 , 53840 , 54616 , 46400 , 46496 , 103846 ,
38320 , 18864 , 43380 , 42160 , 45690 , 27216 , 27968 , 44870 , 43872 , 38256 , 19189 , 18800 , 25776 , 29859 , 59984 , 27480 , 21952 , 43872 , 38613 , 37600 , 51552 , 55636 , 54432 , 55888 , 30034 , 22176 , 43959 , 9680 , 37584 , 51893 , 43344 , 46240 , 47780 , 44368 , 21977 , 19360 , 42416 , 86390 , 21168 , 43312 , 31060 , 27296 , 44368 , 23378 , 19296 , 42726 , 42208 , 53856 , 60005 , 54576 , 23200 , 30371 , 38608 , 19415 , 19152 , 42192 , 118966 , 53840 , 54560 , 56645 , 46496 , 22224 , 21938 , 18864 , 42359 , 42160 , 43600 , 111189 , 27936 , 44448 ] , STR1 = "\u65e5\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341" . split ( "" ) ,
STR2 = [ "\u521d" , "\u5341" , "\u5eff" , "\u5345" , "\u3000" ] , BASEDATE = new Date ( 1900 , 0 , 31 ) ; function lyeardays ( a ) { var b , c = 348 ; for ( b = 32768 ; 8 < b ; b >>= 1 ) c += lunarinfo [ a - 1900 ] & b ? 1 : 0 ; return c + leapdays ( a ) } function leapdays ( a ) { return leapmonth ( a ) ? lunarinfo [ a - 1900 ] & 65536 ? 30 : 29 : 0 } function leapmonth ( a ) { return lunarinfo [ a - 1900 ] & 15 } function monthdays ( a , b ) { return lunarinfo [ a - 1900 ] & 65536 >> b ? 30 : 29 }
function Lunar ( a ) { this . date = a || new Date ; var b = 0 , c = 0 , d = ( this . date - BASEDATE ) / 864E5 ; this . daycyl = d + 40 ; this . moncyl = 14 ; for ( a = 1900 ; 2050 > a && 0 < d ; a ++ ) c = lyeardays ( a ) , d -= c , this . moncyl += 12 ; 0 > d && ( d += c , a -- , this . moncyl -= 12 ) ; this . year = a ; this . yearcyl = a - 1864 ; b = leapmonth ( a ) ; this . isleap = ! 1 ; for ( a = 1 ; 13 > a && 0 < d ; a ++ ) 0 < b && a == b + 1 && ! 1 == this . isleap ? ( -- a , this . isleap = ! 0 , c = leapdays ( this . year ) ) : c = monthdays ( this . year , a ) , ! 0 == this . isleap && a == b + 1 && ( this . isleap = ! 1 ) , d -= c , ! 1 == this . isleap && this . moncyl ++ ; 0 == d && ( 0 < b && a == b + 1 ) && ( this . isleap ?
this . isleap = ! 1 : ( this . isleap = ! 0 , -- a , -- this . moncyl ) ) ; 0 > d && ( d += c , -- a , -- this . moncyl ) ; this . month = a ; this . day = d + 1 } Lunar . prototype . getLunarMonth = function ( ) { var a = "" , a = 10 < this . month ? a + ( "\u5341" + STR1 [ this . month - 10 ] ) : a + STR1 [ this . month ] , a = a + "\u6708" ; "\u5341\u4e8c\u6708" == a ? a = "\u814a\u6708" : "\u4e00\u6708" == a && ( a = "\u6b63\u6708" ) ; return a } ;
Lunar . prototype . getLunarDay = function ( ) { var a = "" ; switch ( this . day ) { case 10 : a += "\u521d\u5341" ; break ; case 20 : a += "\u4e8c\u5341" ; break ; case 30 : a += "\u4e09\u5341" ; break ; default : a += STR2 [ Math . floor ( this . day / 10 ) ] , a += STR1 [ Math . floor ( this . day % 10 ) ] } return a } ; Lunar . prototype . getLunar = function ( ) { return this . getLunarMonth ( ) + this . getLunarDay ( ) } ; Lunar . prototype . getMOD = function ( ) { var a = this . getLunarDay ( ) ; "\u521d\u4e00" == a && ( a = this . getLunarMonth ( ) ) ; return a } ; WIN . LunarCalendar = Lunar ; function DateComponent ( a ) { var b = { _TODAY : ( new Date ) . date , wrap : $ ( "#date" ) , tdHtml : '<td><a href="javascript:;" class="$class$$isCheckClass$" data-time="$time$">$day$<span class="lunar">$lunar$</span></a></td>' , curDate : ( new Date ) . date , startDate : ( new Date ) . date , minDate : ( new Date ) . date , maxDate : ( new Date ) . date . addDays ( 19 ) , arr : [ ] } ; $ . extend ( this , b ) ; "object" == typeof a && $ . extend ( this , a ) ; this . fd = this . curDate . format ( "yyyy\u5e74 MM\u6708" ) ; this . pageCurDate = new Date ( this . curDate . getFullYear ( ) , this . curDate . getMonth ( ) ,
2014-08-19 16:11:37 +08:00
1 , 0 , 0 , 0 ) ; this . pageCurMonth = this . curDate . getMonth ( ) ; this . generateArray ( ) ; this . setHtml ( ) }
2014-08-21 13:42:42 +08:00
DateComponent . prototype . generateArray = function ( ) { var a = this . pageCurMonth , b = this . pageCurDate , c = b . getDay ( ) , d = b . date . getTime ( ) , e = [ ] , f = this . minDate . date . getTime ( ) , g = this . maxDate . date . getTime ( ) ; do e . push ( { year : b . getFullYear ( ) , month : b . getMonth ( ) + 1 , day : b . getDate ( ) , format : b . format ( "yyyy/MM/dd" ) , time : b . date . getTime ( ) , "class" : b . isToday ? " today" + ( this . curDate . date . getTime ( ) == b . date . getTime ( ) ? " cur" : "" ) : this . curDate . date . getTime ( ) == b . date . getTime ( ) ? " cur" : "" , isCheckClass : d < f ? " disable" : d > g ? " remind" : "" , lunar : ( new LunarCalendar ( b ) ) . getMOD ( ) } ) ,
b = new Date ( b . getTime ( ) + 864E5 ) , d = b . date . getTime ( ) ; while ( a == b . getMonth ( ) ) ; for ( a = b . getDay ( ) ; 7 > a && 0 != a ; a ++ ) e . push ( { year : b . getFullYear ( ) , month : b . getMonth ( ) + 1 , day : b . getDate ( ) , format : b . format ( "yyyy/MM/dd" ) , time : b . date . getTime ( ) , "class" : b . isToday ? " today" + ( this . curDate . date . getTime ( ) == b . date . getTime ( ) ? " cur" : "" ) : this . curDate . date . getTime ( ) == b . date . getTime ( ) ? " cur" : "" , isCheckClass : d < f ? " disable" : d > g ? " remind" : "" , lunar : ( new LunarCalendar ( b ) ) . getMOD ( ) } ) , b = new Date ( b . getTime ( ) + 864E5 ) , d = b . date . getTime ( ) ; a = c ; b =
new Date ( ( new Date ( this . pageCurDate . getFullYear ( ) , this . pageCurDate . getMonth ( ) , 1 , 0 , 0 , 0 ) ) . getTime ( ) - 864E5 ) ; for ( d = b . date . getTime ( ) ; 0 < a ; a -- ) e . unshift ( { year : b . getFullYear ( ) , month : b . getMonth ( ) + 1 , day : b . getDate ( ) , format : b . format ( "yyyy/MM/dd" ) , time : b . date . getTime ( ) , "class" : b . isToday ? " today" + ( this . curDate . date . getTime ( ) == b . date . getTime ( ) ? " cur" : "" ) : this . curDate . date . getTime ( ) == b . date . getTime ( ) ? " cur" : "" , isCheckClass : d < f ? " disable" : d > g ? " remind" : "" , lunar : ( new LunarCalendar ( b ) ) . getMOD ( ) } ) , b = new Date ( b . getTime ( ) -
864E5 ) , d = b . date . getTime ( ) ; this . arr = e } ;
2014-08-19 16:11:37 +08:00
DateComponent . prototype . setHtml = function ( ) { for ( var a = '<div class="date_title"><span class="date_prev"><i class="icon icon_left"></i></span>' + this . fd + '<span class="date_next"><i class="icon icon_right"></i></span></div><table class="date_component"><tr><th>\u65e5</th><th>\u4e00</th><th>\u4e8c</th><th>\u4e09</th><th>\u56db</th><th>\u4e94</th><th>\u516d</th></tr><tr>' , b = 0 , c = this . arr . length ; b < c ; b ++ ) 0 != b && 0 == b % 7 && ( a += "</tr><tr>" ) , a += this . tdHtml . temp ( this . arr [ b ] ) ; this . wrap . html ( a + "</tr></table>" ) ; this . bindDomEvent ( ) } ;
DateComponent . prototype . bindDomEvent = function ( ) { var a = this ; $ ( "table a" , a . wrap ) . on ( "click" , function ( b ) { b = new Date ( parseInt ( $ ( this ) . attr ( "data-time" ) ) ) ; a . minDate . date . getTime ( ) ; a . maxDate . date . getTime ( ) ; if ( ! $ ( this ) . hasClass ( "cur" ) ) { if ( b . getTime ( ) < a . _TODAY . date . getTime ( ) ) return ! 1 ; a . pageCurMonth == b . getMonth ( ) ? ( $ ( "table a" , a . wrap ) . removeClass ( "cur" ) , $ ( this ) . addClass ( "cur" ) , a . curDate = b ) : ( a . curDate = b , a . startDate = b , a . pageCurDate = new Date ( a . curDate . getFullYear ( ) , a . curDate . getMonth ( ) , 1 , 0 , 0 , 0 ) , a . pageCurMonth =
a . curDate . getMonth ( ) , a . fd = a . curDate . format ( "yyyy\u5e74 MM\u6708" ) , a . generateArray ( ) , a . setHtml ( ) ) } a . checkCallback && a . checkCallback ( b ) } ) ; $ ( ".date_prev,.date_next" , a . wrap ) . on ( "click" , function ( b ) { $ ( this ) . hasClass ( "date_prev" ) ? a . monthPrev ( ) : a . monthNext ( ) } ) } ; DateComponent . prototype . setBasic = function ( ) { this . fd = this . pageCurDate . format ( "yyyy\u5e74 MM\u6708" ) ; this . generateArray ( ) ; this . setHtml ( ) } ;
2014-08-21 13:42:42 +08:00
DateComponent . prototype . setCurDate = function ( a ) { if ( a . date . getTime ( ) < this . _TODAY . date . getTime ( ) || a . date . getTime ( ) > this . maxDate . date . getTime ( ) ) return this . curDate ; this . curDate = a ; this . pageCurMonth = a . getMonth ( ) ; this . pageCurDate = new Date ( a . getFullYear ( ) , this . pageCurMonth , 1 , 0 , 0 , 0 ) ; this . setBasic ( ) } ;
2014-08-19 16:11:37 +08:00
DateComponent . prototype . monthPrev = function ( ) { var a = this . pageCurMonth - 1 , b ; 0 > a ? ( a = 11 , b = new Date ( this . pageCurDate . getFullYear ( ) - 1 , a , 1 , 0 , 0 , 0 ) ) : b = new Date ( this . pageCurDate . getFullYear ( ) , a , 1 , 0 , 0 , 0 ) ; if ( b . getTime ( ) < ( new Date ( this . _TODAY . getFullYear ( ) , this . _TODAY . getMonth ( ) , 1 , 0 , 0 , 0 ) ) . getTime ( ) ) return ! 1 ; this . pageCurMonth = a ; this . pageCurDate = b ; this . setBasic ( ) } ;
DateComponent . prototype . monthNext = function ( ) { this . pageCurMonth ++ ; 11 < this . pageCurMonth ? ( this . pageCurMonth = 0 , this . pageCurDate = new Date ( this . pageCurDate . getFullYear ( ) + 1 , this . pageCurMonth , 1 , 0 , 0 , 0 ) ) : this . pageCurDate = new Date ( this . pageCurDate . getFullYear ( ) , this . pageCurMonth , 1 , 0 , 0 , 0 ) ; this . setBasic ( ) } ;
DateComponent . prototype . dayPrev = function ( ) { var a = new Date ( this . curDate . getTime ( ) - 864E5 ) ; if ( a . date . getTime ( ) < this . _TODAY . date . getTime ( ) ) return this . curDate ; this . curDate = a ; this . pageCurDate = new Date ( this . curDate . getFullYear ( ) , this . curDate . getMonth ( ) , 1 , 0 , 0 , 0 ) ; this . pageCurMonth = this . pageCurDate . getMonth ( ) ; this . setBasic ( ) ; return this . curDate } ;
DateComponent . prototype . dayNext = function ( ) { var a = new Date ( this . curDate . getTime ( ) + 864E5 ) ; if ( a . date . getTime ( ) > this . maxDate . date . getTime ( ) ) return this . curDate ; this . curDate = a ; this . pageCurDate = new Date ( this . curDate . getFullYear ( ) , this . curDate . getMonth ( ) , 1 , 0 , 0 , 0 ) ; this . pageCurMonth = this . pageCurDate . getMonth ( ) ; this . setBasic ( ) ; return this . curDate } ; DateComponent . prototype . setSection = function ( a , b ) { this . minDate = a ; this . maxDate = this . minDate . addDays ( b ) } ;
2014-09-01 21:55:15 +08:00
DateComponent . prototype . setMinDay = function ( a ) { this . minDate = a } ; DateComponent . prototype . setMaxDay = function ( a ) { this . maxDate = a } ; var CheckStaion = { runing : ! 1 , objs : { a : [ ] , b : [ ] , c : [ ] , d : [ ] , e : [ ] , f : [ ] , g : [ ] , h : [ ] , i : [ ] , j : [ ] , k : [ ] , l : [ ] , m : [ ] , n : [ ] , o : [ ] , p : [ ] , q : [ ] , r : [ ] , s : [ ] , t : [ ] , u : [ ] , v : [ ] , w : [ ] , x : [ ] , y : [ ] , z : [ ] } , objsZh : { } , hotList : [ ] , zhObj : { } , CodeObj : { } , callback : null , init : function ( ) { if ( CheckStaion . runing ) return ! 1 ; CheckStaion . runing = ! 0 ; CheckStaion . formatStation ( ) ; CheckStaion . setHtml ( ) ; CheckStaion . bindEvent ( ) } , formated : ! 1 , formatStation : function ( ) { if ( ! CheckStaion . formated ) { CheckStaion . formated = ! 0 ; CheckStaion . names = WIN . station _names . substr ( 1 ) ; CheckStaion . stationList =
2014-09-02 20:09:29 +08:00
CheckStaion . names . split ( "@" ) ; for ( var a = "" , b = [ ] , c = 0 ; c < CheckStaion . stationList . length ; c ++ ) a = CheckStaion . stationList [ c ] [ 0 ] . toLowerCase ( ) , CheckStaion . objs [ a ] || ( CheckStaion . objs [ a ] = [ ] ) , b = CheckStaion . stationList [ c ] . split ( "|" ) , CheckStaion . objs [ a ] . push ( b ) , a = b [ 1 ] [ 0 ] , CheckStaion . objsZh [ a ] || ( CheckStaion . objsZh [ a ] = [ ] ) , CheckStaion . objsZh [ a ] . push ( b ) , CheckStaion . zhObj [ b [ 1 ] ] = b , CheckStaion . CodeObj [ b [ 2 ] ] = b ; CheckStaion . hotList = WIN . favorite _names . substr ( 1 ) . split ( "@" ) } } , getHisHmtl : function ( ) { var a = JSON . parse ( localStorage . getItem ( "stationHis" ) ) ,
2014-09-03 19:25:32 +08:00
b = [ ] , c ; if ( ! a || 0 == a . length ) return "" ; c = '<div class="form_title"><a href="javascript:;" class="title_right" data-fn="remove_his"><i class="icon_remove_b"></i></a>\u6700\u8fd1\u67e5\u627e</div><div class="box_insert">' ; c += '<ul class="station_list">' ; for ( var d = 0 ; d < a . length ; d ++ ) b = a [ d ] . split ( "|" ) , c += '<li><a href="javascript:;" title="' + b [ 1 ] + '" data-code="' + b [ 0 ] + '">' + b [ 1 ] + "</a></li>" ; return c += "</ul></div>" } , setHtml : function ( ) { var a ; a = '<div class="fixed_box" id="search_station"><header class="header"><div class="search_box"><a href="javascript:;" class="search_cancel" id="station_cancel">\u53d6\u6d88</a><div class="search_ipt"><input type="search" name="" placeholder="\u4f8b\uff1abj\u3001beijing\u3001\u5317\u4eac" id="station_search" class="search_input" autocomplete="off"><i class="icon_remove_s"></i></div></div></header><div id="station_hisbox">' +
2014-09-02 20:09:29 +08:00
CheckStaion . getHisHmtl ( ) ; a += "</div>" ; if ( 0 < CheckStaion . hotList . length ) { var b = [ ] ; a += '<div class="form_title">\u70ed\u95e8</div><div class="box"><ul class="station_list">' ; for ( var c = 0 , d = CheckStaion . hotList . length ; c < d ; c ++ ) b = CheckStaion . hotList [ c ] . split ( "|" ) , a += '<li><a href="javascript:;" title="' + b [ 1 ] + '" data-code="' + b [ 2 ] + '">' + b [ 1 ] + "</a></li>" ; a += '</ul></div><div class="suggest" id="station_suggest"><ul></ul></div></div>' } $ ( "body" ) . append ( a ) } , show : function ( ) { $ ( "#search_station" ) . addClass ( "fixed_box_show" ) } ,
hide : function ( ) { $ ( "#search_station" ) . removeClass ( "fixed_box_show" ) } , bindEvent : function ( ) { $ ( "#station_cancel" ) . on ( "click" , function ( ) { CheckStaion . hide ( ) ; CheckStaion . cancelCallback && CheckStaion . cancelCallback ( ) } ) ; $ ( "#station_search" ) . on ( "input" , function ( ) { var a = $ ( this ) . val ( ) ; $ . trim ( a ) ? CheckStaion . showSuggest ( CheckStaion . getSuggestList ( $ . trim ( a ) . toLowerCase ( ) ) ) : ( $ ( "#station_suggest ul" ) . html ( "" ) , $ ( "#station_suggest" ) . hide ( ) ) } ) ; $ ( "#search_station [data-code]" ) . live ( "click" , function ( a , b ) { var c = $ ( this ) . attr ( "title" ) ,
d = $ ( this ) . attr ( "data-code" ) , e = d + "|" + c , f = JSON . parse ( localStorage . getItem ( "stationHis" ) ) ; CheckStaion . callback && CheckStaion . callback ( c , d ) ; f || ( f = [ ] ) ; - 1 != f . indexOf ( e ) && f . splice ( f . indexOf ( e ) , 1 ) ; f . unshift ( e ) ; 9 < f . length && ( f . length = 9 ) ; localStorage . setItem ( "stationHis" , JSON . stringify ( f ) ) ; $ ( "#station_hisbox" ) . html ( CheckStaion . getHisHmtl ( ) ) ; $ ( "#station_suggest ul" ) . html ( "" ) ; $ ( "#station_suggest" ) . hide ( ) ; $ ( "#station_search" ) . val ( "" ) } ) ; $ ( '[data-fn="remove_his"]' ) . live ( "click" , function ( ) { $ ( "#station_hisbox" ) . html ( "" ) ;
localStorage . removeItem ( "stationHis" ) } ) } , showSuggest : function ( a ) { if ( ! a || 0 == a . length ) $ ( "#station_suggest ul" ) . html ( "" ) , $ ( "#station_suggest" ) . hide ( ) ; else { for ( var b = "" , c = 0 , d = a . length ; c < d ; c ++ ) b += '<li><a href="javascript:;" title="' + a [ c ] [ 1 ] + '" data-code="' + a [ c ] [ 2 ] + '">' + a [ c ] [ 1 ] + "</a></li>" ; $ ( "#station_suggest ul" ) . html ( b ) ; $ ( "#station_suggest" ) . show ( ) } } , getSuggestList : function ( a ) { return ! a ? [ ] : /^[\u4E00-\u9FA5]+$/ . test ( a [ 0 ] ) ? CheckStaion . searchKeyZh ( a ) : CheckStaion . searchKey ( a ) } , searchKey : function ( a ) { if ( ! CheckStaion . objs [ a [ 0 ] ] ) return [ ] ;
var b = CheckStaion . objs [ a [ 0 ] ] , c = [ ] , c = [ ] , d = [ ] , e = [ ] ; if ( 0 == a . length ) return b ; for ( var f = 0 , g = b . length ; f < g ; f ++ ) - 1 != b [ f ] [ 4 ] . indexOf ( a ) ? b [ f ] [ 4 ] == a ? c . unshift ( b [ f ] ) : c . push ( b [ f ] ) : - 1 != b [ f ] [ 3 ] . indexOf ( a ) ? b [ f ] [ 3 ] == a ? d . unshift ( b [ f ] ) : d . push ( b [ f ] ) : - 1 != b [ f ] [ 0 ] . indexOf ( a ) && ( b [ f ] [ 0 ] == a ? e . unshift ( b [ f ] ) : e . push ( b [ f ] ) ) ; return c = c . sort ( CheckStaion . sort ) . concat ( d . sort ( CheckStaion . sort ) , e . sort ( CheckStaion . sort ) ) } , searchKeyZh : function ( a ) { if ( ! CheckStaion . objsZh [ a [ 0 ] ] ) return [ ] ; var b = CheckStaion . objsZh [ a [ 0 ] ] , c = [ ] ; if ( 1 == a . length ) return b ;
for ( var d = 0 , e = b . length ; d < e ; d ++ ) - 1 != b [ d ] [ 1 ] . indexOf ( a ) && c . push ( b [ d ] ) ; return c . sort ( CheckStaion . sort ) } , sort : function ( a , b ) { return parseInt ( a [ 5 ] ) > parseInt ( b [ 5 ] ) ? 1 : - 1 } } ; var Login = { init : function ( ) { if ( 0 != $ ( "#login_page" ) . length ) { var a = new Date ; $ ( "#interval" ) . html ( a . format ( "M\u6708dd\u65e5" ) + "-" + a . addDays ( 19 ) . format ( "M\u6708d\u65e5" ) ) ; cn12306 . recode ( ) ; $ ( "#randcode" ) . keyup ( function ( ) { this . value = this . value . replace ( /[^0-9a-zA-Z]/g , "" ) } ) ; $ ( "#loginForm" ) . submit ( function ( a ) { var c = { username : $ ( "[name=username]" , this ) . val ( ) , password : $ ( "[name=password]" , this ) . val ( ) , randcode : $ ( "[name=randcode]" , this ) . val ( ) } ; if ( c . username ) if ( c . password ) { if ( ! c . randcode ) return Public . toast ( "\u8bf7\u8f93\u5165\u9a8c\u8bc1\u7801" ) ,
2014-09-01 13:50:43 +08:00
! 1 } else return Public . toast ( "\u8bf7\u8f93\u5165\u767b\u5f55\u5bc6\u7801" ) , ! 1 ; else return Public . toast ( "\u8bf7\u8f93\u5165\u7528\u6237\u540d" ) , ! 1 ; Login . formData = c ; SKIPVC ? Login . submitLogin ( ) : Login . getRandCode ( ) ; a . preventDefault ( ) ; return ! 1 } ) ; localStorage . getItem ( "useraccount" ) ? ( Login . formData = JSON . parse ( localStorage . getItem ( "useraccount" ) ) , $ ( "#loginForm [name=username]" ) . val ( Login . formData . username ) , $ ( "#loginForm [name=password]" ) . val ( Login . formData . password ) , cn12306 . isUserLogined ( function ( ) { sessionStorage . setItem ( "user" ,
2014-09-02 12:03:50 +08:00
Login . formData . username ) ; Public . toast ( "\u767b\u5f55\u6210\u529f!" ) ; setTimeout ( function ( ) { Login . loginRoute ( ) } , 1E3 ) } ) ) : sessionStorage . clear ( ) } } , getRandCode : function ( ) { cn12306 . checkRandCode ( "sjrand" , Login . formData . randcode , function ( a ) { "Y" !== a . data ? ( cn12306 . recode ( ) , Public . toast ( "\u9a8c\u8bc1\u7801\u4e0d\u6b63\u786e\uff01" ) ) : Login . submitLogin ( a ) } , function ( a , b ) { cn12306 . recode ( ) ; Public . toast ( "\u6821\u9a8c\u9a8c\u8bc1\u7801\u5931\u8d25" ) } , "login/init" ) } , formData : null , submitLogin : function ( ) { bootStrap . post ( "login/loginAysnSuggest" ,
null , { "loginUserDTO.user_name" : Login . formData . username , "userDTO.password" : Login . formData . password , randCode : Login . formData . randcode } , "login/init" ) . done ( function ( a ) { a && a . data && "Y" === a . data . loginCheck ? Login . userPostLogin ( ) : ( a = ( a . messages || [ "\u672a\u77e5\u9519\u8bef" ] ) . join ( ";" ) , cn12306 . recode ( ) , - 1 != a . indexOf ( "\u767b\u5f55\u540d" ) ? ( $ ( "#username" ) . focus ( ) , Public . toast ( "\u7528\u6237\u540d\u8f93\u5165\u9519\u8bef\u3002" ) ) : - 1 != a . indexOf ( "\u9a8c\u8bc1\u7801" ) ? ( $ ( "#randcode" ) . focus ( ) , Public . toast ( "\u9a8c\u8bc1\u7801\u4e0d\u6b63\u786e\u3002" ) ) :
- 1 != a . indexOf ( "\u90ae\u7bb1" ) ? ( $ ( "#username" ) . focus ( ) , Public . toast ( "\u90ae\u7bb1\u8f93\u5165\u9519\u8bef\u3002" ) ) : - 1 < a . indexOf ( "\u5bc6\u7801" ) ? ( $ ( "#password" ) . val ( "" ) . focus ( ) , Public . toast ( "\u5bc6\u7801\u4e0d\u6b63\u786e\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165\u3002" , 2E3 ) ) : - 1 < a . indexOf ( "\u9501\u5b9a" ) ? ui . postMessage ( ! 1 , "\u60a8\u7684\u8d26\u6237\u5df2\u7ecf\u88ab\u9501\u5b9a\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002" , "login" ) : - 1 !== a . indexOf ( "\u7cfb\u7edf\u7ef4\u62a4" ) ? Public . toast ( "\u7cfb\u7edf\u7ef4\u62a4\u4e2d" ) :
Public . toast ( "\u672a\u77e5\u9519\u8bef" ) ) } ) . fail ( function ( a , b ) { 403 == a . status ? Public . alert ( "\u8b66\u544a\uff01\u60a8\u7684IP\u5df2\u7ecf\u88ab\u5c01\u9501\uff0c\u8bf7\u91cd\u8bd5" ) : Public . alert ( "\u767b\u5f55\u65f6\u7f51\u7edc\u9519\u8bef" ) } ) } , userPostLogin : function ( ) { bootStrap . post ( "login/userLogin" , "text" , null , "login/init" ) . done ( function ( ) { Login . checkJsonAttr ( ) } ) . fail ( function ( ) { Login . checkJsonAttr ( ) } ) } , checkJsonAttr : function ( ) { var a = Login . formData ; cn12306 . isUserLogined ( function ( ) { sessionStorage . setItem ( "user" ,
a . username ) ; localStorage . setItem ( "useraccount" , JSON . stringify ( a ) ) ; Public . toast ( "\u767b\u5f55\u6210\u529f!" ) ; Login . loginRoute ( ) } , function ( ) { Public . toast ( "\u672a\u80fd\u6210\u529f\u767b\u5f55\uff0c\u8bf7\u91cd\u8bd5\u3002" ) } , function ( ) { Public . toast ( "\u767b\u5f55\u65f6\u7f51\u7edc\u9519\u8bef" ) } ) } , loginRoute : function ( ) { var a = Public . getQueryData ( window . location . search ) ; if ( a . t ) switch ( a . t ) { case "submitorder" : location . href = "perfect.html?t=" + a . t ; break ; case "autorefer" : localStorage . getItem ( "hisQuery" ) && localStorage . setItem ( sessionStorage . getItem ( "user" ) +
2014-09-03 17:09:04 +08:00
"hisQuery" , localStorage . getItem ( "hisQuery" ) ) ; location . href = "run_query.html?t=" + a . t ; break ; case "order_list" : location . href = "order_list.html" ; break ; case "no_commplete" : location . href = "no_complete_order.html" ; break ; case "run_query" : location . href = "run_query.html" } else location . href = "query.html" } } ; var Query = { calendar : null , init : function ( ) { if ( 0 != $ ( "#query_page" ) . length ) { Public . checkLogin ( Query . hasLogin , Query . noLogin , Query . noLogin ) ; var a = ( new Date ) . addDays ( 19 ) ; Public . setDate ( a ) ; $ ( "#menu_btn" ) . on ( "click" , function ( ) { $ ( "#user_menu" ) . toggle ( ) } ) ; $ ( "#user_menu" ) . on ( "click" , function ( a ) { "user_menu" == $ ( a . target ) . attr ( "id" ) && $ ( "#user_menu" ) . hide ( ) } ) ; $ ( "#open_filter" ) . on ( "click" , function ( ) { Public . showInnerPage ( "filter" ) } ) ; $ ( "#filter_cancel" ) . on ( "click" , function ( ) { Public . hideInnerPage ( "filter" ) ; var a = $ ( "#query_form [name=filters]" ) . val ( ) . split ( "&" ) ;
2014-09-01 13:50:43 +08:00
Query . setFilter ( a ) } ) ; $ ( "#filter_ok" ) . on ( "click" , function ( ) { Public . hideInnerPage ( "filter" ) ; $ ( "#query_form [name=filters]" ) . val ( $ ( "#filter_form" ) . serialize ( ) ) } ) ; $ ( "#query_form [name=filters]" ) . val ( $ ( "#filter_form" ) . serialize ( ) ) ; $ ( "#query_form" ) . on ( "submit" , function ( ) { var a = $ ( "#startStationCode" ) . val ( ) , c = $ ( "#endStationCode" ) . val ( ) ; if ( "" == a ) return Public . alert ( "\u8bf7\u9009\u62e9\u51fa\u53d1\u7ad9" ) , ! 1 ; if ( "" == c ) return Public . alert ( "\u8bf7\u9009\u62e9\u5230\u8fbe\u7ad9" ) , ! 1 ; if ( a == c ) return Public . alert ( "\u51fa\u53d1\u5730\u548c\u76ee\u7684\u5730\u4e0d\u80fd\u76f8\u540c" ) ,
! 1 ; var d = $ ( "#query_form" ) . serialize ( ) ; Public . setHisQuery ( a + "-" + c , d ) ; window . location . href = "run_query.html" ; return ! 1 } ) ; $ ( "#login" ) . on ( "click" , function ( ) { "loginout" == $ ( this ) . attr ( "data-fn" ) && cn12306 . loginOut ( function ( ) { Public . toast ( "\u9000\u51fa\u6210\u529f\uff0c\u6b63\u5728\u8df3\u8f6c" ) ; setTimeout ( function ( ) { window . location . href = "login.html" } , 1E3 ) } , function ( ) { Public . toast ( "\u9000\u51fa\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5\u3002" ) } ) } ) ; CheckStaion . init ( ) ; Query . stationInt ( ) ; Query . setHisQuery ( ) ; Query . filterBind ( ) } } ,
2014-09-03 16:23:52 +08:00
setHisQuery : function ( ) { var a = Public . his . querys , b , c ; if ( 0 == Public . his . querys . length ) return ! 1 ; b = '<div class="his_title">\u6700\u8fd1\u67e5\u627e</div><ul class="list his_list">' ; for ( var d = 0 , e = a . length ; d < e ; d ++ ) c = Public . his . queryObjs [ a [ d ] [ 0 ] ] , b += '<li><a href="javascript:;" data-key="' + a [ d ] [ 0 ] + '"><span>' + c . startname + "</span><span>" + c . endname + "</span></a></li>" ; $ ( "#hisQuery" ) . html ( b + "</ul>" ) ; $ ( "#hisQuery [data-key]" ) . on ( "click" , function ( ) { var a = $ ( this ) . attr ( "data-key" ) ; a && Public . his . queryObjs [ a ] && ( Query . newQuery ( Public . his . queryObjs [ a ] ) ,
2014-09-03 19:25:32 +08:00
Public . toast ( "\u5207\u6362\u6210\u529f" ) ) } ) ; Query . newQuery ( Public . his . queryObjs [ $ ( "#hisQuery [data-key]:eq(0)" ) . attr ( "data-key" ) ] ) } , newQuery : function ( a ) { var b ; $ ( "#query_form [type=checkbox],#query_form [type=radio]" ) . prop ( "checked" , ! 1 ) ; for ( var c in a ) b = $ ( "#query_form [name=" + c + "]" ) , 1 < b . length ? $ ( '#query_form [name="' + c + '"][value="' + a [ c ] + '"]' ) . prop ( "checked" , ! 0 ) : ( b . val ( a [ c ] ) , "startname" == c ? $ ( "#startStation" ) . html ( a [ c ] ) : "endname" == c ? $ ( "#endStation" ) . html ( a [ c ] ) : "start_date" == c && ( b = new Date ( a [ c ] . replace ( /\-/g ,
2014-09-03 16:23:52 +08:00
"/" ) ) , $ ( "#start_date" ) . html ( b . format ( "yyyy\u5e74M\u6708d\u65e5" ) + " " + b . day ( 3 ) ) , Public . calendar . setCurDate ( b ) ) ) ; a = $ ( "#query_form [name=filters]" ) . val ( ) . split ( "&" ) ; Query . setFilter ( a ) } , setFilter : function ( a ) { var b = [ ] , c ; $ ( "#filter_form [type=checkbox],#filter_form [type=radio]" ) . prop ( "checked" , ! 1 ) ; $ ( "#filter_form #train_labels,#filter_form #passenger_list" ) . html ( "" ) ; for ( var d = 0 ; d < a . length ; d ++ ) b = a [ d ] . split ( "=" ) , b [ 1 ] = decodeURIComponent ( b [ 1 ] ) , c = $ ( '#filter_form [name="' + b [ 0 ] + '"][value="' + b [ 1 ] + '"]' ) , "train_type" ==
b [ 0 ] || "train_seat" == b [ 0 ] ? c . prop ( "checked" , ! 0 ) : "timeslot" == b [ 0 ] ? ( c . prop ( "checked" , ! 0 ) , c . closest ( ".query_box" ) . find ( "label" ) . removeClass ( "query_bigcheck_checked" ) , c . closest ( "label" ) . addClass ( "query_bigcheck_checked" ) ) : "train" == b [ 0 ] ? $ ( "#filter_form #train_labels" ) . append ( '<span class="train_label">' + b [ 1 ] + '<input type="hidden" name="train" value="' + b [ 1 ] + '"></span>' ) : "passenger" == b [ 0 ] && ( $ ( '#passenger_form [name="psg"][value="' + b [ 1 ] + '"]' ) . prop ( "checked" , ! 0 ) , $ ( "#filter_form #passenger_list" ) . append ( '<span class="train_label">' +
b [ 1 ] . split ( "$" ) [ 0 ] + '<input type="hidden" name="passenger" value="' + b [ 1 ] + '"></span></span>' ) ) ; sessionStorage . getItem ( Public . user + "_passenger" ) ? ( Query . passengerList = JSON . parse ( sessionStorage . getItem ( Public . user + "_passenger" ) ) , Query . passengerObj = JSON . parse ( sessionStorage . getItem ( Public . user + "_passengerobj" ) ) ) : bootStrap . post ( "confirmPassenger/getPassengerDTOs" , null , null , "leftTicket/init" ) . done ( function ( a ) { a . status && ( Array . isArray ( a . data . normal _passengers ) && 0 < a . data . normal _passengers . length ) && Query . formatPassenger ( a . data . normal _passengers ) } ) . fail ( function ( a ,
b ) { console . log ( a , b ) } ) } , formatPassenger : function ( a ) { for ( var b = [ ] , c = { } , d = "" , e = 0 ; e < a . length ; e ++ ) Util . canPassageAddToOrder ( a [ e ] ) && ( d = a [ e ] . passenger _name + "$" + a [ e ] . passenger _id _type _code + "$" + a [ e ] . passenger _id _no , a [ e ] . key = d , c [ d ] = a [ e ] , b . push ( a [ e ] ) ) ; Query . passengerList = b ; Query . passengerObj = c ; sessionStorage . setItem ( Public . user + "_passenger" , JSON . stringify ( b ) ) ; sessionStorage . setItem ( Public . user + "_passengerobj" , JSON . stringify ( c ) ) } , hasLogin : function ( ) { $ ( "#login" ) . attr ( "href" , "javascript:;" ) . attr ( "data-fn" , "loginout" ) . html ( "\u9000\u51fa" ) ;
2014-09-01 13:50:43 +08:00
$ ( "#menu_btn .icon_user" ) . addClass ( "icon_user2" ) ; Query . setHisQuery ( ) ; Query . getPassenger ( ) } , noLogin : function ( ) { $ ( "#login" ) . attr ( "href" , "/12306/login.html" ) . attr ( "data-fn" , "login" ) . html ( "\u767b\u5f55" ) ; $ ( "#menu_btn .icon_user" ) . removeClass ( "icon_user2" ) ; Query . setHisQuery ( ) } , stationInt : function ( ) { $ ( "#startStation" ) . on ( "click" , function ( ) { CheckStaion . callback = Query . startCallback ; CheckStaion . cancelCallback = Query . cancelCallback ; CheckStaion . show ( ) ; $ ( "#wrap" ) . hide ( ) } ) ; $ ( "#endStation" ) . on ( "click" , function ( ) { CheckStaion . callback =
Query . endCallback ; CheckStaion . cancelCallback = Query . cancelCallback ; CheckStaion . show ( ) ; $ ( "#wrap" ) . hide ( ) } ) ; $ ( "#exchange" ) . on ( "click" , function ( ) { var a = $ ( "#startStationName" ) . val ( ) , b = $ ( "#startStationCode" ) . val ( ) , c = $ ( "#endStationName" ) . val ( ) , d = $ ( "#endStationCode" ) . val ( ) ; $ ( "#startStationName" ) . val ( c ) ; $ ( "#startStationCode" ) . val ( d ) ; $ ( "#endStationName" ) . val ( a ) ; $ ( "#endStationCode" ) . val ( b ) ; a ? $ ( "#endStation" ) . html ( a ) : $ ( "#endStation" ) . html ( "\u5230\u8fbe\u7ad9" ) ; c ? $ ( "#startStation" ) . html ( c ) : $ ( "#startStation" ) . html ( "\u51fa\u53d1\u7ad9" ) } ) } ,
startCallback : function ( a , b ) { $ ( "#startStation" ) . html ( a ) ; $ ( "#startStationName" ) . val ( a ) ; $ ( "#startStationCode" ) . val ( b ) ; CheckStaion . hide ( ) ; $ ( "#wrap" ) . show ( ) } , endCallback : function ( a , b ) { $ ( "#endStation" ) . html ( a ) ; $ ( "#endStationName" ) . val ( a ) ; $ ( "#endStationCode" ) . val ( b ) ; CheckStaion . hide ( ) ; $ ( "#wrap" ) . show ( ) } , cancelCallback : function ( ) { $ ( "#wrap" ) . show ( ) } , trainsHis : { } , getTrains : function ( ) { if ( "" == $ ( "#startStationCode" ) . val ( ) || "" == $ ( "#endStationCode" ) . val ( ) ) Public . alert ( "\u8bf7\u9009\u62e9\u53d1\u5230\u8fbe\u7ad9" ) ;
else { var a = "ADULT" ; "2" == $ ( "#query_form [name=type]" ) . val ( ) && ( a = "0X00" ) ; var b = Public . showLoading ( "\u6b63\u5728\u83b7\u53d6\u8f66\u6b21" ) , c = $ ( "#start_date_val" ) . val ( ) , d = $ ( "#startStationCode" ) . val ( ) , e = $ ( "#endStationCode" ) . val ( ) , f = d + e + c + a , a = { "leftTicketDTO.train_date" : c , "leftTicketDTO.from_station" : d , "leftTicketDTO.to_station" : e , purpose _codes : a } ; Query . trainsHis [ f ] && ( Query . setTrains ( Query . trainsHis [ f ] ) , Public . showInnerPage ( "trains_box" ) ) ; cn12306 . queryTicket ( a , function ( a ) { ! 0 == a . status && 200 == a . httpstatus &&
0 < a . data . length && ( Query . trainsHis [ f ] = a . data , Query . setTrains ( a . data ) , Public . showInnerPage ( "trains_box" ) ) ; Public . hideLoading ( b ) } , function ( a , c ) { Public . hideLoading ( b ) } ) } } , setTrains : function ( a ) { for ( var b , c = "" , d = [ ] , e = 0 , f = a . length ; e < f ; e ++ ) b = a [ e ] . queryLeftNewDTO , d = b . lishi . split ( ":" ) , c = 0 < $ ( '#train_labels [value="' + b . station _train _code + '"]' ) . length ? c + '<li><a href="javascript:;" class="clearfix cur"' : c + '<li><a href="javascript:;" class="clearfix"' , c += ' data-traincode="' + b . station _train _code + '"><span class="pull_right">' +
( d [ 0 ] && "00" != d [ 0 ] ? parseInt ( d [ 0 ] ) + "\u5c0f\u65f6" : "" ) + ( d [ 1 ] ? parseInt ( d [ 1 ] ) + "\u5206" : "0\u5206" ) + '</span><span class="pull_left "><strong class="text_lg form_label text_left">' + b . station _train _code + "</strong>" + b . start _time + " - " + b . arrive _time + "</span></a></li>" ; $ ( "#trainList" ) . html ( c ) } , getPassenger : function ( ) { sessionStorage . getItem ( Public . user + "_passenger" ) ? Query . setPassengerList ( JSON . parse ( sessionStorage . getItem ( Public . user + "_passenger" ) ) ) : bootStrap . post ( "confirmPassenger/getPassengerDTOs" , null , null ,
"leftTicket/init" ) . done ( function ( a ) { a . status && ( Array . isArray ( a . data . normal _passengers ) && 0 < a . data . normal _passengers . length ) && Query . setPassengerList ( a . data . normal _passengers ) } ) . fail ( function ( a , b ) { console . log ( a , b ) } ) } , setPassengerList : function ( a ) { for ( var b = "" , c = 0 , d = a . length ; c < d ; c ++ ) b += '<label class="query_checkbox"><input name="psg" type="checkbox" data-name="' + a [ c ] . passenger _name + '" value="' + a [ c ] . passenger _name + "$" + a [ c ] . passenger _id _type _code + "$" + a [ c ] . passenger _id _no + '">' + a [ c ] . passenger _name + "</label>" ;
$ ( "#passengers" ) . html ( b ) ; a = $ ( "#query_form [name=filters]" ) . val ( ) . split ( "&" ) ; Query . setFilter ( a ) } , filterBind : function ( ) { $ ( "#train_filter" ) . live ( "click" , function ( ) { Query . getTrains ( ) } ) ; $ ( "#trains_ok" ) . live ( "click" , function ( ) { Public . showInnerPage ( "filter" ) } ) ; $ ( "#trainList a" ) . live ( "click" , function ( ) { var a = $ ( this ) . attr ( "data-traincode" ) ; $ ( this ) . hasClass ( "cur" ) ? ( $ ( '#train_labels [value="' + a + '"]' ) . closest ( ".train_label" ) . remove ( ) , $ ( this ) . removeClass ( "cur" ) ) : ( $ ( this ) . addClass ( "cur" ) , $ ( "#train_labels" ) . append ( '<span class="train_label">' +
a + '<input type="hidden" name="train" value="' + a + '"></span>' ) ) } ) ; $ ( "#train_labels .train_label" ) . live ( "click" , function ( ) { $ ( this ) . remove ( ) } ) ; $ ( "#check_passenger" ) . live ( "click" , function ( ) { Public . isLogin ? Public . showInnerPage ( "passenger" ) : Public . confirm ( "\u767b\u9646\u540e\u53ef\u9009\u4e58\u8f66\u4eba" , function ( ) { window . location . href = "login.html" } , "\u767b\u9646" ) } ) ; $ ( '#passengers [name="psg"]' ) . live ( "change" , function ( ) { if ( 5 < $ ( '#passengers [name="psg"]:checked' ) . length ) Public . alert ( "\u8054\u7cfb\u4eba\u6700\u591a\u53ea\u80fd\u9009\u62e9\u4e94\u4e2a" ) ,
2014-09-03 19:25:32 +08:00
$ ( this ) . prop ( "checked" , ! 1 ) ; else { var a = $ ( this ) . val ( ) , b = $ ( this ) . attr ( "data-name" ) ; $ ( this ) . prop ( "checked" ) ? $ ( "#passenger_list" ) . append ( '<span class="train_label">' + b + '<input type="hidden" name="passenger" value="' + a + '"></span>' ) : $ ( '#passenger_list [name="passenger"][value="' + a + '"]' ) . closest ( ".train_label" ) . remove ( ) } } ) ; $ ( "#passenger_ok" ) . live ( "click" , function ( ) { var a = $ ( '#passenger_list [name="passenger"]' ) ; $ ( '#passenger_form [name="psg"]' ) . prop ( "checked" , ! 1 ) ; a . each ( function ( a , c ) { $ ( '#passenger_form [name="psg"][value="' +
2014-09-02 12:03:50 +08:00
$ ( c ) . val ( ) + '"]' ) . prop ( "checked" , ! 0 ) } ) ; Public . showInnerPage ( "filter" ) } ) ; $ ( "#passenger_list .train_label" ) . live ( "click" , function ( ) { var a = $ ( "input" , this ) . val ( ) ; $ ( this ) . remove ( ) ; $ ( '#passengers [name="psg"][value="' + a + '"]' ) . prop ( "checked" , ! 1 ) } ) } } ; var RunQuery = { goRefer : ! 1 , init : function ( ) { if ( 0 == $ ( "#runquery_page" ) . length ) return ! 1 ; var a = ( new Date ) . addDays ( 19 ) ; Public . formatString = "M\u6708d\u65e5" ; Public . setDate ( a ) ; Public . calendar . checkCallback = RunQuery . dateChangeCallback ; Public . checkLogin ( RunQuery . run , RunQuery . run , RunQuery . run ) ; $ ( "#filter_ok" ) . on ( "click" , function ( ) { Public . hideInnerPage ( "filter" ) ; $ ( "#query_form [name=filters]" ) . val ( $ ( "#filter_form" ) . serialize ( ) ) ; RunQuery . setFilterCond ( ) ; RunQuery . hisUpdata ( ) ; RunQuery . goRefer && ( RunQuery . goRefer =
! 1 , RunQuery . startRef ( ) ) } ) ; $ ( "#check_left,#check_right" ) . on ( "click" , function ( ) { RunQuery . hisUpdata ( ) } ) ; $ ( "#filter_cancel" ) . on ( "click" , function ( ) { Public . hideInnerPage ( "filter" ) ; var a = $ ( "#query_form [name=filters]" ) . val ( ) . split ( "&" ) ; Query . setFilter ( a ) ; RunQuery . goRefer && ( RunQuery . goRefer = ! 1 , RunQuery . startRef ( ) ) } ) ; $ ( "#filter_btn" ) . on ( "click" , function ( ) { Public . showInnerPage ( "filter" ) } ) ; $ ( "#filter_cancel" ) . on ( "click" , function ( ) { Public . hideInnerPage ( ) } ) ; $ ( '[data-fn="buy"]' ) . live ( "click" , function ( ) { var a = $ ( this ) . attr ( "data-traincode" ) ,
c = $ ( this ) . attr ( "data-seatcode" ) ; "0" == c && 0 < $ ( '[data-traincode="' + a + '"][data-seatcode="' + c + '"]' ) . length && ( c = "1" ) ; sessionStorage . setItem ( Public . user + "curBuy" , JSON . stringify ( RunQuery . trainData . trainMap [ a ] ) ) ; sessionStorage . setItem ( Public . user + "curBuySeat" , c ) ; Public . isLogin ? location . href = "perfect.html" : Public . alert ( "\u8fd8\u672a\u767b\u5f55\uff0c\u8bf7\u767b\u9646\u540e\u8d2d\u7968" , function ( ) { location . href = "login.html?t=submitorder" } ) } ) ; $ ( "#autoTipBtn" ) . live ( "click" , function ( ) { Public . isLogin ? ( RunQuery . goRefer =
! 0 , Public . showInnerPage ( "filter" ) ) : window . location . href = "login.html?t=autorefer" } ) ; $ ( "#refresh_end" ) . live ( "click" , function ( ) { RunQuery . refStop ( ) } ) } , run : function ( ) { Query . getPassenger ( ) ; RunQuery . getQueryData ( ) ; if ( ! RunQuery . curData ) return window . location . href = "query.html" , ! 1 ; RunQuery . setFilter ( ) ; RunQuery . queryTicket ( ) ; Query . filterBind ( ) } , curData : null , getQueryData : function ( ) { Public . his . queryObjs [ Public . his . querys [ 0 ] [ 0 ] ] && ( RunQuery . curData = Public . his . queryObjs [ Public . his . querys [ 0 ] [ 0 ] ] ) } , setFilter : function ( ) { Query . setFilter ( RunQuery . curData . filters . split ( "&" ) ) ;
$ ( ".station_title strong" ) . html ( RunQuery . curData . startname + "\u2192" + RunQuery . curData . endname ) ; $ ( "#query_form [name=startname]" ) . val ( RunQuery . curData . startname ) ; $ ( "#query_form [name=startcode]" ) . val ( RunQuery . curData . startcode ) ; $ ( "#query_form [name=endname]" ) . val ( RunQuery . curData . endname ) ; $ ( "#query_form [name=endcode]" ) . val ( RunQuery . curData . endcode ) ; $ ( "#query_form [name=type]" ) . val ( RunQuery . curData . type ) ; $ ( "#query_form [name=filters]" ) . val ( RunQuery . curData . filters ) ; var a = new Date ( RunQuery . curData . start _date . replace ( /\-/g ,
2014-09-02 19:09:24 +08:00
"/" ) ) ; $ ( "#start_date" ) . html ( a . format ( "M\u6708d\u65e5" ) + " " + a . day ( 3 ) ) ; $ ( "#start_date_val" ) . val ( a . format ( "yyyy-MM-dd" ) ) ; Public . calendar . setCurDate ( a ) ; RunQuery . setFilterCond ( ) } , queryTicket : function ( ) { Public . showLoading ( "\u6b63\u5728\u67e5\u7968" ) ; cn12306 . queryTicket ( { "leftTicketDTO.train_date" : RunQuery . curData . start _date , "leftTicketDTO.from_station" : RunQuery . curData . startcode , "leftTicketDTO.to_station" : RunQuery . curData . endcode , purpose _codes : "2" == RunQuery . curData . type ? "0X00" : "ADULT" } , function ( a ) { Public . hideLoading ( ) ;
2014-09-03 17:09:04 +08:00
if ( ! 0 == a . status && 200 == a . httpstatus ) if ( 0 < a . data . length ) { RunQuery . trainData = RunQuery . formatJson ( a ) ; if ( "undefined" != typeof RunQuery . filterCond . train ) for ( a = 0 ; a < RunQuery . filterCond . train . length ; a ++ ) "undefined" == typeof RunQuery . trainData . codeMap [ RunQuery . filterCond . train [ a ] ] && ( RunQuery . filterCond . train . splice ( a , 1 ) , a -- ) ; RunQuery . filterJson ( RunQuery . trainData ) ; RunQuery . formatList ( ) } else $ ( "#noTicket" ) . html ( "\u6682\u65e0\u7ed3\u679c\uff0c\u6ca1\u6709\u627e\u5230\u4ece<strong>" + RunQuery . curData . startname + "</strong>\u5230<strong>" +
RunQuery . curData . endname + "</strong>\u7684\u5217\u8f66" ) . show ( ) ; else ! a . status && a . messages ? Public . alert ( a . messages [ 0 ] || "\u672a\u77e5\u9519\u8bef" ) : Public . alert ( "\u672a\u77e5\u9519\u8bef" ) } , function ( a , b ) { Public . hideLoading ( ) } ) } , getHtml : function ( a ) { var b = "" ; if ( ! a || 0 == a . length ) return b ; for ( var c in a ) { obj = a [ c ] ; b += "<li>" ; b += '<div class="line no_border">' ; b += '<strong class="pull_right text_underline text_lg" data-id="' + obj . id + '">' + obj . code + "</strong>" ; b += '<strong class="text_warning text_lg link_label">' +
obj . from . time + "</strong>" ; b += '<span class="text_lg">' ; obj . from . code == obj . start . code && ( b += '<i class="text_label">\u59cb</i>' ) ; b += obj . from . name + "</span>" ; b += "</div>" ; b += '<div class="line">' ; ls = obj . elapsedTime . total . split ( ":" ) ; b += '<span class="pull_right text_gray">' + ( ls [ 0 ] ? ls [ 0 ] + "\u5c0f\u65f6" : "" ) + ( ls [ 1 ] ? ls [ 1 ] + "\u5206" : "0\u5206" ) + "</span>" ; b += '<span class="text_lg link_label">' ; b += obj . to . time + "</span>" ; b += '<span class="text_lg">' ; obj . to . code == obj . end . code && ( b += '<i class="text_label">\u7ec8</i>' ) ; for ( var b =
b + ( obj . to . name + "</span>" ) , b = b + "</div>" , d = 0 ; d < obj . ticketMapSort . length ; d ++ ) if ( 0 != obj . ticketMapSort [ d ] . count || RunQuery . trainData . isMaintain ) b += '<div class="line"><span class="pull_right">' , "\u6709" == obj . ticketMapSort [ d ] . count ? b += '<span class="text_warning">\u6709</span>' : ( b += '<span class="text_warning">' + obj . ticketMapSort [ d ] . count + "</span>" , b += '<span class="text_gray">\u5f20</span>' ) , b = RunQuery . trainData . isMaintain ? b + '<span href="javascript:;" class="btn btn_gray">\u7ef4\u62a4</span>' : b + ( '<a href="javascript:;" class="btn btn_success" data-fn="buy" data-traincode="' +
obj . id + '" data-seatcode="' + obj . ticketMapSort [ d ] . code + '">\u62a2\u7968</a>' ) , b += "</span>" , b += '<span class="link_label">' + obj . ticketMapSort [ d ] . name + "</span>" , b += '<span class="text_gray">' + obj . ticketMapSort [ d ] . price / 10 + "\u5143</span>" , b += "</div>" ; b += "</li>" } return b } , formatList : function ( ) { var a = RunQuery . trainData . train ; RunQuery . trainData . isMaintain && ( a = RunQuery . trainData . trainMap ) ; $ ( "#train_list" ) . html ( RunQuery . getHtml ( a ) ) ; $ ( ".station_title span" ) . html ( "\u5171 " + $ ( "#train_list li" ) . length + " \u8d9f\u5217\u8f66" ) ;
! RunQuery . trainData . isMaintain && 0 == Object . keys ( RunQuery . trainData . train ) . length ? RunQuery . showRefresh ( ) : ! RunQuery . trainData . isMaintain && RunQuery . refresh ? ( Client . refreshSuccess ( ) , RunQuery . refStop ( ) , RunQuery . autoSubmit ( ) ) : $ ( "#autoTip" ) . hide ( ) } , autoSubmit : function ( ) { var a = $ ( '#train_list li [data-fn="buy"]' ) . eq ( 0 ) ; a . closest ( "li" ) ; if ( bootStrap . isAndroid ) { a = { title : "\u606d\u559c\u60a8\uff0c\u5237\u51fa\u7968\u4e86\uff01" , content : "\u4f60\u8ba2\u7684 " + $ ( "[data-id]" ) . html ( ) + " \u6b21\u5217\u8f66\u6709\u3010" +
a . closest ( ".line" ) . find ( ".link_label" ) . eq ( 0 ) . html ( ) + "\u3011\u4e86\uff01" , confirm : "confirmCallback" , cancel : "cancelCallback" } ; try { _ _TicketJavaScriptObject _ _ . confirm ( JSON . stringify ( a ) ) } catch ( b ) { alert ( b ) } } else a . click ( ) } , getTicketInfo : function ( a ) { var b = [ ] ; a = ( - 1 === a . indexOf ( "#" ) ? a : /getSelected\(['"](.*?)['"]\)/i . exec ( a ) [ 1 ] . split ( "#" ) [ 11 ] ) . match ( /([A-Z\d])0*?([\*\d]{5})0*?(\d{4})/gi ) ; for ( var c in a ) { var d = /([A-Z\d])0*?([\*\d]{5})0*?(\d{4})/i . exec ( a [ c ] ) , e = d [ 1 ] , f = "*" == d [ 2 ] [ 0 ] ? null : parseInt ( d [ 2 ] , 10 ) , d = parseInt ( d [ 3 ] ,
10 ) , g = { code : e , name : Util . toSeatTypeName ( e ) , price : f } ; 3E3 > d ? ( g . count = d , "7" === e ? b . push ( { code : "M" , name : Util . toSeatTypeName ( "M" ) , price : f , count : d } ) : "8" === e ? b . push ( { code : "O" , name : Util . toSeatTypeName ( "O" ) , price : f , count : d } ) : b . push ( g ) ) : ( g . count = d - 3E3 , g . code = "0" , g . name = "\u65e0\u5ea7" , b . push ( g ) ) } return b } , trainData : null , formatJson : function ( a ) { if ( ! Array . isArray ( a . data ) && ! a . data . length ) return null ; for ( var b = a . data , c , d = { raw : a , rawTrainMap : { } , trainMap : { } , codeMap : { } , auto : null , nextTime : null } , e = 0 ; e < b . length ; e ++ ) { t = b [ e ] ;
a = { id : t . queryLeftNewDTO . train _no , code : t . queryLeftNewDTO . station _train _code , available : "Y" === t . queryLeftNewDTO . canWebBuy ? 1 : 0 , start : { code : t . queryLeftNewDTO . start _station _telecode , name : t . queryLeftNewDTO . start _station _name } , from : { code : t . queryLeftNewDTO . from _station _telecode , fromStationNo : t . queryLeftNewDTO . from _station _no , name : t . queryLeftNewDTO . from _station _name , endpoint : t . queryLeftNewDTO . from _station _telecode == t . queryLeftNewDTO . start _station _telecode , time : t . queryLeftNewDTO . start _time } , to : { code : t . queryLeftNewDTO . to _station _telecode ,
toStationNo : t . queryLeftNewDTO . to _station _no , name : t . queryLeftNewDTO . to _station _name , endpoint : t . queryLeftNewDTO . end _station _telecode == t . queryLeftNewDTO . to _station _telecode , time : t . queryLeftNewDTO . arrive _time } , elapsedTime : { days : t . queryLeftNewDTO . day _difference , total : t . queryLeftNewDTO . lishi } , end : { code : t . queryLeftNewDTO . end _station _telecode , name : t . queryLeftNewDTO . end _station _name } , ypinfo : t . queryLeftNewDTO . yp _info , ypinfo _ex : t . queryLeftNewDTO . yp _ex , locationCode : t . queryLeftNewDTO . location _code , controlDay : t . queryLeftNewDTO . control _day ,
supportCard : t . queryLeftNewDTO . is _support _card , saleTime : t . queryLeftNewDTO . sale _time , secureStr : t . secretStr , selltime : null , date : t . queryLeftNewDTO . start _train _date . replace ( /(\d{4})(\d{2})(\d{2})/ , "$1-$2-$3" ) , form _train _date : RunQuery . curData . start _date , limitSellInfo : t . buttonTextInfo && - 1 != t . buttonTextInfo . indexOf ( "\u6682\u552e" ) ? t . buttonTextInfo . replace ( /<[^>]+>/i , "" ) : null } ; c = RunQuery . getTicketInfo ( t . queryLeftNewDTO . yp _info ) ; a . tickets = c ; a . ticketMap = Util . mapObject ( c , function ( a ) { return a . code } ) ; a . ticketMapSort =
RunQuery . filterCond . train _seat && 0 < RunQuery . filterCond . train _seat . length ? Util . sortType ( a . ticketMap , RunQuery . filterCond . train _seat ) : Util . sortType ( a . ticketMap ) ; if ( c = /(0*(\d+)\u67080*(\d+)\u65e5)?(\d+)\s*\u70b9\s*((\d+)\u5206)?\s*\u8d77\u552e/i . exec ( t . buttonTextInfo . replace ( /<.*?>/g , "" ) ) ) a . available = - 1 , a . selltime = new Date , a . selltime . setHours ( parseInt ( c [ 4 ] ) ) , a . selltime . setMinutes ( parseInt ( c [ 6 ] || "0" , 10 ) ) , a . selltime . setSeconds ( 0 ) , c [ 1 ] && ( a . selltime . setMonth ( parseInt ( c [ 2 ] ) - 1 ) , a . selltime . setDate ( parseInt ( c [ 3 ] ) ) ,
a . selltime . getMonth ( ) < ( new Date ) . getMonth ( ) && a . selltime . setFullYear ( a . selltime . getFullYear ( ) + 1 ) ) ; d . rawTrainMap [ a . id ] = t ; d . codeMap [ a . code ] = t ; d . trainMap [ a . id ] = a } 0 < b . length && ( d . isMaintain = - 1 != b [ 0 ] . buttonTextInfo . indexOf ( "\u7cfb\u7edf\u7ef4\u62a4\u65f6\u95f4" ) ) ; return d } , filterCond : { } , setFilterCond : function ( ) { RunQuery . filterCond = { } ; for ( var a = $ ( "#filter_form" ) . serializeArray ( ) , b = 0 ; b < a . length ; b ++ ) RunQuery . filterCond [ a [ b ] . name ] || ( RunQuery . filterCond [ a [ b ] . name ] = [ ] ) , RunQuery . filterCond [ a [ b ] . name ] . push ( a [ b ] . value ) ;
RunQuery . filterCond . train _type && ( RunQuery . filterCond . train _type = RunQuery . filterCond . train _type . join ( "|" ) . split ( "|" ) ) } , hasTrains : function ( a ) { var b = { } , c = ! 1 , d ; for ( d in a ) { for ( var c = ! 1 , e = 0 ; e < a [ d ] . ticketMapSort . length ; e ++ ) if ( 0 < a [ d ] . ticketMapSort [ e ] . count ) { c = ! 0 ; break } c && ( b [ d ] = a [ d ] ) } return b } , trainsFilter : function ( a , b ) { var c = { } ; b = b || RunQuery . filterCond . train ; if ( "undefined" == typeof b || 0 == b . length ) return a ; for ( var d in a ) - 1 != b . indexOf ( a [ d ] . code ) && ( c [ d ] = a [ d ] ) ; return c } , trainsType : function ( a ) { if ( "undefined" ==
typeof RunQuery . filterCond . train _type || "all" == RunQuery . filterCond . train _type [ 0 ] ) return a ; var b = { } , c ; for ( c in a ) if ( - 1 != RunQuery . filterCond . train _type . indexOf ( a [ c ] . code [ 0 ] ) || ! isNaN ( a [ c ] . code [ 0 ] ) && - 1 != RunQuery . filterCond . train _type . indexOf ( "QT" ) ) b [ c ] = a [ c ] ; return b } , trainsSeat : function ( a ) { if ( "undefined" == typeof RunQuery . filterCond . train _seat || "all" == RunQuery . filterCond . train _seat [ 0 ] ) return a ; var b = { } , c = ! 1 , d ; for ( d in a ) { for ( var c = ! 1 , e = 0 ; e < RunQuery . filterCond . train _seat . length ; e ++ ) if ( "undefined" != typeof a [ d ] . ticketMap [ RunQuery . filterCond . train _seat [ e ] ] &&
0 < a [ d ] . ticketMap [ RunQuery . filterCond . train _seat [ e ] ] . count ) { c = ! 0 ; break } c && ( b [ d ] = a [ d ] ) } return b } , trainsTime : function ( a ) { if ( "undefined" == typeof RunQuery . filterCond . timeslot || "0" == RunQuery . filterCond . timeslot [ 0 ] ) return a ; var b = { } , c ; for ( c in a ) RunQuery . atTime ( a [ c ] ) && ( b [ c ] = a [ c ] ) ; return b } , atTime : function ( a ) { if ( "undefined" == typeof RunQuery . filterCond . timeslot || "0" == RunQuery . filterCond . timeslot [ 0 ] ) return ! 0 ; a = parseInt ( a . from . time . split ( ":" ) [ 0 ] ) ; for ( var b = ! 1 , c = 0 ; c < RunQuery . filterCond . timeslot . length ; c ++ ) { switch ( RunQuery . filterCond . timeslot [ c ] ) { case "1" : 0 <=
2014-09-03 19:25:32 +08:00
a && 6 >= a && ( b = ! 0 ) ; break ; case "2" : 6 <= a && 12 >= a && ( b = ! 0 ) ; break ; case "3" : 12 <= a && 18 >= a && ( b = ! 0 ) ; break ; case "4" : 18 <= a && 24 >= a && ( b = ! 0 ) ; break ; default : b = ! 0 } if ( b ) break } return b } , filterJson : function ( a ) { a . train = RunQuery . hasTrains ( a . trainMap ) ; a . train = RunQuery . trainsFilter ( a . train ) ; a . train = RunQuery . trainsType ( a . train ) ; a . train = RunQuery . trainsSeat ( a . train ) ; a . train = RunQuery . trainsTime ( a . train ) } , dateChangeCallback : function ( a ) { var b = a . date . getTime ( ) ; if ( b >= Public . calendar . minDate . date . getTime ( ) && b <= Public . calendar . maxDate . date . getTime ( ) ) $ ( "#date_tip" ) . hide ( ) ,
Public . hideInnerPage ( "date_box" ) , $ ( "#start_date" ) . html ( Public . calendar . curDate . format ( Public . formatString ) + " " + Public . calendar . curDate . day ( 3 ) ) , $ ( "#start_date_val" ) . val ( Public . calendar . curDate . format ( "yyyy-MM-dd" ) ) , RunQuery . hisUpdata ( ) ; else { var b = $ ( "a.cur" , Public . calendar . wrap ) . offset ( ) , c = "" , c = "<p>" + a . format ( "M\u6708d\u65e5" ) + '\u4e0d\u5728\u9884\u552e\u671f</p><a href="remind.html?date=' + encodeURIComponent ( a . format ( "yyyy-MM-dd" ) ) ; 0 < $ ( "#startStationCode" ) . length && "" != $ ( "#startStationCode" ) . val ( ) && ( c +=
"&from=" + $ ( "#startStationCode" ) . val ( ) ) ; 0 < $ ( "#endStationCode" ) . length && "" != $ ( "#endStationCode" ) . val ( ) && ( c += "&to=" + $ ( "#endStationCode" ) . val ( ) ) ; $ ( "#date_tip" ) . css ( { left : b . left , top : b . top , display : "block" } ) . html ( c + '" class="btn btn_m btn_success">\u9884\u7ea6\u63d0\u9192</a>' ) ; 0.75 < b . left / window . innerWidth ? $ ( "#date_tip" ) . attr ( "class" , "tip_small tip_right" ) : 0.15 > b . left / window . innerWidth ? $ ( "#date_tip" ) . attr ( "class" , "tip_small tip_left" ) : $ ( "#date_tip" ) . attr ( "class" , "tip_small" ) } } , hisUpdata : function ( ) { Public . setHisQuery ( $ ( "#startStationCode" ) . val ( ) +
"-" + $ ( "#endStationCode" ) . val ( ) , $ ( "#query_form" ) . serialize ( ) ) ; Public . setHis ( ) ; RunQuery . getQueryData ( ) ; RunQuery . queryTicket ( ) } , showRefresh : function ( ) { if ( ! RunQuery . refresh ) { Public . isLogin ? $ ( "#autoTip p" ) . html ( "\u6682\u65f6\u65e0\u7968!<br>\u6ca1\u6709\u7b26\u5408\u4f60\u8981\u6c42\u7684\u8f66\u6b21\u548c\u5e2d\u522b" ) : $ ( "#autoTip p" ) . html ( "\u6682\u65f6\u65e0\u7968!<br>\u767b\u5f55\u540e\u53ef\u4ee5\u81ea\u52a8\u5237\u7968" ) ; $ ( "#autoTip" ) . show ( ) ; var a = Public . getQueryData ( window . location . search ) ; a . t &&
"autorefer" == a . t && ( history . replaceState ( null , null , WIN . location . href . split ( "?" ) [ 0 ] ) , $ ( "#autoTipBtn" ) . click ( ) ) } } , refCount : 0 , startDate : null , refDate : null , refresh : ! 1 , refTimer : null , startRef : function ( ) { RunQuery . refresh || ( Client . refreshStart ( ) , RunQuery . startDate = ( new Date ) . getTime ( ) , RunQuery . refDate = RunQuery . startDate , RunQuery . refresh = ! 0 , $ ( "#refresh_train" ) . show ( ) , $ ( "#autoTip" ) . hide ( ) , RunQuery . queryTicket ( ) , RunQuery . refCount = 1 , RunQuery . refGo ( ) ) } , refGo : function ( ) { if ( RunQuery . refresh ) { var a = ( new Date ) . getTime ( ) ,
b = RunQuery . formatTime ( a - RunQuery . startDate ) , c = ( ( 5E3 - ( a - RunQuery . refDate ) ) / 1E3 ) . toFixed ( 1 ) ; 0 >= c && ( c = 0 ) ; $ ( "#refresh_train .rf_desc" ) . html ( "\u5df2\u5237 " + RunQuery . refCount + " \u6b21\uff0c\u7528\u65f6 " + b + "<br>\u8ddd\u4e0b\u6b21\u5237\u7968\u8fd8\u6709 " + c + " \u79d2 ..." ) ; 0 == c && ( RunQuery . refDate = a , RunQuery . refCount ++ , RunQuery . queryTicket ( ) ) ; RunQuery . refTimer = setTimeout ( RunQuery . refGo , 100 ) } } , refStop : function ( ) { Client . refreshEnd ( ) ; clearTimeout ( RunQuery . refTimer ) ; RunQuery . refresh = ! 1 ; $ ( "#refresh_train" ) . hide ( ) ;
0 == Object . keys ( RunQuery . trainData . train ) . length && RunQuery . showRefresh ( ) } , formatTime : function ( a ) { var b = parseInt ( a / 6E4 ) ; a = parseInt ( a % 6E4 / 1E3 ) ; return b + "\u5206" + a + "\u79d2" } , getRec : function ( ) { var a = { } , b = RunQuery . trainData . trainMap ; a . key = "stupid360" ; a . from = $ ( "#startStationCode" ) . val ( ) ; a . to = $ ( "#endStationCode" ) . val ( ) ; a . date = $ ( "#start_date_val" ) . val ( ) ; a . stops = { } ; for ( var c in b ) a . stops [ b [ c ] . code ] = { } , a . stops [ b [ c ] . code ] . info = b [ c ] , a . stops [ b [ c ] . code ] . stops = cn12306 . byTrainNos [ c ] ; a = JSON . stringify ( a ) ; ( 0 , eval ) ( "this" ) . v =
a ; $ . ajax ( { type : "POST" , url : "http://12306.fishlee.net/ts?key=stupid360&r=" + Math . random ( ) , data : { data : a } , success : function ( a ) { a . groups && 0 < a . groups . length && RunQuery . setRec ( a . groups ) } , error : function ( a , b ) { } } ) } , setRec : function ( a ) { if ( a && 0 != a . length ) { var b = { } ; $ ( "#start_date_val" ) . val ( ) ; for ( var c = "2" == RunQuery . curData . type ? "0X00" : "ADULT" , d = "" , e = [ ] , f , g = 0 ; g < a . length ; g ++ ) if ( CheckStaion . zhObj [ a [ g ] . fromText ] && CheckStaion . zhObj [ a [ g ] . toText ] ) for ( var n = 0 ; n < a [ g ] . lines . length ; n ++ ) f = a [ g ] . date , a [ g ] . lines [ n ] . isCrossDate &&
( f = a [ g ] . lines . j . form . date . split ( "T" ) [ 0 ] ) , d = CheckStaion . zhObj [ a [ g ] . fromText ] [ 2 ] + CheckStaion . zhObj [ a [ g ] . toText ] [ 2 ] + f , b [ d ] || ( b [ d ] = { } , b [ d ] . filterTicket = [ ] , b [ d ] . queryData = { "leftTicketDTO.train_date" : f , "leftTicketDTO.from_station" : CheckStaion . zhObj [ a [ g ] . fromText ] [ 2 ] , "leftTicketDTO.to_station" : CheckStaion . zhObj [ a [ g ] . toText ] [ 2 ] , purpose _codes : c } ) , b [ d ] . filterTicket . push ( a [ g ] . lines [ n ] . trainCode ) ; for ( d in b ) e . push ( b [ d ] ) ; RunQuery . queryRec ( e , function ( ) { for ( var a = "" , b = 0 ; b < RunQuery . recData . length ; b ++ ) a += RunQuery . getHtml ( RunQuery . recData [ b ] . train ) } ) } } ,
recData : [ ] , queryRec : function ( a , b ) { var c = a . shift ( ) , d = c . filterTicket ; cn12306 . queryTicket ( c . queryData , function ( c ) { if ( ! 0 == c . status && 200 == c . httpstatus && 0 < c . data . length ) { c = RunQuery . formatJson ( c ) ; for ( var f = 0 ; f < d . length ; f ++ ) "undefined" == typeof c . codeMap [ d [ f ] ] && ( d . splice ( f , 1 ) , f -- ) ; RunQuery . filterJson ( c ) ; RunQuery . recData . push ( c ) ; 0 < a . length ? RunQuery . queryRec ( a , b ) : "function" == typeof b && b ( RunQuery . recData ) } } , function ( a , c ) { "function" == typeof b && b ( RunQuery . recData ) } ) } } ; window . confirmCallback = function ( ) { $ ( '#train_list li [data-fn="buy"]' ) . eq ( 0 ) . click ( ) } ;
window . cancelCallback = function ( ) { } ; var OrderSubmit = { init : function ( ) { if ( 0 == $ ( "#ordersubmit_page" ) . length ) return ! 1 ; OrderSubmit . bindEvent ( ) ; Public . checkLogin ( function ( ) { ! sessionStorage . getItem ( Public . user + "curBuy" ) && ! sessionStorage . getItem ( "curBuy" ) && ( window . location . href = "query.html" ) ; OrderSubmit . getTrainInfo ( ) ; OrderSubmit . getPassenger ( ) } , function ( ) { window . location . href = "login.html" } , function ( ) { window . location . href = "login.html" } ) } , getTrainInfo : function ( ) { OrderSubmit . curData = JSON . parse ( sessionStorage . getItem ( Public . user + "curBuy" ) ) ; OrderSubmit . curData ||
2014-09-01 16:24:47 +08:00
( OrderSubmit . curData = JSON . parse ( sessionStorage . getItem ( "curBuy" ) ) ) ; OrderSubmit . curBuySeat = sessionStorage . getItem ( Public . user + "curBuySeat" ) ; OrderSubmit . curBuySeat || ( OrderSubmit . curBuySeat = sessionStorage . getItem ( "curBuySeat" ) ) ; OrderSubmit . curInfo = Public . his . queryObjs [ Public . his . querys [ 0 ] [ 0 ] ] ; var a = '<div class="info">' , b = new Date ( OrderSubmit . curData . form _train _date . replace ( /\-/g , "/" ) ) , a = a + ( '<div class="info_title"><span class="pull_right">' + OrderSubmit . curData . code + "</span><span>" + b . format ( "yyyy-M-d" ) +
" " + b . day ( 3 ) + "</span></div>" ) , a = a + ( '<div class="stations_info"><div class="station_info"><strong>' + OrderSubmit . curData . from . name + "</strong>" + OrderSubmit . curData . from . time + "</div>" ) , a = a + ( '<div class="station_info"><strong>' + OrderSubmit . curData . to . name + "</strong>" + OrderSubmit . curData . to . time + "</div></div>" ) ; $ ( "#trainInfo" ) . html ( a + "</div>" ) } , passengerList : null , loadPassCode : function ( ) { if ( $ ( "#randcodeimg" ) . hasClass ( "loading_code" ) ) return ! 1 ; $ ( "#randcodeimg" ) . addClass ( "loading_code" ) ; cn12306 . loadRandCode ( "sjrand" ,
function ( a ) { $ ( "#randcodeimg" ) . attr ( "src" , a ) ; $ ( "#randcodeimg" ) . removeClass ( "loading_code" ) } , "passcodeNew/getPassCodeNew?module=login&rand=sjrand" ) } , getPassenger : function ( ) { sessionStorage . getItem ( Public . user + "_passenger" ) ? ( OrderSubmit . passengerList = JSON . parse ( sessionStorage . getItem ( Public . user + "_passenger" ) ) , OrderSubmit . passengerObj = JSON . parse ( sessionStorage . getItem ( Public . user + "_passengerobj" ) ) , OrderSubmit . setPassengerList ( ) ) : bootStrap . post ( "confirmPassenger/getPassengerDTOs" , null , null , "leftTicket/init" ) . done ( function ( a ) { a . status &&
2014-09-03 19:25:32 +08:00
Array . isArray ( a . data . normal _passengers ) && 0 < a . data . normal _passengers . length ? ( OrderSubmit . formatPassenger ( a . data . normal _passengers ) , OrderSubmit . setPassengerList ( ) ) : Public . alert ( "23:00-07:00 \u7cfb\u7edf\u7ef4\u62a4\u65f6\u95f4" ) } ) . fail ( function ( a , b ) { console . log ( a , b ) } ) } , setPassengerList : function ( ) { for ( var a = "" , b = 0 , c = OrderSubmit . passengerList . length ; b < c ; b ++ ) a += '<label class="query_checkbox"><input name="train_type" type="checkbox" value="' + OrderSubmit . passengerList [ b ] . key + '">' + OrderSubmit . passengerList [ b ] . passenger _name +
"</label>" ; if ( OrderSubmit . curInfo ) for ( var c = OrderSubmit . curInfo . filters . split ( "&" ) , d = [ ] , b = 0 ; b < c . length ; b ++ ) d = c [ b ] . split ( "=" ) , d [ 1 ] = decodeURIComponent ( d [ 1 ] ) , "passenger" == d [ 0 ] && OrderSubmit . passengerObj [ d [ 1 ] ] && OrderSubmit . passengerAdd ( OrderSubmit . passengerObj [ d [ 1 ] ] ) ; $ ( "#passengers" ) . html ( a ) ; $ ( "#add_passenger" ) . on ( "click" , function ( ) { Public . showInnerPage ( "passenger" ) } ) ; $ ( "#passenger_ok" ) . on ( "click" , function ( ) { Public . hideInnerPage ( "passenger" ) } ) ; $ ( '#passengers [type="checkbox"]' ) . on ( "change" , function ( ) { if ( 5 <
$ ( '#passengers [type="checkbox"]:checked' ) . length || 5 <= $ ( "#passenger_list li" ) . length ) return Public . alert ( "\u8054\u7cfb\u4eba\u6700\u591a\u53ea\u80fd\u9009\u62e9\u4e94\u4e2a" ) , $ ( this ) . prop ( "checked" , ! 1 ) , ! 1 ; var a = $ ( this ) , b = a . val ( ) ; a . prop ( "checked" ) ? OrderSubmit . passengerAdd ( OrderSubmit . passengerObj [ b ] ) : $ ( '#passenger_list [data-key="' + b + '"]' ) . remove ( ) } ) ; 0 < $ ( "#passenger_list li" ) . length && $ ( "#ordersubmit" ) . click ( ) } , passenger : { } , passengerAdd : function ( a ) { var b = "" , b = Util . getAvailableTicketType ( a ) , c = OrderSubmit . curData . ticketMap [ OrderSubmit . curBuySeat ] ,
b = '<li class="clearfix" data-key="' + a . key + '" data-type="' + b [ 0 ] . id + '" data-seat="' + c . code + '"><span class="pull_left"><strong>' + a . passenger _name + '</strong><span class="ticket">' + b [ 0 ] . name + "</span><br>" + a . passenger _id _no + '</span><a href="javascript:;" data-fn="edit" class="pull_right"><span class="seat">' + c . name + " " + c . price / 10 + '\u5143</span> <i class="icon_edit"></i></a></li>' ; $ ( "#passenger_list" ) . append ( b ) } , addChildren : function ( a , b ) { var c = OrderSubmit . passengerObj [ a ] , d = OrderSubmit . curData . ticketMap [ b . attr ( "data-seat" ) ] ;
html = '<li class="clearfix" data-children="true" data-key="' + c . passenger _name + "$" + c . passenger _id _type _code + "$" + c . passenger _id _no + '" data-type="2" data-seat="' + b . attr ( "data-seat" ) + '">\t\t\t\t<span class="pull_left"><strong>' + c . passenger _name + '</strong><span class="ticket">\u513f\u7ae5\u7968</span><br>' + c . passenger _id _no + '</span>\t\t\t\t<a href="javascript:;" data-fn="edit" class="pull_right">\t\t\t\t<span class="seat">' + d . name + " " + d . price / 10 + '\u5143</span> <i class="icon_edit"></i></a></li>' ;
b . after ( html ) } , formatPassenger : function ( a ) { for ( var b = [ ] , c = { } , d = "" , e = 0 ; e < a . length ; e ++ ) Util . canPassageAddToOrder ( a [ e ] ) && ( d = a [ e ] . passenger _name + "$" + a [ e ] . passenger _id _type _code + "$" + a [ e ] . passenger _id _no , a [ e ] . key = d , c [ d ] = a [ e ] , b . push ( a [ e ] ) ) ; OrderSubmit . passengerList = b ; OrderSubmit . passengerObj = c ; sessionStorage . setItem ( "_passenger" , JSON . stringify ( b ) ) ; sessionStorage . setItem ( "_passengerobj" , JSON . stringify ( c ) ) } , editKey : "" , editEl : null , showLayer : function ( ) { $ ( "#layer" ) . show ( ) } , hideLayer : function ( ) { $ ( "#layer" ) . hide ( ) } ,
bindEvent : function ( ) { var a = $ ( "#edit_menu" ) ; $ ( '[data-fn="edit"]' ) . live ( "click" , function ( b ) { b = $ ( this ) . closest ( "[data-key]" ) ; var c = b . attr ( "data-key" ) ; OrderSubmit . editKey = c ; OrderSubmit . editEl = b ; $ ( "#passenger_editinfo" ) . html ( b . html ( ) ) ; $ ( '#passenger_editinfo [data-fn="edit"]' ) . attr ( "data-fn" , "edit_close" ) ; $ ( "#edit_menu" ) . css ( { top : b . offset ( ) . top } ) ; b . attr ( "data-children" ) ? ( $ ( '[data-fn="children"]' ) . closest ( "li" ) . hide ( ) , $ ( '[data-fn="ticket"]' ) . closest ( "li" ) . hide ( ) ) : ( $ ( '[data-fn="children"]' ) . closest ( "li" ) . show ( ) ,
$ ( '[data-fn="ticket"]' ) . closest ( "li" ) . show ( ) ) ; a . show ( ) ; OrderSubmit . showLayer ( ) } ) ; $ ( "#layer" ) . live ( "click" , function ( ) { a . hide ( ) ; $ ( "#edit_ticket" ) . hide ( ) ; $ ( "#edit_seat" ) . hide ( ) ; OrderSubmit . hideLayer ( ) } ) ; a . live ( "click" , function ( a ) { a . stopPropagation ( ) ; return ! 1 } ) ; $ ( '[data-fn="edit_close"]' ) . live ( "click" , function ( b ) { a . hide ( ) ; OrderSubmit . hideLayer ( ) } ) ; $ ( '[data-fn="remove"]' ) . live ( "click" , function ( b ) { "2" == OrderSubmit . editEl . attr ( "data-type" ) ? OrderSubmit . editEl . remove ( ) : ( $ ( '#passenger_list [data-key="' + OrderSubmit . editKey +
'"]' ) . remove ( ) , $ ( '#passengers [value="' + OrderSubmit . editKey + '"]' ) . prop ( "checked" , ! 1 ) ) ; delete OrderSubmit . passenger [ OrderSubmit . editKey ] ; a . hide ( ) ; OrderSubmit . hideLayer ( ) } ) ; $ ( '[data-fn="children"]' ) . live ( "click" , function ( b ) { 4 < $ ( "#passenger_list li" ) . length ? Public . alert ( "\u8054\u7cfb\u4eba\u6700\u591a\u53ea\u80fd\u9009\u62e9\u4e94\u4e2a" ) : OrderSubmit . addChildren ( OrderSubmit . editKey , OrderSubmit . editEl ) ; a . hide ( ) ; OrderSubmit . hideLayer ( ) } ) ; $ ( '[data-fn="seat"]' ) . live ( "click" , function ( b ) { a . hide ( ) ; OrderSubmit . hideLayer ( ) ;
OrderSubmit . setSeat ( ) } ) ; $ ( "#edit_seat ul a" ) . live ( "click" , function ( ) { var a = $ ( this ) . attr ( "data-id" ) , c = OrderSubmit . curData . ticketMap [ a ] ; OrderSubmit . editEl . attr ( "data-seat" , a ) ; $ ( ".seat" , OrderSubmit . editEl ) . html ( c . name + " " + c . price / 10 + "\u5143" ) ; $ ( "#edit_seat" ) . hide ( ) ; OrderSubmit . hideLayer ( ) } ) ; $ ( '[data-fn="ticket"]' ) . live ( "click" , function ( b ) { a . hide ( ) ; OrderSubmit . hideLayer ( ) ; OrderSubmit . setTicket ( ) } ) ; $ ( "#edit_ticket a" ) . live ( "click" , function ( ) { var a = $ ( this ) . attr ( "data-id" ) , c = $ ( this ) . html ( ) ; OrderSubmit . editEl . attr ( "data-type" ,
2014-09-01 13:50:43 +08:00
a ) ; $ ( ".ticket" , OrderSubmit . editEl ) . html ( c ) ; $ ( "#edit_ticket" ) . hide ( ) ; OrderSubmit . hideLayer ( ) } ) ; $ ( "#ordersubmit" ) . on ( "click" , function ( ) { var a = [ ] ; if ( 0 == $ ( "#passenger_list li" ) . length ) return Public . alert ( "\u8bf7\u6dfb\u52a0\u8054\u7cfb\u4eba" ) , ! 1 ; $ ( "#passenger_list li" ) . each ( function ( c , d ) { a [ c ] = { } ; var e = OrderSubmit . passengerObj [ $ ( this ) . attr ( "data-key" ) ] ; a [ c ] . seat = $ ( this ) . attr ( "data-seat" ) ; a [ c ] . passenger _type = $ ( this ) . attr ( "data-type" ) ; a [ c ] . passenger _id _type _code = e . passenger _id _type _code ; a [ c ] . passenger _id _no =
e . passenger _id _no ; a [ c ] . mobile _no = e . mobile _no ; a [ c ] . passenger _name = e . passenger _name } ) ; OrderSubmit . submit ( a , OrderSubmit . curData , ! 1 ) } ) ; $ ( '#code_layer .public_btns a[data-val="sure"]' ) . live ( "click" , function ( ) { OrderSubmit . submitGo ( ) } ) ; $ ( '#code_layer .public_btns a[data-val="cancel"]' ) . live ( "click" , function ( ) { $ ( "#code_layer" ) . hide ( ) } ) } , setSeat : function ( ) { for ( var a = "" , b , c = 0 , d = OrderSubmit . curData . ticketMapSort . length ; c < d ; c ++ ) b = OrderSubmit . curData . ticketMapSort [ c ] , a += '<li><a href="javascript:;" data-id="' +
b . code + '"><span class="pull_right text_gray"><span class="text_warning">' + b . count + '</span> \u5f20</span><span class="form_label">' + b . name + '</span><span class="text_gray">' + b . price / 10 + "\u5143</span></a></li>" ; $ ( "#edit_seat ul" ) . html ( a ) ; $ ( "#edit_seat" ) . show ( ) ; OrderSubmit . showLayer ( ) } , setTicket : function ( ) { for ( var a = Util . getAvailableTicketType ( OrderSubmit . passengerObj [ OrderSubmit . editKey ] ) , b = "" , c = 0 , d = a . length ; c < d ; c ++ ) b += '<li><a href="javascript:;" data-id="' + a [ c ] . id + '">' + a [ c ] . name + "</a></li>" ; $ ( "#edit_ticket ul" ) . html ( b ) ;
2014-09-02 22:52:30 +08:00
$ ( "#edit_ticket" ) . show ( ) ; OrderSubmit . showLayer ( ) } , submitData : null , submit : function ( a , b , c ) { console . log ( a ) ; var d = [ ] , e = [ ] ; c = c ? "0X00" : "ADULT" ; a . forEach ( function ( a ) { d . push ( a . seat + ",1," + a . passenger _type + "," + a . passenger _name + "," + a . passenger _id _type _code + "," + a . passenger _id _no + "," + a . mobile _no + "," + ( b . resign ? "Y" : "N" ) ) ; "2" === a . passenger _type ? e . push ( " " ) : e . push ( a . passenger _name + "," + a . passenger _id _type _code + "," + a . passenger _id _no + "," + a . passenger _type ) } ) ; console . log ( d , e ) ; d = d . join ( "_" ) ; e = e . join ( "_" ) + "_" ; OrderSubmit . submitData =
{ secretStr : b . secureStr , train _date : b . date , train _date _full : ( new Date ( b . date ) ) . toString ( ) , train _no : b . id , tour _flag : b . resign ? "gc" : "dc" , purpose _codes : c , query _from _station _name : b . from . name , fromStationTelecode : b . from . code , query _to _station _name : b . to . name , toStationTelecode : b . to . code , stationTrainCode : b . code , seatType : a [ 0 ] . seat , cancel _flag : 2 , bed _level _order _num : "000000000000000000000000000000" , _json _att : "" , passengerTicketStr : d , oldPassengerStr : e } ; OrderSubmit . loading = Public . showLoading ( "\u6b63\u5728\u63d0\u4ea4\u8ba2\u5355" ) ;
cn12306 . queryTicket ( { "leftTicketDTO.train_date" : OrderSubmit . curData . form _train _date , "leftTicketDTO.from_station" : OrderSubmit . curData . from . code , "leftTicketDTO.to_station" : OrderSubmit . curData . to . code , purpose _codes : OrderSubmit . submitData . purpose _codes } , function ( a ) { if ( ! 0 == a . status && 200 == a . httpstatus && 0 < a . data . length ) { for ( var b = 0 ; b < a . data . length ; b ++ ) if ( a . data [ b ] . queryLeftNewDTO . station _train _code == OrderSubmit . curData . code ) { OrderSubmit . curData . secureStr = a . data [ b ] . secretStr ; OrderSubmit . submitData . secretStr =
a . data [ b ] . secretStr ; break } OrderSubmit . autoSubmitOrderRequest ( ) } } , function ( a , b ) { OrderSubmit . autoSubmitOrderRequest ( ) } ) } , autoSubmitOrderRequest : function ( ) { bootStrap . post ( "confirmPassenger/autoSubmitOrderRequest" , "json" , "secretStr=" + OrderSubmit . submitData . secretStr + "&train_date=" + OrderSubmit . submitData . train _date + "&tour_flag=" + OrderSubmit . submitData . tour _flag + "&purpose_codes=" + OrderSubmit . submitData . purpose _codes + "&query_from_station_name=" + OrderSubmit . submitData . query _from _station _name + "&query_to_station_name=" +
OrderSubmit . submitData . query _to _station _name + "&cancel_flag=" + OrderSubmit . submitData . cancel _flag + "&bed_level_order_num=" + OrderSubmit . submitData . bed _level _order _num + "&passengerTicketStr=" + OrderSubmit . submitData . passengerTicketStr + "&oldPassengerStr=" + OrderSubmit . submitData . oldPassengerStr , "leftTicket/init" ) . done ( function ( a ) { ! a . status || ! a . data ? ( Public . hideLoading ( OrderSubmit . loading ) , a . messages ? OrderSubmit . errorCallback ( a . messages [ 0 ] ) : OrderSubmit . errorCallback ( "12306\u8fd4\u56de\u4e86\u672a\u77e5\u7684\u72b6\u6001\u4fe1\u606f\uff0c\u8bf7\u5237\u65b0\u91cd\u8bd5\u3002" ) ) :
a . data . isRelogin ? OrderSubmit . errorCallback ( "\u8bf7\u91cd\u65b0\u767b\u5f55" ) : a . data . errMsg ? OrderSubmit . errorCallback ( "\u65e0\u6cd5\u63d0\u4ea4\u8ba2\u5355\uff1a" + a . data . errMsg ) : ( a = a . data . result . split ( "#" ) , OrderSubmit . submitData . key _check _isChange = a [ 1 ] , OrderSubmit . submitData . leftTicketStr = a [ 2 ] , OrderSubmit . submitData . train _location = a [ 0 ] , OrderSubmit . submitData . async = a [ 3 ] , OrderSubmit . submitData . train _no = OrderSubmit . submitData . train _no , OrderSubmit . checkQueueInfo ( ) ) } ) . fail ( function ( ) { OrderSubmit . errorCallback ( "12306\u4e0d\u7ed9\u529b\u5537\uff0c\u8bf7\u5c3d\u5feb\u91cd\u8bd5..." ) } ) } ,
2014-09-01 13:50:43 +08:00
checkQueueInfo : function ( ) { bootStrap . post ( "confirmPassenger/getQueueCountAsync" , null , { train _date : OrderSubmit . submitData . train _date _full . toString ( ) , train _no : OrderSubmit . submitData . train _no , stationTrainCode : OrderSubmit . submitData . stationTrainCode , seatType : OrderSubmit . submitData . seatType , fromStationTelecode : OrderSubmit . submitData . fromStationTelecode , toStationTelecode : OrderSubmit . submitData . toStationTelecode , leftTicket : OrderSubmit . submitData . leftTicketStr , purpose _codes : OrderSubmit . submitData . purpose _codes ,
_json _att : OrderSubmit . submitData . _json _att } , "leftTicket/init" ) . done ( function ( a ) { ! a || ! a . status || ! a . data ? OrderSubmit . errorCallback ( a . messages [ 0 ] || "\u672a\u77e5\u9519\u8bef" ) : a . data . isRelogin ? OrderSubmit . errorCallback ( "\u767b\u5f55\u72b6\u6001\u5f02\u5e38\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\u3002" ) : "true" === a . data . op _2 ? OrderSubmit . errorCallback ( "\u6392\u961f\u4eba\u6570\u8fc7\u591a\uff0c\u4e0d\u5141\u8bb8\u63d0\u4ea4\u8ba2\u5355\u3002\u6392\u961f\u4eba\u6570=" + a . data . countT ) : ( Public . hideLoading ( OrderSubmit . loading ) ,
2014-09-02 22:52:30 +08:00
cn12306 . recode ( ) , $ ( "#code_layer" ) . show ( ) ) } ) . fail ( function ( ) { Public . hideLoading ( OrderSubmit . loading ) ; Public . alert ( { msg : "12306\u4e0d\u7ed9\u529b\u554a\uff0c\u5509\u3002\u51fa\u73b0\u7f51\u7edc\u9519\u8bef\u4e86\uff0c\u8bf7\u91cd\u8bd5.." } ) } ) } , submitGo : function ( ) { var a = { passengerTicketStr : OrderSubmit . submitData . passengerTicketStr , oldPassengerStr : OrderSubmit . submitData . oldPassengerStr , randCode : $ ( "#randcode" ) . val ( ) , purpose _codes : OrderSubmit . submitData . purpose _codes , key _check _isChange : OrderSubmit . submitData . key _check _isChange ,
2014-09-03 14:49:31 +08:00
leftTicketStr : OrderSubmit . submitData . leftTicketStr , train _location : OrderSubmit . submitData . train _location , _json _att : OrderSubmit . submitData . _json _att } ; bootStrap . post ( "confirmPassenger/confirmSingleForQueueAsys" , null , a , "leftTicket/init" ) . done ( function ( a ) { Public . hideLoading ( OrderSubmit . loading ) ; ! a || ! a . status || ! a . data ? Public . alert ( a . messages [ 0 ] || "\u672a\u77e5\u9519\u8bef" ) : a . data . isRelogin ? Public . alert ( "\u767b\u5f55\u72b6\u6001\u5f02\u5e38\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\u3002" ) : a . data && ! a . data . submitStatus ?
Public . alert ( a . data . errMsg || "\u672a\u77e5\u9519\u8bef" ) : ( Public . alert ( "\u8ba2\u7968\u6210\u529f" , function ( ) { window . location . href = "no_complete_order.html" } ) , $ ( "#code_layer" ) . hide ( ) ) } ) . fail ( function ( ) { Public . hideLoading ( OrderSubmit . loading ) ; Public . alert ( "12306\u4e0d\u7ed9\u529b\u554a\uff0c\u5509\u3002\u51fa\u73b0\u7f51\u7edc\u9519\u8bef\u4e86\uff0c\u8bf7\u91cd\u8bd5.." ) } ) } , errorCallback : function ( a ) { Public . hideLoading ( OrderSubmit . loading ) ; - 1 != a . indexOf ( "\u60a8\u8fd8\u6709\u672a\u5904\u7406\u7684\u8ba2\u5355" ) ?
Public . alert ( '\u60a8\u8fd8\u6709\u672a\u5904\u7406\u7684\u8ba2\u5355\uff0c\u8bf7\u60a8\u5230<br/><a href="no_complete_order.html">[\u672a\u5b8c\u6210\u8ba2\u5355]</a>\u8fdb\u884c\u5904\u7406!' , function ( ) { window . location . href = "no_complete_order.html" } ) : Public . alert ( a ) } } ; var NoComplete = { token : "" , bankId : "" , payLoading : null , curNo : "" , loading : null , init : function ( ) { if ( 0 == $ ( "#no_complete_page" ) . length ) return ! 1 ; NoComplete . loading = Public . showLoading ( "\u6b63\u5728\u83b7\u53d6\u8ba2\u5355\u4fe1\u606f" ) ; Public . checkLogin ( NoComplete . getToken , NoComplete . noLogin , NoComplete . noLogin ) ; $ ( "[data-no]" ) . live ( "click" , function ( ) { NoComplete . curNo = $ ( this ) . attr ( "data-no" ) ; NoComplete . selectBank ( ) } ) ; $ ( '[data-fn="close_bank"]' ) . live ( "click" , function ( ) { Public . hideInnerPage ( ) } ) ; $ ( "#banks [data-bank]" ) . live ( "click" ,
2014-09-02 22:52:30 +08:00
function ( ) { NoComplete . bankId = $ ( this ) . attr ( "data-bank" ) ; NoComplete . payLoading = Public . showLoading ( "\u6b63\u5728\u52a0\u8f7d" ) ; NoComplete . pay ( ) } ) } , noLogin : function ( ) { Public . hideLoading ( ) ; Public . alert ( "\u8bf7\u5148\u767b\u5f55" , function ( ) { location . href = "login.html?no_commplete" } ) } , getOrder : function ( ) { bootStrap . get ( "queryOrder/queryMyOrderNoComplete" , "json" , null , "queryOrder/initNoComplete" ) . done ( function ( a ) { Public . hideLoading ( ) ; if ( a . status && a . data ) if ( a . data . orderDBList && 0 < a . data . orderDBList . length ) NoComplete . setHtml ( a . data . orderDBList ) ;
else { if ( a . data . orderCacheDTO ) { var b ; b = '<ul class="order_list"><li><div class="order_info"><div class="order_ticket text_error">\u54ce\u5440\uff0c\u51fa\u7968\u5931\u8d25\u4e86\uff01</div>' ; b += "<p>" + a . data . orderCacheDTO . message . message + "</p>" ; b += "</div></li></ul>" ; $ ( "#orders" ) . html ( b ) } } else 0 < $ ( "#no_complete_page" ) . length && Public . alert ( "\u6682\u65e0\u8ba2\u5355\uff0c\u8bf7\u5230\u6211\u7684\u8ba2\u5355\u67e5\u770b\u5df2\u5b8c\u6210\u8ba2\u5355" , function ( ) { location . href = "order_list.html" } ) } ) . fail ( function ( a ,
b ) { 0 < $ ( "#no_complete_page" ) . length && ( Public . hideLoading ( ) , Public . alert ( "\u67e5\u8be2\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5\u3002" , function ( ) { location . href = location . href } ) ) } ) } , getToken : function ( ) { bootStrap . post ( "queryOrder/initNoComplete" , "html" , null , "payOrder/init" ) . done ( function ( a ) { a . match ( /\S+\s+globalRepeatSubmitToken\s+=\s+\S+/ ) ; eval ( a . match ( /\S+\s+globalRepeatSubmitToken\s+=\s+\S+/ ) [ 0 ] ) ; globalRepeatSubmitToken && ( NoComplete . token = globalRepeatSubmitToken ) ; NoComplete . getOrder ( ) } ) . fail ( function ( ) { Public . hideLoading ( ) ;
Public . alert ( "12306\u4e0d\u7ed9\u529b\u554a\uff0c\u5509\u3002\u51fa\u73b0\u7f51\u7edc\u9519\u8bef\u4e86\uff0c\u8bf7\u91cd\u8bd5.." ) } ) } , setHtml : function ( a ) { for ( var b = "" , c = 0 , d = 0 , e = a . length ; d < e ; d ++ ) { b += '<div class="orders_title">\u8ba2\u5355\u53f7\uff1a' + a [ d ] . sequence _no + "</div>" ; b += '<div class="order_tickets">' ; c = ( new Date ( a [ d ] . tickets [ 0 ] . pay _limit _time . replace ( /\-/gi , "/" ) ) ) . getTime ( ) ; isNaN ( c ) || ( c = ( new Date ( a [ d ] . order _date . replace ( /\-/gi , "/" ) ) ) . getTime ( ) + 27E5 ) ; for ( var f = 0 ; f < a [ d ] . tickets . length ; f ++ ) b +=
'<div class="ticket">' , b += '<div class="ticket_title"><span class="pull_right">K2341</span>' + ( new Date ( a [ d ] . start _train _date _page . replace ( /\-/gi , "/" ) ) ) . format ( "yyyy-M-d" ) + " " + ( new Date ( a [ d ] . start _train _date _page . replace ( /\-/gi , "/" ) ) ) . day ( 3 ) + "</div>" , b += '<div class="stations_info">' , b += '<div class="station_info"><strong>' + a [ d ] . from _station _name _page [ 0 ] + "</strong>" + a [ d ] . start _time _page + "</div>" , b += '<div class="station_info"><strong>' + a [ d ] . to _station _name _page [ 0 ] + "</strong>" + a [ d ] . arrive _time _page + "</div>" ,
b += "</div>" , b += '<div class="ticket_passenger">' , b += '<strong class="text_lg">' + a [ d ] . tickets [ f ] . passengerDTO . passenger _name + "</strong>" , b += '<span class="text_gray">' + a [ d ] . tickets [ f ] . passengerDTO . passenger _id _no + "</span>" , b += "</div>" , b += '<div class="ticket_info"><span class="pull_right">' + a [ d ] . tickets [ f ] . str _ticket _price _page + "\u5143</span>" , b += a [ d ] . tickets [ f ] . ticket _type _name , b += " " + a [ d ] . tickets [ f ] . seat _type _name , b += " " + a [ d ] . tickets [ f ] . coach _name + "\u8f66" , b += a [ d ] . tickets [ f ] . seat _name , b += "</div>" , b +=
"</div>" ; b += "</div>" ; b += '<div class="order_pay_info">' ; b += '<p>\u5e2d\u4f4d\u5df2\u6210\u529f\u9501\u5b9a\uff0c\u8bf7\u60a8\u5728<strong class="pay_time" data-limittime="' + c + '" data-orderno="' + a [ d ] . sequence _no + '"></strong>\u5185\u8fdb\u884c\u7f51\u4e0a\u652f\u4ed8\uff0c\u5426\u5219\u5e2d\u4f4d\u5c06\u81ea\u52a8\u91ca\u653e\u7ed9\u5176\u4ed6\u65c5\u5ba2\u3002</p>' ; b += '<div class="pay_info clearfix"><a href="javascript:;" class="btn btn_success pull_right" data-no="' + a [ d ] . sequence _no + '">\u7acb\u5373\u652f\u4ed8</a><span class="pay_money">' +
a [ d ] . ticket _total _price _page + "\u5143</span></div>" ; b += "</div>" } $ ( "#orders" ) . html ( b ) ; NoComplete . countdown ( ) } , countdown : function ( ) { $ ( "[data-limittime]" ) . each ( function ( a , b ) { var c = $ ( b ) , d = c . attr ( "data-orderno" ) , e = ( new Date ( parseInt ( c . attr ( "data-limittime" ) ) ) ) . getTime ( ) - ( new Date ) . getTime ( ) ; 0 >= e ? ( c . closest ( "p" ) . html ( "\u8ba2\u5355\u5df2\u8fc7\u671f" ) , $ ( '[data-no="' + d + '"' ) . html ( "\u8ba2\u5355\u5df2\u8fc7\u671f" ) . addClass ( "btn_gray" ) ) : ( c . html ( NoComplete . gm ( e ) ) , $ ( ".pay_tip_info .text_warning" ) . html ( NoComplete . gm ( e ) ) ) } ) ;
setTimeout ( NoComplete . countdown , 1E3 ) } , gm : function ( a ) { var b = parseInt ( a / 6E4 ) ; a = parseInt ( a % 6E4 / 1E3 ) ; 10 > b && ( b = "0" + b ) ; 10 > a && ( a = "0" + a ) ; return b + ":" + a } , selectBank : function ( ) { Public . showInnerPage ( "banks" ) } , pay : function ( a , b ) { var c = { sequence _no : NoComplete . curNo , pay _flag : "pay" , _json _att : "" , REPEAT _SUBMIT _TOKEN : NoComplete . token } ; $ ( "span" , NoComplete . payLoading ) . html ( "\u6b63\u5728\u83b7\u53d6\u652f\u4ed8\u4fe1\u606f" ) ; bootStrap . post ( "queryOrder/continuePayNoCompleteMyOrder" , "json" , c , "queryOrder/initNoComplete" ) . done ( function ( a ) { a . status &&
( "Y" == a . data . existError ? Public . alert ( a . data . errorMsg ) : bootStrap . post ( "payOrder/paycheck" , "json" , { _json _att : "" } , "payOrder/init" ) . done ( function ( a ) { NoComplete . submitPay ( a . data . payForm ) } ) . fail ( function ( ) { Public . alert ( "12306\u4e0d\u7ed9\u529b\u554a\uff0c\u5509\u3002\u51fa\u73b0\u7f51\u7edc\u9519\u8bef\u4e86\uff0c\u8bf7\u91cd\u8bd5.." ) } ) ) } ) . fail ( function ( ) { Public . alert ( "12306\u4e0d\u7ed9\u529b\u554a\uff0c\u5509\u3002\u51fa\u73b0\u7f51\u7edc\u9519\u8bef\u4e86\uff0c\u8bf7\u91cd\u8bd5.." ) } ) } , analyzeFormData : function ( a ) { for ( var b =
{ } , c = /<input[\s\w\W]*?(name|value)="([\s\w\W]*?)"[\s\w\W]*?(name|value)=['"]([\s\w\W]*?)['"][\s\w\W]*?\/?>/g , d = null ; null != ( d = c . exec ( a ) ) ; ) "name" == d [ 1 ] ? b [ d [ 2 ] ] = d [ 4 ] : b [ d [ 4 ] ] = d [ 2 ] ; return b } , submitPay : function ( a ) { a = { _json _att : "" , interfaceName : a . interfaceName , interfaceVersion : a . interfaceVersion , tranData : a . tranData , merSignMsg : a . merSignMsg , appId : a . appId , transType : a . transType } ; $ ( "span" , NoComplete . payLoading ) . html ( "\u6b63\u5728\u63d0\u4ea4\u652f\u4ed8\u8bf7\u6c42" ) ; bootStrap . post ( "https://epay.12306.cn/pay/payGateway" ,
2014-09-01 18:15:29 +08:00
"html" , a , "payOrder/init" ) . done ( function ( a ) { a = NoComplete . analyzeFormData ( a ) ; a . bankId = NoComplete . bankId ; bootStrap . post ( "https://epay.12306.cn/pay/webBusiness" , "html" , a , "https://epay.12306.cn/pay/payGateway" ) . done ( function ( a ) { NoComplete . analyzeFormData ( a ) ; a = a . replace ( /[\n\t\r]/gi , "" ) . replace ( />\s+</gi , "><" ) . match ( /<form.*\/form>/gi ) ; 0 < a . length && ( $ ( "span" , NoComplete . payLoading ) . html ( "\u6b63\u5728\u5411\u94f6\u884c\u63d0\u4ea4\u652f\u4ed8\u8bf7\u6c42" ) , $ ( "#hideHtml" ) . html ( a [ 0 ] ) , setTimeout ( function ( ) { $ ( 'form[name="myform"]' ) . submit ( ) } ,
2014-09-02 19:09:24 +08:00
1E3 ) ) } ) . fail ( function ( ) { } ) } ) . fail ( function ( ) { Public . alert ( "12306\u4e0d\u7ed9\u529b\u554a\uff0c\u5509\u3002\u51fa\u73b0\u7f51\u7edc\u9519\u8bef\u4e86\uff0c\u8bf7\u91cd\u8bd5.." ) } ) } , cancelOrder : function ( a , b , c ) { var d = Public . showLoading ( "\u6b63\u5728\u53d6\u6d88\u8ba2\u5355..." ) ; bootStrap . post ( "queryOrder/cancelNoCompleteMyOrder" , "json" , { sequence _no : a , cancel _flag : "cancel_order" , _json _att : "" } , "queryOrder/initNoComplete" ) . done ( function ( a ) { Public . hideLoading ( d ) ; if ( a . status && "N" == a . data . existError ) Public . alert ( "\u53d6\u6d88\u8ba2\u5355\u6210\u529f\uff01" ,
2014-09-03 19:25:32 +08:00
function ( ) { "function" == typeof b && b ( ) } ) ; else { var f = "" ; 0 < a . messages . length && ( f = a . messages [ 0 ] ) ; f || ( f = "\u53d6\u6d88\u8ba2\u5355\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5\uff01" ) ; Public . alert ( f , function ( ) { "function" == typeof c && c ( ) } ) } } ) . fail ( function ( ) { Public . hideLoading ( d ) ; Public . alert ( "\u7f51\u7edc\u8fde\u63a5\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5\uff01" , function ( ) { "function" == typeof c && c ( ) } ) } ) } } ; var Remind = { sellTime : null , loading : null , init : function ( ) { if ( 0 == $ ( "#remind_page" ) . length ) return ! 1 ; Remind . deviceInfo = JSON . parse ( bootStrap . device _info ) ; if ( Remind . deviceInfo ) { Public . checkLogin ( Remind . checkLoginCallback , Remind . checkLoginCallback , Remind . checkLoginCallback ) ; Remind . sellTime = WIN . sellTime ; Remind . dataInit ( ) ; Remind . staionInt ( ) ; $ ( '.query_box [type="checkbox"]' ) . on ( "change" , function ( ) { setTimeout ( function ( ) { Remind . checkSubmit ( ) } , 50 ) } ) ; $ ( "#remind_form" ) . on ( "submit" , function ( ) { Remind . remindSubmit ( ) ;
return ! 1 } ) ; var a = Public . getQueryData ( window . location . search ) ; a . date && ! isNaN ( ( new Date ( a . date . replace ( /\-/gi , "/" ) ) ) . getTime ( ) ) && Remind . dateChangeCallback ( new Date ( a . date . replace ( /\-/gi , "/" ) ) ) ; a . from && CheckStaion . CodeObj [ a . from ] && Remind . startCallback ( CheckStaion . CodeObj [ a . from ] [ 1 ] , CheckStaion . CodeObj [ a . from ] [ 2 ] ) ; a . to && CheckStaion . CodeObj [ a . to ] && Remind . endCallback ( CheckStaion . CodeObj [ a . to ] [ 1 ] , CheckStaion . CodeObj [ a . to ] [ 2 ] ) } else Public . alert ( "\u8ba2\u9605\u529f\u80fd\u4ec5\u8bf7\u4f7f\u7528\u624b\u673a\u730e\u8c79\u6d4f\u89c8\u5668" ,
function ( ) { window . history . back ( ) } ) } , checkLoginCallback : function ( ) { } , dataInit : function ( ) { var a = Public . getQueryData ( window . location . search ) , b = ( new Date ) . addDays ( 49 ) ; a . date && ! isNaN ( ( new Date ( a . date . replace ( /\-/gi , "/" ) ) ) . getTime ( ) ) && ( b = new Date ( a . date . replace ( /\-/gi , "/" ) ) ) ; Public . setDate ( b ) ; Public . calendar . setSection ( ( new Date ) . addDays ( 20 ) , 29 ) ; Public . calendar . checkCallback = Remind . dateChangeCallback ; Public . calendar . setBasic ( ) } , dateChangeCallback : function ( a ) { a = a . date . getTime ( ) ; a >= Public . calendar . minDate . date . getTime ( ) &&
a <= Public . calendar . maxDate . date . getTime ( ) && ( $ ( "#date_tip" ) . hide ( ) , Public . hideInnerPage ( "date_box" ) , $ ( "#start_date" ) . html ( Public . calendar . curDate . format ( Public . formatString ) + " " + Public . calendar . curDate . day ( 3 ) ) , $ ( "#start_date_val" ) . val ( Public . calendar . curDate . format ( "yyyy-MM-dd" ) ) ) } , staionInt : function ( ) { CheckStaion . init ( ) ; $ ( "#startStation" ) . on ( "click" , function ( ) { CheckStaion . callback = Remind . startCallback ; CheckStaion . cancelCallback = Remind . cancelCallback ; CheckStaion . show ( ) ; $ ( "#wrap" ) . hide ( ) } ) ; $ ( "#endStation" ) . on ( "click" ,
function ( ) { CheckStaion . callback = Remind . endCallback ; CheckStaion . cancelCallback = Remind . cancelCallback ; CheckStaion . show ( ) ; $ ( "#wrap" ) . hide ( ) } ) ; $ ( "#exchange" ) . on ( "click" , function ( ) { var a = $ ( "#startStationName" ) . val ( ) , b = $ ( "#startStationCode" ) . val ( ) , c = $ ( "#endStationName" ) . val ( ) , d = $ ( "#endStationCode" ) . val ( ) ; $ ( "#startStationName" ) . val ( c ) ; $ ( "#startStationCode" ) . val ( d ) ; $ ( "#endStationName" ) . val ( a ) ; $ ( "#endStationCode" ) . val ( b ) ; a ? $ ( "#endStation" ) . html ( a ) : $ ( "#endStation" ) . html ( "\u5230\u8fbe\u7ad9" ) ; c ? $ ( "#startStation" ) . html ( c ) :
$ ( "#startStation" ) . html ( "\u51fa\u53d1\u7ad9" ) ; Remind . changeCity ( ) } ) } , startCallback : function ( a , b ) { $ ( "#startStation" ) . html ( a ) ; $ ( "#startStationName" ) . val ( a ) ; $ ( "#startStationCode" ) . val ( b ) ; CheckStaion . hide ( ) ; $ ( "#wrap" ) . show ( ) ; Remind . changeCity ( ) } , endCallback : function ( a , b ) { $ ( "#endStation" ) . html ( a ) ; $ ( "#endStationName" ) . val ( a ) ; $ ( "#endStationCode" ) . val ( b ) ; CheckStaion . hide ( ) ; $ ( "#wrap" ) . show ( ) ; Remind . changeCity ( ) } , changeCity : function ( ) { Remind . checkSubmit ( ) ; if ( 0 < $ ( '.station [value=""]' ) . length ) return ! 1 ; Remind . getTrains ( ) } ,
cancelCallback : function ( ) { $ ( "#wrap" ) . show ( ) } , trainsHis : { } , getTrains : function ( ) { var a = ( new Date ) . addDays ( 10 ) . format ( "yyyy-MM-dd" ) , b = $ ( "#startStationCode" ) . val ( ) , c = $ ( "#endStationCode" ) . val ( ) , d = b + c + a + "ADULT" , a = { "leftTicketDTO.train_date" : a , "leftTicketDTO.from_station" : b , "leftTicketDTO.to_station" : c , purpose _codes : "ADULT" } ; b != c && ( Remind . trainsHis [ d ] ? Remind . checkType ( Remind . trainsHis [ d ] ) : cn12306 . queryTicket ( a , function ( a ) { ! 0 == a . status && 200 == a . httpstatus && ( 0 < a . data . length ? ( Remind . trainsHis [ d ] = a . data , Remind . checkType ( a . data ) ) :
2014-09-03 17:09:04 +08:00
Public . alert ( "\u6ca1\u6709\u627e\u5230\u4ece<strong>" + $ ( "#startStationName" ) . val ( ) + "</strong>\u5230<strong>" + $ ( "#endStationName" ) . val ( ) + "</strong>\u7684\u5217\u8f66" ) ) } ) ) } , checkType : function ( a ) { $ ( '.query_box [type="checkbox"]' ) . attr ( "disabled" , "disabled" ) . prop ( "checked" , ! 1 ) ; for ( var b = 0 , c = a . length ; b < c ; b ++ ) { if ( 2 < $ ( '.query_box [type="checkbox"]:checked' ) . length ) { $ ( '.query_box [value="all"]' ) . removeAttr ( "disabled" ) . prop ( "checked" , ! 0 ) ; break } switch ( a [ b ] . queryLeftNewDTO . station _train _code [ 0 ] ) { case "G" : $ ( '.query_box [value="1"]' ) . removeAttr ( "disabled" ) . prop ( "checked" ,
! 0 ) ; break ; case "D" : case "C" : $ ( '.query_box [value="2"]' ) . removeAttr ( "disabled" ) . prop ( "checked" , ! 0 ) ; break ; default : $ ( '.query_box [value="3"]' ) . removeAttr ( "disabled" ) . prop ( "checked" , ! 0 ) } } Remind . checkSubmit ( ) } , checkSubmit : function ( ) { 0 == $ ( '.station [value=""]' ) . length && 0 < $ ( '[name="train_type"]:checked' ) . length && $ ( "#startStationCode" ) . val ( ) != $ ( "#endStationCode" ) . val ( ) ? $ ( "#remind_btn" ) . removeAttr ( "disabled" ) . removeClass ( "btn_gray" ) : $ ( "#remind_btn" ) . attr ( "disabled" , "disabled" ) . addClass ( "btn_gray" ) } , remindSubmit : function ( ) { Remind . loading =
2014-09-03 19:25:32 +08:00
Public . showLoading ( "\u6b63\u5728\u9884\u5b9a" ) ; var a = $ ( '.query_box [type="checkbox"]:checked' ) , b = "" , c = { device _id : Remind . deviceInfo . did , device _type : Remind . deviceInfo . device _type , fromCode : $ ( "#startStationCode" ) . val ( ) , fromName : $ ( "#startStationName" ) . val ( ) , toCode : $ ( "#endStationCode" ) . val ( ) , toName : $ ( "#endStationName" ) . val ( ) , date : $ ( "#start_date_val" ) . val ( ) , tasks : [ ] } , d = c . date . replace ( /\-/g , "/" ) , e = new Date ( d ) , f = [ ] , d = e . addDays ( - 19 ) . format ( "yyyy/MM/dd" ) ; a . each ( function ( a , b ) { var e = $ ( b ) . val ( ) , p = Remind . sellTime [ c . fromCode ] ;
if ( "all" != e ) switch ( p || ( p = Remind . sellTime [ c . fromName ] ) , p = p . split ( "/" ) , e ) { case "1" : f . push ( "14:00" ) ; c . tasks . push ( { time : ( new Date ( d + " 14:00" ) ) . getTime ( ) - 9E5 , left : 15 , type : 1 } ) ; c . tasks . push ( { time : ( new Date ( d + " 14:00" ) ) . getTime ( ) - 36E5 , left : 60 , type : 1 } ) ; break ; case "2" : f . push ( "11:00" ) ; c . tasks . push ( { time : ( new Date ( d + " 11:00" ) ) . getTime ( ) - 9E5 , left : 15 , type : 2 } ) ; c . tasks . push ( { time : ( new Date ( d + " 11:00" ) ) . getTime ( ) - 36E5 , left : 60 , type : 2 } ) ; break ; case "3" : for ( e = 0 ; e < p . length ; e ++ ) f . push ( p [ e ] ) , c . tasks . push ( { time : ( new Date ( d +
" " + p [ e ] ) ) . getTime ( ) - 9E5 , left : 15 , type : 3 } ) , c . tasks . push ( { time : ( new Date ( d + " " + p [ e ] ) ) . getTime ( ) - 36E5 , left : 60 , type : 3 } ) } } ) ; f . sort ( function ( a , b ) { return parseInt ( a . split ( ":" ) [ 0 ] ) > parseInt ( b . split ( ":" ) [ 0 ] ) ? 1 : - 1 } ) ; f = f . join ( "," ) ; b = "\u60a8\u9884\u7ea6\u7684" + e . format ( "YYYY\u5e74M\u6708d\u65e5" ) + "\uff0c" + c . fromName + "\u81f3" + c . toName + "\u7684\u706b\u8f66\u7968\uff0c\u5c06\u4e8e" + e . addDays ( - 19 ) . format ( "YYYY\u5e74M\u6708d\u65e5" ) + f + "\u5f00\u552e\u3002\u552e\u7968\u5f00\u59cb\u524d\u6211\u4eec\u4f1a\u63d0\u9192\u60a8\u3002\u795d\u60a8\u62a2\u7968\u6210\u529f\uff01" ;
$ . ajax ( { type : "POST" , url : "http://12306.liebao.cn/index.php?r=Api/SentRss" , data : { data : JSON . stringify ( c ) } , dataType : "json" , success : function ( a ) { Public . hideLoading ( Remind . loading ) ; 0 == a . resCode ? Public . alert ( b ) : Public . alert ( a . message ) } , error : function ( ) { Public . hideLoading ( Remind . loading ) ; Public . alert ( "\u9884\u5b9a\u5931\u8d25" ) } } ) } } ; var MyRemind = { init : function ( ) { if ( 0 == $ ( "#myremind_page" ) . length ) return ! 1 ; MyRemind . deviceInfo = JSON . parse ( bootStrap . device _info ) ; MyRemind . deviceInfo ? MyRemind . getMyRemind ( ) : Public . alert ( "\u8ba2\u9605\u529f\u80fd\u4ec5\u8bf7\u4f7f\u7528\u624b\u673a\u730e\u8c79\u6d4f\u89c8\u5668" , function ( ) { window . history . back ( ) } ) } , deleteRemind : function ( a , b ) { var c = Public . showLoading ( "\u6b63\u5728\u5220\u9664\u63d0\u9192" ) ; $ . ajax ( { type : "POST" , url : "http://12306.liebao.cn/index.php?r=Api/UpdateRss" , data : { device _id : MyRemind . deviceInfo . did ,
id _list : a } , success : function ( ) { $ ( ".loading" , c ) . html ( "\u5220\u9664\u63d0\u9192\u6210\u529f" ) ; b . remove ( ) ; setTimeout ( function ( ) { Public . hideLoading ( c ) } , 1E3 ) } , error : function ( ) { Public . hideLoading ( c ) ; Public . alert ( "\u5220\u9664\u63d0\u9192\u5931\u8d25" ) } } ) } , getMyRemind : function ( ) { $ . ajax ( { type : "POST" , url : "http://12306.liebao.cn/index.php?r=Api/GetRss" , data : { device _id : MyRemind . deviceInfo . did } , dataType : "json" , success : function ( a ) { 0 == a . resCode ? 0 < a . data . length ? ( MyRemind . formatJson ( a . data ) , MyRemind . setHtmlList ( ) ,
$ ( ".list_tip" ) . hide ( ) , $ ( "#myremind_list" ) . show ( ) ) : $ ( ".list_tip" ) . html ( '\u6682\u65e0\u63d0\u9192<br><a href="remind.html" class="btn btn_success btn_block btn_lg">\u62a2\u7968\u95f9\u949f</a>' ) : Public . alert ( a . message ) } , error : function ( ) { $ ( ".list_tip" ) . html ( "\u83b7\u53d6\u4fe1\u606f\u5931\u8d25" ) ; Public . alert ( "\u83b7\u53d6\u4fe1\u606f\u5931\u8d25" ) } } ) } , remindObj : { } , remindList : [ ] , formatJson : function ( a ) { for ( var b = "" , c = 0 ; c < a . length ; c ++ ) 1 != a [ c ] . ispush && ( 0 < a [ c ] . tasks _left && ( a [ c ] . tasks _time = parseInt ( a [ c ] . tasks _time ) +
60 * a [ c ] . tasks _left ) , b = a [ c ] . fromCode + a [ c ] . toCode + a [ c ] . date , MyRemind . remindObj [ b ] || ( MyRemind . remindObj [ b ] = a [ c ] , MyRemind . remindObj [ b ] . id _list = [ ] , MyRemind . remindObj [ b ] . time _list = [ ] , MyRemind . remindObj [ b ] . format _time _list = [ ] ) , - 1 == MyRemind . remindObj [ b ] . id _list . indexOf ( a [ c ] . id ) && MyRemind . remindObj [ b ] . id _list . push ( a [ c ] . id ) , - 1 == MyRemind . remindObj [ b ] . time _list . indexOf ( 1E3 * a [ c ] . tasks _time ) && MyRemind . remindObj [ b ] . time _list . push ( 1E3 * a [ c ] . tasks _time ) ) ; for ( b in MyRemind . remindObj ) { MyRemind . remindObj [ b ] . time _list . sort ( function ( a ,
2014-09-02 20:02:55 +08:00
b ) { return a > b ? 1 : - 1 } ) ; for ( c = 0 ; c < MyRemind . remindObj [ b ] . time _list . length ; c ++ ) MyRemind . remindObj [ b ] . format _time _list . push ( ( new Date ( MyRemind . remindObj [ b ] . time _list [ c ] ) ) . toString ( ) . match ( /\d{2}:\d{2}/ ) [ 0 ] ) ; MyRemind . remindList . push ( MyRemind . remindObj [ b ] ) } MyRemind . remindList . sort ( function ( a , b ) { return ( new Date ( a . date . replace ( /\-/gi , "/" ) ) ) . getTime ( ) > ( new Date ( b . date . replace ( /\-/gi , "/" ) ) ) . getTime ( ) ? 1 : - 1 } ) } , formatHoursDate : function ( a ) { a = new Date ( a ) ; var b = a . getHours ( ) ; a . getMinutes ( ) ; return b + ":" } , setHtmlList : function ( ) { for ( var a =
"" , b = { } , c = 0 , d = MyRemind . remindList . length ; c < d ; c ++ ) b = MyRemind . remindList [ c ] , a += "<li>" , a += '<div class="mr_title"><a class="pull_right" data-ids="' + b . id _list . join ( "," ) + '"><i class="icon_remove"></i></a><i class="icon_clock"></i>' + ( new Date ( b . date . replace ( /\-/gi , "/" ) ) ) . format ( "M\u6708d\u65e5" ) + "</div>" , a += '<div class="stations_info"><div class="station_info"><strong>' + b . fromName + '</strong></div><div class="station_info"><strong>' + b . toName + "</strong></div></div>" , a += '<div class="mr_text">\u8d77\u552e\u65f6\u95f4\uff1a' +
2014-09-03 19:25:32 +08:00
b . format _time _list . join ( "\u3001" ) + "</div>" , a += "</li>" ; $ ( "#myremind_list" ) . html ( a ) ; $ ( "[data-ids]" ) . on ( "click" , function ( ) { var a = $ ( this ) , b = $ ( this ) . attr ( "data-ids" ) ; Public . confirm ( "\u5220\u9664\u63d0\u9192\u540e\uff0c\u4f60\u5c06\u4e0d\u4f1a\u6536\u5230\u653e\u7968\u63d0\u9192\uff0c\u786e\u5b9a\u5220\u9664\u5417\uff1f" , function ( ) { MyRemind . deleteRemind ( b , a . closest ( "li" ) ) } ) } ) } } ; var OrderList = { token : "" , bankId : "" , payLoading : null , curNo : "" , init : function ( ) { if ( 0 == $ ( "#order_list_page" ) . length ) return ! 1 ; OrderList . loading = Public . showLoading ( "\u6b63\u5728\u83b7\u53d6\u8ba2\u5355\u5217\u8868" ) ; Public . checkLogin ( OrderList . hasLogin , OrderList . noLogin , OrderList . noLogin ) } , hasLogin : function ( ) { OrderList . getNoComOrder ( ) ; $ ( "[data-no]" ) . live ( "click" , function ( ) { NoComplete . curNo = $ ( this ) . attr ( "data-no" ) ; NoComplete . selectBank ( ) } ) ; $ ( "[data-cancelno]" ) . live ( "click" , function ( a ) { var b = $ ( this ) . attr ( "data-cancelno" ) ,
c = $ ( this ) . closest ( "li" ) ; Public . confirm ( "\u53d6\u6d883\u6b21\u8ba2\u5355\u540e\uff0c\u5f53\u5929\u4e0d\u53ef\u518d\u8ba2\u7968\uff0c\u786e\u5b9a\u8981\u53d6\u6d88\u8ba2\u5355\u5417\uff1f" , function ( ) { NoComplete . cancelOrder ( b , function ( ) { c . remove ( ) } ) } ) } ) ; $ ( '[data-fn="close_bank"]' ) . live ( "click" , function ( ) { Public . hideInnerPage ( ) } ) ; $ ( "#banks [data-bank]" ) . live ( "click" , function ( ) { NoComplete . bankId = $ ( this ) . attr ( "data-bank" ) ; NoComplete . payLoading = Public . showLoading ( "\u6b63\u5728\u52a0\u8f7d" ) ; NoComplete . pay ( ) } ) } ,
2014-09-03 16:19:58 +08:00
noLogin : function ( ) { Public . hideLoading ( ) ; Public . alert ( "\u8bf7\u5148\u767b\u5f55" , function ( ) { location . href = "login.html?order_list" } ) } , loading : null , hisList : [ ] , getNoComOrder : function ( ) { bootStrap . get ( "queryOrder/queryMyOrderNoComplete" , "json" , null , "queryOrder/initNoComplete" ) . done ( function ( a ) { a . status && ( a . data && a . data . orderDBList && 0 < a . data . orderDBList . length ) && ( OrderList . hisList = a . data . orderDBList ) ; OrderList . getOrder ( ) } ) . fail ( function ( a , b ) { OrderList . getOrder ( ) } ) } , getOrder : function ( ) { var a = { queryType : 1 ,
queryStartDate : ( new Date ) . addDays ( - 90 ) . format ( "yyyy-MM-dd" ) , queryEndDate : ( new Date ) . format ( "yyyy-MM-dd" ) , come _from _flag : "my_order" , pageSize : 100 , pageIndex : 0 , sequeue _train _name : "" } ; bootStrap . get ( "queryOrder/queryMyOrder" , "json" , a , "queryOrder/init" ) . done ( function ( a ) { Public . hideLoading ( ) ; if ( a . status && a . data ) if ( a . data . OrderDTODataList && 0 < a . data . OrderDTODataList . length ) { for ( var c = 0 ; c < a . data . OrderDTODataList . length ; c ++ ) OrderList . hisList . push ( a . data . OrderDTODataList [ c ] ) ; OrderList . setHtml ( ) } else 0 < OrderList . hisList . length ?
OrderList . setHtml ( ) : Public . alert ( "\u4e00\u4e2a\u6708\u5185\u6682\u65e0\u8ba2\u5355" ) ; else Public . confirm ( "\u83b7\u53d6\u8ba2\u5355\u5217\u8868\u5931\u8d25,\u662f\u5426\u91cd\u65b0\u83b7\u53d6\uff1f" , function ( ) { OrderList . getNoComOrder ( ) } ) } ) . fail ( function ( a , c ) { Public . hideLoading ( ) ; Public . confirm ( "\u83b7\u53d6\u8ba2\u5355\u5217\u8868\u5931\u8d25,\u662f\u5426\u91cd\u65b0\u83b7\u53d6\uff1f" , function ( ) { OrderList . getNoComOrder ( ) } ) } ) } , setHtml : function ( ) { if ( 0 != OrderList . hisList . length ) { for ( var a = "" , b = OrderList . hisList ,
c = [ ] , c = [ ] , d = 0 ; d < b . length ; d ++ ) { for ( var c = b [ d ] . start _train _date _page . split ( " " ) , a = a + "<li>" , a = a + '<div class="order_info">' , a = a + ( '<div class="text_gray clearfix"><span class="pull_right">' + b [ d ] . order _date . split ( " " ) [ 0 ] + "</span>\u8ba2\u5355\u53f7\uff1a" + b [ d ] . sequence _no + "</div>" ) , a = a + ( '<div class="clearfix"><span class="pull_right">' + b [ d ] . train _code _page + "</span>" + c [ 0 ] + " " + ( new Date ( b [ d ] . order _date . replace ( /\-/gi , "/" ) ) ) . day ( 3 ) + " " + c [ 1 ] + "\u5f00</div>" ) , a = a + ( '<div class="order_ticket">' + b [ d ] . from _station _name _page [ 0 ] +
" \u2192 " + b [ d ] . to _station _name _page [ 0 ] + "</div>" ) , c = b [ d ] . tickets , e = 0 ; e < c . length ; e ++ ) a += "<div>" , "a" != c [ e ] . ticket _status _code && ( a = "c" != c [ e ] . ticket _status _code ? a + ( '<span class="pull_right">' + c [ e ] . ticket _status _name + "</span>" ) : a + '<span class="pull_right">\u5df2\u9000\u7968</span>' ) , a += c [ e ] . passengerDTO . passenger _name + " " + c [ e ] . ticket _type _name + " " + c [ e ] . seat _type _name + " " + c [ e ] . coach _name + "\u8f66" + c [ e ] . seat _name , a += "</div>" ; a += "</div>" ; a += '<div class="order_fn clearfix"><span class="pull_right">' ; "Y" == b [ d ] . cancel _flag &&
( a += '<a href="#" class="btn btn_gray btn_m" data-cancelno="' + b [ d ] . sequence _no + '">\u53d6\u6d88\u8ba2\u5355</a>' ) ; "Y" == b [ d ] . pay _flag && ( a += '<a href="javascript:;" class="btn btn_success btn_m" data-no="' + b [ d ] . sequence _no + '">\u7acb\u5373\u652f\u4ed8</a>' ) ; "Y" != b [ d ] . pay _flag && "Y" != b [ d ] . cancel _flag && ( a += '<span class="delivered"></span>' ) ; a += "</span>" + b [ d ] . ticket _total _price _page + "\u5143</div>" ; a += "</li>" } $ ( ".order_list" ) . html ( a ) ; NoComplete . getToken ( ) } } } ; var base64 = base64 || function ( ) { var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" . split ( "" ) , b = ! function ( ) { var b = { } ; $ . each ( a , function ( a , e ) { b [ e ] = a } ) ; return b } ( ) ; return { encode : function ( b ) { for ( var d = [ ] , e = b . length , f , g = 0 ; g < e ; ) f = b [ g ] << 16 | b [ g + 1 ] << 8 | b [ g + 2 ] , d . push ( a [ f >> 18 ] , a [ f >> 12 & 63 ] , a [ f >> 6 & 63 ] , a [ f & 63 ] ) , g += 3 ; 1 == e % 3 ? ( d . pop ( ) , d . pop ( ) , d . push ( "=" , "=" ) ) : ( d . pop ( ) , d . push ( "=" ) ) ; return d . join ( "" ) } , decode : function ( a ) { var d = [ ] ; a = a . split ( "" ) ; var e = a . length , f , g = 0 ; if ( e % 4 ) return null ; for ( ; g < e ; ) f = b [ a [ g ] ] <<
2014-09-01 13:50:43 +08:00
18 | b [ a [ g + 1 ] ] << 12 | b [ a [ g + 2 ] ] << 6 | b [ a [ g + 3 ] ] , d . push ( f >> 16 , f >> 8 & 255 , f & 255 ) , g += 4 ; for ( ; "=" == a [ -- e ] ; ) d . pop ( ) ; return d } , encodeArrayBuffer : function ( a ) { a = new DataView ( a ) ; for ( var b = a . byteLength , e = [ ] , f = 0 ; f < b ; f ++ ) e . push ( a . getUint8 ( f ) ) ; return base64 . encode ( e ) } , toObjectUrl : function ( a , b ) { return "data:" + b + ";base64," + a } } } ( ) , bootStrap = function ( ) { var a = $ . Deferred ( ) , b = "undefined" !== typeof _ _TicketJavaScriptObject _ _ , c = "undefined" != typeof window . _ _ksticket || "undefined" != typeof window . _ _gChrome , d = "undefined" != typeof window . _ _ksticket ||
"undefined" !== typeof window . liebaoExtentions , e = window . _ _TicketJavaScriptObject _ _ || window . _ _ksticket , f = document . body . dataset . mobileSupportInitialized || ! 1 ; Object . defineProperties ( a , { isAndroid : { get : function ( ) { return isAndLiebao } } , isIos : { get : function ( ) { return c } } , isIosOld : { get : function ( ) { return ! d } } , device _info : { get : function ( ) { return e ? e . get _device _info ( ) : null } } } ) ; a . open _url = function ( a ) { e ? e . open _url ( a ) : window . open ( a ) } ; a . refresh _start = function ( ) { [ ] . slice . call ( arguments ) ; e && e . refresh _start ( ) } ; a . refresh _end =
2014-09-03 19:25:32 +08:00
function ( ) { [ ] . slice . call ( arguments ) ; e && e . refresh _end ( ) } ; a . refresh _success = function ( ) { [ ] . slice . call ( arguments ) ; e ? e . refresh _success ( ) : window . liebaoExtentions && window . liebaoExtentions . vibrate ? window . liebaoExtentions . vibrate ( 5E3 ) : window . _ _gChrome && window . _ _gChrome . hasTicket && window . _ _gChrome . hasTicket ( "\u5237\u7968\u6210\u529f\uff0c\u8bf7\u5c3d\u5feb\u8ba2\u7968" , "" ) } ; var g = { } , n = 0 , l = function ( ) { return { getUrl : function ( a ) { return ":" === a [ 4 ] || ":" === a [ 5 ] ? a : "https://kyfw.12306.cn/otn/" + a } , getHeaders : function ( a ,
b ) { b = b || { } ; b . Origin = /(https?:\/\/[^\/]+\/)/i . exec ( a ) [ 1 ] ; if ( c ) { var d = { } ; $ . each ( b , function ( a , b ) { d [ "Fish-" + a ] = b } ) ; b = d } return b } } } ( ) , p = function ( ) { window . fishXhrLoadCallback = function ( a ) { "string" === typeof a && ( a = JSON . parse ( a ) ) ; var b = g [ a . id ] ; if ( b ) { if ( "json" === b . rawResultType ) try { a . result = JSON . parse ( a . result ) } catch ( c ) { a . success = ! 1 } else "image" === b . rawResultType && ( a . result = base64 . toObjectUrl ( a . result , "png" ) ) ; delete g [ a . id ] ; a . success ? b . resolve ( a . result , { headers : a . headers , statusCode : a . statusCode , statusDescription : a . statusDescription ,
id : a . id } ) : b . reject ( a . result , { headers : a . headers , statusCode : a . statusCode , statusDescription : a . statusDescription , id : a . id } ) } } ; var a = function ( a , b , c , d , f , h ) { var m = new $ . Deferred ; d = d || "" ; "string" !== typeof d && ( d = $ . param ( d ) ) ; if ( "GET" == a && "image" != ( c || "json" ) ) b = b + "?" + d ; h = h || { } ; f && ( h = $ . extend ( { } , h , { Referer : f } ) ) ; m . rawResultType = c || "json" ; m . context = { id : ++ n , url : b , method : a , postdata : d , refer : f , headers : h || { } , callback : "fishXhrLoadCallback" , requestCharset : "UTF-8" , returnType : "image" === m . rawResultType ? "image" : "text" } ; g [ m . context . id ] =
m ; e . sendRequest ( JSON . stringify ( m . context ) ) ; return m . promise ( ) } ; return { ajax : a , get : function ( ) { var b = [ ] . slice . call ( arguments ) ; b . unshift ( "GET" ) ; return a . apply ( this , b ) } , post : function ( ) { var b = [ ] . slice . call ( arguments ) ; b . unshift ( "POST" ) ; return a . apply ( this , b ) } , getImage : function ( b , c ) { return a ( "GET" , b , "image" , null , c ) } } } ( ) , A = function ( ) { var a = function ( a , b , c , d , e , f ) { var g = new $ . Deferred ; f = f || { } ; e && ( f = $ . extend ( { } , f , { Referer : e } ) ) ; var m = { } ; $ . each ( f , function ( a , b ) { m [ "Fish-" + a ] = b } ) ; $ . ajax ( { url : b , data : d , timeout : 12E4 ,
type : a , dataType : c , refer : e , headers : m } ) . done ( function ( a , b , c ) { g . resolve ( a , { headers : c . getAllResponseHeaders ( ) , statusCode : c . statusCode , statusDescription : c . statusText , id : 0 } ) } ) . fail ( function ( a ) { g . reject ( result , { headers : a . getAllResponseHeaders ( ) , statusCode : a . statusCode , statusDescription : a . statusText , id : 0 } ) } ) ; return g } , b = function ( a , b , c , d , e ) { var f = new $ . Deferred , g = new window . XMLHttpRequest ; e = e || { } ; g . open ( a , b , ! 0 ) ; $ . each ( e , function ( a , b ) { g . setRequestHeader ( "Fish-" + a , b ) } ) ; g . onreadystatechange = function ( ) { 4 === g . readyState &&
2014-09-01 13:50:43 +08:00
( 200 !== g . status ? f . reject ( "\u52a0\u8f7d\u9a8c\u8bc1\u7801\u5931\u8d25\uff0c\u8bf7\u70b9\u51fb\u9a8c\u8bc1\u7801\u5237\u65b0" , { headers : g . getAllResponseHeaders ( ) , statusCode : g . statusCode , statusDescription : g . statusText , id : 0 } ) : f . resolve ( base64 . toObjectUrl ( base64 . encodeArrayBuffer ( g . response ) , "image/jpeg" ) , { headers : g . getAllResponseHeaders ( ) , statusCode : g . statusCode , statusDescription : g . statusText , id : 0 } ) ) } ; g . responseType = "arraybuffer" ; g . setRequestHeader ( "Fish-Referer" , d || "" ) ; g . setRequestHeader ( "Fish-User-Agent" ,
2014-09-03 19:25:32 +08:00
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" ) ; g . setRequestHeader ( "Fish-Origin" , /(https?:\/\/[^\/]+\/)/ . exec ( b ) [ 1 ] ) ; g . send ( c ) ; return f } ; return { ajax : a , get : function ( ) { var b = [ ] . slice . call ( arguments ) ; b . unshift ( "GET" ) ; return a . apply ( this , b ) } , post : function ( ) { var b = [ ] . slice . call ( arguments ) ; b . unshift ( "POST" ) ; return a . apply ( this , b ) } , getImage : function ( a , c ) { return b ( "GET" , a , null , c ) } } } ( ) , k = function ( ) { var b = function ( b , c , d , e , f , m ) { var k = new $ . Deferred ; m = m || { } ; f && ( m = $ . extend ( { } , m , { Referer : f } ) ) ;
b = new CustomEvent ( "ajaxproxy" , { detail : { data : { url : c , data : e , timeout : 12E4 , type : b , dataType : d , refer : f , headers : m } , index : ++ n } , cancelable : ! 0 } ) ; document . dispatchEvent ( b ) ? ( document . dispatchEvent ( new CustomEvent ( "requestSupportError" ) ) , a . reject ( "\u5e73\u53f0\u9519\u8bef" ) ) : g [ b . detail . index ] = { done : function ( a ) { k . resolve ( a , { headers : this . headers , statusCode : this . status , statusDescription : this . statusText , id : this . index } ) } , fail : function ( ) { k . reject ( this . text , { headers : this . headers , statusCode : this . status , statusDescription : this . statusText ,
2014-09-01 13:50:43 +08:00
id : this . index } ) } } ; return k } , c = function ( a , b , c , d , e ) { var f = new $ . Deferred ; e = e || { } ; d && ( e = $ . extend ( { } , e , { Referer : d } ) ) ; a = new CustomEvent ( "ajaxLoadVerifyCode" , { detail : { method : a , url : b , refer : d , index : ++ n , headers : e , data : c } , cancelable : ! 0 } ) ; document . dispatchEvent ( a ) ? ( document . dispatchEvent ( new CustomEvent ( "requestSupportError" ) ) , f . reject ( "\u5e73\u53f0\u9519\u8bef" ) ) : g [ a . detail . index ] = { done : function ( ) { f . resolve ( this . url , { headers : this . headers , statusCode : this . status , statusDescription : this . statusText , id : this . index } ) } ,
fail : function ( ) { f . reject ( this . text , { headers : this . headers , statusCode : this . status , statusDescription : this . statusText , id : this . index } ) } } ; return f } ; document . addEventListener ( "ajaxproxyfinished" , function ( a ) { a = a . detail ; if ( g [ a . index ] ) { var b = g [ a . index ] ; delete g [ a . index ] ; 404 === a . status && document . dispatchEvent ( new CustomEvent ( "networkOrCertificationError" ) ) ; a . success ? b . done . call ( a || window , a . model ) : b . fail . call ( a || window , a . model ) } } ) ; return { ajax : b , get : function ( ) { var a = [ ] . slice . call ( arguments ) ; a . unshift ( "GET" ) ; return b . apply ( this ,
2014-09-03 19:25:32 +08:00
a ) } , post : function ( ) { var a = [ ] . slice . call ( arguments ) ; a . unshift ( "POST" ) ; return b . apply ( this , a ) } , getImage : function ( a , b ) { return c ( "GET" , a , null , b ) } } } ( ) , y = function ( ) { var a = function ( a , b , c , d , e , f ) { var g = new $ . Deferred ; f = f || { } ; e && ( f = $ . extend ( { } , f , { Referer : e } ) ) ; f [ "Fish-RawUrl" ] = b ; $ . ajax ( { url : "/12306/proxy.php" , data : d , timeout : 12E4 , type : a , dataType : c , refer : e , headers : f } ) . done ( function ( a , b ) { console . log ( a , b ) ; g . resolve ( a , { headers : b . getAllResponseHeaders ( ) , statusCode : b . statusCode , statusDescription : b . statusText , id : 0 } ) } ) . fail ( function ( ) { g . reject ( xhr . responseText ,
2014-09-02 19:09:24 +08:00
{ headers : xhr . getAllResponseHeaders ( ) , statusCode : xhr . statusCode , statusDescription : xhr . statusText , id : 0 } ) } ) ; return g } , b = function ( a , b , c , d , e ) { var f = new $ . Deferred , g = new window . XMLHttpRequest ; e = e || { } ; e . RawUrl = b ; e . Origin = /(https?:\/\/[^\/]+\/)/ . exec ( b ) [ 1 ] ; e [ "User-Agent" ] = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" ; e . Referer = d || "" ; g . open ( a , "/12306/proxy.php" , ! 0 ) ; $ . each ( e , function ( a , b ) { g . setRequestHeader ( "Fish-" + a , b ) } ) ; g . onreadystatechange = function ( ) { 4 === g . readyState && ( 200 !== g . status ?
f . reject ( "\u52a0\u8f7d\u9a8c\u8bc1\u7801\u5931\u8d25\uff0c\u8bf7\u70b9\u51fb\u9a8c\u8bc1\u7801\u5237\u65b0" , { headers : g . getAllResponseHeaders ( ) , statusCode : g . statusCode , statusDescription : g . statusText , id : 0 } ) : f . resolve ( base64 . toObjectUrl ( base64 . encodeArrayBuffer ( g . response ) , "image/jpeg" ) , { headers : g . getAllResponseHeaders ( ) , statusCode : g . statusCode , statusDescription : g . statusText , id : 0 } ) ) } ; g . responseType = "arraybuffer" ; g . send ( c || null ) ; return f } ; return { ajax : a , get : function ( ) { var b = [ ] . slice . call ( arguments ) ; b . unshift ( "GET" ) ;
2014-09-03 19:25:32 +08:00
return a . apply ( this , b ) } , post : function ( ) { var b = [ ] . slice . call ( arguments ) ; b . unshift ( "POST" ) ; return a . apply ( this , b ) } , getImage : function ( a , c ) { return b ( "GET" , a , null , c ) } } } ( ) ; a . getAjaxComponent = function ( ) { return b ? p : c ? A : f ? k : y } ; a . ajax = function ( ) { var b = [ ] . slice . call ( arguments ) ; b [ 1 ] && ( b [ 1 ] = l . getUrl ( b [ 1 ] ) ) ; b [ 4 ] && ( b [ 4 ] = l . getUrl ( b [ 4 ] ) ) ; b [ 5 ] && ( b [ 5 ] = l . getHeaders ( b [ 5 ] ) ) ; return a . getAjaxComponent ( ) . ajax . apply ( this , b ) } ; a . get = function ( ) { var b = [ ] . slice . call ( arguments ) ; b . unshift ( "GET" ) ; return a . ajax . apply ( this , b ) } ; a . post =
function ( ) { var b = [ ] . slice . call ( arguments ) ; b . unshift ( "POST" ) ; return a . ajax . apply ( this , b ) } ; a . getImage = function ( ) { var b = [ ] . slice . call ( arguments ) ; b [ 1 ] && ( b [ 1 ] = l . getUrl ( b [ 1 ] ) ) ; b [ 3 ] && ( b [ 3 ] = l . getUrl ( b [ 3 ] ) ) ; b [ 5 ] && ( b [ 4 ] = l . getHeaders ( b [ 4 ] ) ) ; return a . getAjaxComponent ( ) . getImage . apply ( this , b ) } ; $ ( function ( ) { if ( c || f || isAndLiebao ) a . resolve ( ) ; else { var b = setTimeout ( function ( ) { a . resolve ( ) } , 500 ) ; document . addEventListener ( "mobileSupportInitialized" , function ( ) { clearTimeout ( b ) ; f = ! 0 ; a . resolve ( ) } ) } } ) ; return a } ( ) ;
2014-09-02 19:09:24 +08:00
bootStrap . done ( function ( ) { Client . init ( ) ; Public . init ( ) ; Login . init ( ) ; Query . init ( ) ; RunQuery . init ( ) ; OrderSubmit . init ( ) ; NoComplete . init ( ) ; MyRemind . init ( ) ; Remind . init ( ) ; OrderList . init ( ) } ) ;