2016-12-29 11:54:34 +00:00
/ * *
* Copyright ( c ) 2005 - 2010 , James Auldridge
* All rights reserved .
*
* Licensed under the BSD , MIT , and GPL ( your choice ! ) Licenses :
* http : //code.google.com/p/cookies/wiki/License
*
* /
var jaaulde = window . jaaulde || { } ; jaaulde . utils = jaaulde . utils || { } ; jaaulde . utils . cookies = ( function ( ) { var resolveOptions , assembleOptionsString , parseCookies , constructor , defaultOptions = { expiresAt : null , path : '/' , domain : null , secure : false } ; resolveOptions = function ( options ) { var returnValue , expireDate ; if ( typeof options !== 'object' || options === null ) { returnValue = defaultOptions ; } else
{ returnValue = { expiresAt : defaultOptions . expiresAt , path : defaultOptions . path , domain : defaultOptions . domain , secure : defaultOptions . secure } ; if ( typeof options . expiresAt === 'object' && options . expiresAt instanceof Date ) { returnValue . expiresAt = options . expiresAt ; } else if ( typeof options . hoursToLive === 'number' && options . hoursToLive !== 0 ) { expireDate = new Date ( ) ; expireDate . setTime ( expireDate . getTime ( ) + ( options . hoursToLive * 60 * 60 * 1000 ) ) ; returnValue . expiresAt = expireDate ; } if ( typeof options . path === 'string' && options . path !== '' ) { returnValue . path = options . path ; } if ( typeof options . domain === 'string' && options . domain !== '' ) { returnValue . domain = options . domain ; } if ( options . secure === true ) { returnValue . secure = options . secure ; } } return returnValue ; } ; assembleOptionsString = function ( options ) { options = resolveOptions ( options ) ; return ( ( typeof options . expiresAt === 'object' && options . expiresAt instanceof Date ? '; expires=' + options . expiresAt . toGMTString ( ) : '' ) + '; path=' + options . path + ( typeof options . domain === 'string' ? '; domain=' + options . domain : '' ) + ( options . secure === true ? '; secure' : '' ) ) ; } ; parseCookies = function ( ) { var cookies = { } , i , pair , name , value , separated = document . cookie . split ( ';' ) , unparsedValue ; for ( i = 0 ; i < separated . length ; i = i + 1 ) { pair = separated [ i ] . split ( '=' ) ; name = pair [ 0 ] . replace ( /^\s*/ , '' ) . replace ( /\s*$/ , '' ) ; try
{ value = decodeURIComponent ( pair [ 1 ] ) ; } catch ( e1 ) { value = pair [ 1 ] ; } if ( typeof JSON === 'object' && JSON !== null && typeof JSON . parse === 'function' ) { try
{ unparsedValue = value ; value = JSON . parse ( value ) ; } catch ( e2 ) { value = unparsedValue ; } } cookies [ name ] = value ; } return cookies ; } ; constructor = function ( ) { } ; constructor . prototype . get = function ( cookieName ) { var returnValue , item , cookies = parseCookies ( ) ; if ( typeof cookieName === 'string' ) { returnValue = ( typeof cookies [ cookieName ] !== 'undefined' ) ? cookies [ cookieName ] : null ; } else if ( typeof cookieName === 'object' && cookieName !== null ) { returnValue = { } ; for ( item in cookieName ) { if ( typeof cookies [ cookieName [ item ] ] !== 'undefined' ) { returnValue [ cookieName [ item ] ] = cookies [ cookieName [ item ] ] ; } else
{ returnValue [ cookieName [ item ] ] = null ; } } } else
{ returnValue = cookies ; } return returnValue ; } ; constructor . prototype . filter = function ( cookieNameRegExp ) { var cookieName , returnValue = { } , cookies = parseCookies ( ) ; if ( typeof cookieNameRegExp === 'string' ) { cookieNameRegExp = new RegExp ( cookieNameRegExp ) ; } for ( cookieName in cookies ) { if ( cookieName . match ( cookieNameRegExp ) ) { returnValue [ cookieName ] = cookies [ cookieName ] ; } } return returnValue ; } ; constructor . prototype . set = function ( cookieName , value , options ) { if ( typeof options !== 'object' || options === null ) { options = { } ; } if ( typeof value === 'undefined' || value === null ) { value = '' ; options . hoursToLive = - 8760 ; } else if ( typeof value !== 'string' ) { if ( typeof JSON === 'object' && JSON !== null && typeof JSON . stringify === 'function' ) { value = JSON . stringify ( value ) ; } else
{ throw new Error ( 'cookies.set() received non-string value and could not serialize.' ) ; } } var optionsString = assembleOptionsString ( options ) ; document . cookie = cookieName + '=' + encodeURIComponent ( value ) + optionsString ; } ; constructor . prototype . del = function ( cookieName , options ) { var allCookies = { } , name ; if ( typeof options !== 'object' || options === null ) { options = { } ; } if ( typeof cookieName === 'boolean' && cookieName === true ) { allCookies = this . get ( ) ; } else if ( typeof cookieName === 'string' ) { allCookies [ cookieName ] = true ; } for ( name in allCookies ) { if ( typeof name === 'string' && name !== '' ) { this . set ( name , null , options ) ; } } } ; constructor . prototype . test = function ( ) { var returnValue = false , testName = 'cT' , testValue = 'data' ; this . set ( testName , testValue ) ; if ( this . get ( testName ) === testValue ) { this . del ( testName ) ; returnValue = true ; } return returnValue ; } ; constructor . prototype . setOptions = function ( options ) { if ( typeof options !== 'object' ) { options = null ; } defaultOptions = resolveOptions ( options ) ; } ; return new constructor ( ) ; } ) ( ) ; ( function ( ) { if ( window . jQuery ) { ( function ( $ ) { $ . cookies = jaaulde . utils . cookies ; var extensions = { cookify : function ( options ) { return this . each ( function ( ) { var i , nameAttrs = [ 'name' , 'id' ] , name , $this = $ ( this ) , value ; for ( i in nameAttrs ) { if ( ! isNaN ( i ) ) { name = $this . attr ( nameAttrs [ i ] ) ; if ( typeof name === 'string' && name !== '' ) { if ( $this . is ( ':checkbox, :radio' ) ) { if ( $this . attr ( 'checked' ) ) { value = $this . val ( ) ; } } else if ( $this . is ( ':input' ) ) { value = $this . val ( ) ; } else
{ value = $this . html ( ) ; } if ( typeof value !== 'string' || value === '' ) { value = null ; } $ . cookies . set ( name , value , options ) ; break ; } } } } ) ; } , cookieFill : function ( ) { return this . each ( function ( ) { var n , getN , nameAttrs = [ 'name' , 'id' ] , name , $this = $ ( this ) , value ; getN = function ( ) { n = nameAttrs . pop ( ) ; return ! ! n ; } ; while ( getN ( ) ) { name = $this . attr ( n ) ; if ( typeof name === 'string' && name !== '' ) { value = $ . cookies . get ( name ) ; if ( value !== null ) { if ( $this . is ( ':checkbox, :radio' ) ) { if ( $this . val ( ) === value ) { $this . attr ( 'checked' , 'checked' ) ; } else
{ $this . removeAttr ( 'checked' ) ; } } else if ( $this . is ( ':input' ) ) { $this . val ( value ) ; } else
2016-08-26 17:01:25 +00:00
{ $this . html ( value ) ; } } break ; } } } ) ; } , cookieBind : function ( options ) { return this . each ( function ( ) { var $this = $ ( this ) ; $this . cookieFill ( ) . change ( function ( ) { $this . cookify ( options ) ; } ) ; } ) ; } } ; $ . each ( extensions , function ( i ) { $ . fn [ i ] = this ; } ) ; } ) ( window . jQuery ) ; } } ) ( ) ;