| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353 | 
							- /**
 
-  * @author zhixin wen <wenzhixin2010@gmail.com>
 
-  * version: 1.10.1
 
-  * https://github.com/wenzhixin/bootstrap-table/
 
-  */
 
- !function ($) {
 
-     'use strict';
 
-     // TOOLS DEFINITION
 
-     // ======================
 
-     var cachedWidth = null;
 
-     // it only does '%s', and return '' when arguments are undefined
 
-     var sprintf = function (str) {
 
-         var args = arguments,
 
-             flag = true,
 
-             i = 1;
 
-         str = str.replace(/%s/g, function () {
 
-             var arg = args[i++];
 
-             if (typeof arg === 'undefined') {
 
-                 flag = false;
 
-                 return '';
 
-             }
 
-             return arg;
 
-         });
 
-         return flag ? str : '';
 
-     };
 
-     var getPropertyFromOther = function (list, from, to, value) {
 
-         var result = '';
 
-         $.each(list, function (i, item) {
 
-             if (item[from] === value) {
 
-                 result = item[to];
 
-                 return false;
 
-             }
 
-             return true;
 
-         });
 
-         return result;
 
-     };
 
-     var getFieldIndex = function (columns, field) {
 
-         var index = -1;
 
-         $.each(columns, function (i, column) {
 
-             if (column.field === field) {
 
-                 index = i;
 
-                 return false;
 
-             }
 
-             return true;
 
-         });
 
-         return index;
 
-     };
 
-     // http://jsfiddle.net/wenyi/47nz7ez9/3/
 
-     var setFieldIndex = function (columns) {
 
-         var i, j, k,
 
-             totalCol = 0,
 
-             flag = [];
 
-         for (i = 0; i < columns[0].length; i++) {
 
-             totalCol += columns[0][i].colspan || 1;
 
-         }
 
-         for (i = 0; i < columns.length; i++) {
 
-             flag[i] = [];
 
-             for (j = 0; j < totalCol; j++) {
 
-                 flag[i][j] = false;
 
-             }
 
-         }
 
-         for (i = 0; i < columns.length; i++) {
 
-             for (j = 0; j < columns[i].length; j++) {
 
-                 var r = columns[i][j],
 
-                     rowspan = r.rowspan || 1,
 
-                     colspan = r.colspan || 1,
 
-                     index = $.inArray(false, flag[i]);
 
-                 if (colspan === 1) {
 
-                     r.fieldIndex = index;
 
-                     // when field is undefined, use index instead
 
-                     if (typeof r.field === 'undefined') {
 
-                         r.field = index;
 
-                     }
 
-                 }
 
-                 for (k = 0; k < rowspan; k++) {
 
-                     flag[i + k][index] = true;
 
-                 }
 
-                 for (k = 0; k < colspan; k++) {
 
-                     flag[i][index + k] = true;
 
-                 }
 
-             }
 
-         }
 
-     };
 
-     var getScrollBarWidth = function () {
 
-         if (cachedWidth === null) {
 
-             var inner = $('<p/>').addClass('fixed-table-scroll-inner'),
 
-                 outer = $('<div/>').addClass('fixed-table-scroll-outer'),
 
-                 w1, w2;
 
-             outer.append(inner);
 
-             $('body').append(outer);
 
-             w1 = inner[0].offsetWidth;
 
-             outer.css('overflow', 'scroll');
 
-             w2 = inner[0].offsetWidth;
 
-             if (w1 === w2) {
 
-                 w2 = outer[0].clientWidth;
 
-             }
 
-             outer.remove();
 
-             cachedWidth = w1 - w2;
 
-         }
 
-         return cachedWidth;
 
-     };
 
-     var calculateObjectValue = function (self, name, args, defaultValue) {
 
-         var func = name;
 
-         if (typeof name === 'string') {
 
-             // support obj.func1.func2
 
-             var names = name.split('.');
 
-             if (names.length > 1) {
 
-                 func = window;
 
-                 $.each(names, function (i, f) {
 
-                     func = func[f];
 
-                 });
 
-             } else {
 
-                 func = window[name];
 
-             }
 
-         }
 
-         if (typeof func === 'object') {
 
-             return func;
 
-         }
 
-         if (typeof func === 'function') {
 
-             return func.apply(self, args);
 
-         }
 
-         if (!func && typeof name === 'string' && sprintf.apply(this, [name].concat(args))) {
 
-             return sprintf.apply(this, [name].concat(args));
 
-         }
 
-         return defaultValue;
 
-     };
 
-     var compareObjects = function (objectA, objectB, compareLength) {
 
-         // Create arrays of property names
 
-         var objectAProperties = Object.getOwnPropertyNames(objectA),
 
-             objectBProperties = Object.getOwnPropertyNames(objectB),
 
-             propName = '';
 
-         if (compareLength) {
 
-             // If number of properties is different, objects are not equivalent
 
-             if (objectAProperties.length !== objectBProperties.length) {
 
-                 return false;
 
-             }
 
-         }
 
-         for (var i = 0; i < objectAProperties.length; i++) {
 
-             propName = objectAProperties[i];
 
-             // If the property is not in the object B properties, continue with the next property
 
-             if ($.inArray(propName, objectBProperties) > -1) {
 
-                 // If values of same property are not equal, objects are not equivalent
 
-                 if (objectA[propName] !== objectB[propName]) {
 
-                     return false;
 
-                 }
 
-             }
 
-         }
 
-         // If we made it this far, objects are considered equivalent
 
-         return true;
 
-     };
 
-     var escapeHTML = function (text) {
 
-         if (typeof text === 'string') {
 
-             return text
 
-                 .replace(/&/g, '&')
 
-                 .replace(/</g, '<')
 
-                 .replace(/>/g, '>')
 
-                 .replace(/"/g, '"')
 
-                 .replace(/'/g, ''')
 
-                 .replace(/`/g, '`');
 
-         }
 
-         return text;
 
-     };
 
-     var getRealHeight = function ($el) {
 
-         var height = 0;
 
-         $el.children().each(function () {
 
-             if (height < $(this).outerHeight(true)) {
 
-                 height = $(this).outerHeight(true);
 
-             }
 
-         });
 
-         return height;
 
-     };
 
-     var getRealDataAttr = function (dataAttr) {
 
-         for (var attr in dataAttr) {
 
-             var auxAttr = attr.split(/(?=[A-Z])/).join('-').toLowerCase();
 
-             if (auxAttr !== attr) {
 
-                 dataAttr[auxAttr] = dataAttr[attr];
 
-                 delete dataAttr[attr];
 
-             }
 
-         }
 
-         return dataAttr;
 
-     };
 
-     var getItemField = function (item, field, escape) {
 
-         var value = item;
 
-         if (typeof field !== 'string' || item.hasOwnProperty(field)) {
 
-             return escape ? escapeHTML(item[field]) : item[field];
 
-         }
 
-         var props = field.split('.');
 
-         for (var p in props) {
 
-             value = value && value[props[p]];
 
-         }
 
-         return escape ? escapeHTML(value) : value;
 
-     };
 
-     var isIEBrowser = function () {
 
-         return !!(navigator.userAgent.indexOf("MSIE ") > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./));
 
-     };
 
-     // BOOTSTRAP TABLE CLASS DEFINITION
 
-     // ======================
 
-     var BootstrapTable = function (el, options) {
 
-         this.options = options;
 
-         this.$el = $(el);
 
-         this.$el_ = this.$el.clone();
 
-         this.timeoutId_ = 0;
 
-         this.timeoutFooter_ = 0;
 
-         this.init();
 
-     };
 
-     BootstrapTable.DEFAULTS = {
 
-         classes: 'table table-hover',
 
-         locale: undefined,
 
-         height: undefined,
 
-         undefinedText: '-',
 
-         sortName: undefined,
 
-         sortOrder: 'asc',
 
-         striped: false,
 
-         columns: [[]],
 
-         data: [],
 
-         dataField: 'rows',
 
-         method: 'get',
 
-         url: undefined,
 
-         ajax: undefined,
 
-         cache: true,
 
-         contentType: 'application/json',
 
-         dataType: 'json',
 
-         ajaxOptions: {},
 
-         queryParams: function (params) {
 
-             return params;
 
-         },
 
-         queryParamsType: 'limit', // undefined
 
-         responseHandler: function (res) {
 
-             return res;
 
-         },
 
-         pagination: false,
 
-         onlyInfoPagination: false,
 
-         sidePagination: 'client', // client or server
 
-         totalRows: 0, // server side need to set
 
-         pageNumber: 1,
 
-         pageSize: 10,
 
-         pageList: [10, 25, 50, 100],
 
-         paginationHAlign: 'right', //right, left
 
-         paginationVAlign: 'bottom', //bottom, top, both
 
-         paginationDetailHAlign: 'left', //right, left
 
-         paginationPreText: '‹',
 
-         paginationNextText: '›',
 
-         search: false,
 
-         searchOnEnterKey: false,
 
-         strictSearch: false,
 
-         searchAlign: 'right',
 
-         selectItemName: 'btSelectItem',
 
-         showHeader: true,
 
-         showFooter: false,
 
-         showColumns: false,
 
-         showPaginationSwitch: false,
 
-         showRefresh: false,
 
-         showToggle: false,
 
-         buttonsAlign: 'right',
 
-         smartDisplay: true,
 
-         escape: false,
 
-         minimumCountColumns: 1,
 
-         idField: undefined,
 
-         uniqueId: undefined,
 
-         cardView: false,
 
-         detailView: false,
 
-         detailFormatter: function (index, row) {
 
-             return '';
 
-         },
 
-         trimOnSearch: true,
 
-         clickToSelect: false,
 
-         singleSelect: false,
 
-         toolbar: undefined,
 
-         toolbarAlign: 'left',
 
-         checkboxHeader: true,
 
-         sortable: true,
 
-         silentSort: true,
 
-         maintainSelected: false,
 
-         searchTimeOut: 500,
 
-         searchText: '',
 
-         iconSize: undefined,
 
-         iconsPrefix: 'glyphicon', // glyphicon of fa (font awesome)
 
-         icons: {
 
-             paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down',
 
-             paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up',
 
-             refresh: 'glyphicon-refresh icon-refresh',
 
-             toggle: 'glyphicon-list-alt icon-list-alt',
 
-             columns: 'glyphicon-th icon-th',
 
-             detailOpen: 'glyphicon-plus icon-plus',
 
-             detailClose: 'glyphicon-minus icon-minus'
 
-         },
 
-         rowStyle: function (row, index) {
 
-             return {};
 
-         },
 
-         rowAttributes: function (row, index) {
 
-             return {};
 
-         },
 
-         onAll: function (name, args) {
 
-             return false;
 
-         },
 
-         onClickCell: function (field, value, row, $element) {
 
-             return false;
 
-         },
 
-         onDblClickCell: function (field, value, row, $element) {
 
-             return false;
 
-         },
 
-         onClickRow: function (item, $element) {
 
-             return false;
 
-         },
 
-         onDblClickRow: function (item, $element) {
 
-             return false;
 
-         },
 
-         onSort: function (name, order) {
 
-             return false;
 
-         },
 
-         onCheck: function (row) {
 
-             return false;
 
-         },
 
-         onUncheck: function (row) {
 
-             return false;
 
-         },
 
-         onCheckAll: function (rows) {
 
-             return false;
 
-         },
 
-         onUncheckAll: function (rows) {
 
-             return false;
 
-         },
 
-         onCheckSome: function (rows) {
 
-             return false;
 
-         },
 
-         onUncheckSome: function (rows) {
 
-             return false;
 
-         },
 
-         onLoadSuccess: function (data) {
 
-             return false;
 
-         },
 
-         onLoadError: function (status) {
 
-             return false;
 
-         },
 
-         onColumnSwitch: function (field, checked) {
 
-             return false;
 
-         },
 
-         onPageChange: function (number, size) {
 
-             return false;
 
-         },
 
-         onSearch: function (text) {
 
-             return false;
 
-         },
 
-         onToggle: function (cardView) {
 
-             return false;
 
-         },
 
-         onPreBody: function (data) {
 
-             return false;
 
-         },
 
-         onPostBody: function () {
 
-             return false;
 
-         },
 
-         onPostHeader: function () {
 
-             return false;
 
-         },
 
-         onExpandRow: function (index, row, $detail) {
 
-             return false;
 
-         },
 
-         onCollapseRow: function (index, row) {
 
-             return false;
 
-         },
 
-         onRefreshOptions: function (options) {
 
-             return false;
 
-         },
 
-         onResetView: function () {
 
-             return false;
 
-         }
 
-     };
 
-     BootstrapTable.LOCALES = [];
 
-     BootstrapTable.LOCALES['en-US'] = BootstrapTable.LOCALES['en'] = {
 
-         formatLoadingMessage: function () {
 
-             return 'Loading, please wait...';
 
-         },
 
-         formatRecordsPerPage: function (pageNumber) {
 
-             return sprintf('%s records per page', pageNumber);
 
-         },
 
-         formatShowingRows: function (pageFrom, pageTo, totalRows) {
 
-             return sprintf('Showing %s to %s of %s rows', pageFrom, pageTo, totalRows);
 
-         },
 
-         formatDetailPagination: function (totalRows) {
 
-             return sprintf('Showing %s rows', totalRows);
 
-         },
 
-         formatSearch: function () {
 
-             return 'Search';
 
-         },
 
-         formatNoMatches: function () {
 
-             return 'No matching records found';
 
-         },
 
-         formatPaginationSwitch: function () {
 
-             return 'Hide/Show pagination';
 
-         },
 
-         formatRefresh: function () {
 
-             return 'Refresh';
 
-         },
 
-         formatToggle: function () {
 
-             return 'Toggle';
 
-         },
 
-         formatColumns: function () {
 
-             return 'Columns';
 
-         },
 
-         formatAllRows: function () {
 
-             return 'All';
 
-         }
 
-     };
 
-     $.extend(BootstrapTable.DEFAULTS, BootstrapTable.LOCALES['en-US']);
 
-     BootstrapTable.COLUMN_DEFAULTS = {
 
-         radio: false,
 
-         checkbox: false,
 
-         checkboxEnabled: true,
 
-         field: undefined,
 
-         title: undefined,
 
-         titleTooltip: undefined,
 
-         'class': undefined,
 
-         align: undefined, // left, right, center
 
-         halign: undefined, // left, right, center
 
-         falign: undefined, // left, right, center
 
-         valign: undefined, // top, middle, bottom
 
-         width: undefined,
 
-         sortable: false,
 
-         order: 'asc', // asc, desc
 
-         visible: true,
 
-         switchable: true,
 
-         clickToSelect: true,
 
-         formatter: undefined,
 
-         extendLabel:undefined,
 
-         footerFormatter: undefined,
 
-         events: undefined,
 
-         sorter: undefined,
 
-         sortName: undefined,
 
-         cellStyle: undefined,
 
-         searchable: true,
 
-         searchFormatter: true,
 
-         cardVisible: true
 
-     };
 
-     BootstrapTable.EVENTS = {
 
-         'all.bs.table': 'onAll',
 
-         'click-cell.bs.table': 'onClickCell',
 
-         'dbl-click-cell.bs.table': 'onDblClickCell',
 
-         'click-row.bs.table': 'onClickRow',
 
-         'dbl-click-row.bs.table': 'onDblClickRow',
 
-         'sort.bs.table': 'onSort',
 
-         'check.bs.table': 'onCheck',
 
-         'uncheck.bs.table': 'onUncheck',
 
-         'check-all.bs.table': 'onCheckAll',
 
-         'uncheck-all.bs.table': 'onUncheckAll',
 
-         'check-some.bs.table': 'onCheckSome',
 
-         'uncheck-some.bs.table': 'onUncheckSome',
 
-         'load-success.bs.table': 'onLoadSuccess',
 
-         'load-error.bs.table': 'onLoadError',
 
-         'column-switch.bs.table': 'onColumnSwitch',
 
-         'page-change.bs.table': 'onPageChange',
 
-         'search.bs.table': 'onSearch',
 
-         'toggle.bs.table': 'onToggle',
 
-         'pre-body.bs.table': 'onPreBody',
 
-         'post-body.bs.table': 'onPostBody',
 
-         'post-header.bs.table': 'onPostHeader',
 
-         'expand-row.bs.table': 'onExpandRow',
 
-         'collapse-row.bs.table': 'onCollapseRow',
 
-         'refresh-options.bs.table': 'onRefreshOptions',
 
-         'reset-view.bs.table': 'onResetView'
 
-     };
 
-     BootstrapTable.prototype.init = function () {
 
-         this.initLocale();
 
-         this.initContainer();
 
-         this.initTable();
 
-         this.initHeader();
 
-         this.initData();
 
-         this.initFooter();
 
-         this.initToolbar();
 
-         this.initPagination();
 
-         this.initBody();
 
-         this.initSearchText();
 
-         this.initServer();
 
-     };
 
-     BootstrapTable.prototype.initLocale = function () {
 
-         if (this.options.locale) {
 
-             var parts = this.options.locale.split(/-|_/);
 
-             parts[0].toLowerCase();
 
-             parts[1] && parts[1].toUpperCase();
 
-             if ($.fn.bootstrapTable.locales[this.options.locale]) {
 
-                 // locale as requested
 
-                 $.extend(this.options, $.fn.bootstrapTable.locales[this.options.locale]);
 
-             } else if ($.fn.bootstrapTable.locales[parts.join('-')]) {
 
-                 // locale with sep set to - (in case original was specified with _)
 
-                 $.extend(this.options, $.fn.bootstrapTable.locales[parts.join('-')]);
 
-             } else if ($.fn.bootstrapTable.locales[parts[0]]) {
 
-                 // short locale language code (i.e. 'en')
 
-                 $.extend(this.options, $.fn.bootstrapTable.locales[parts[0]]);
 
-             }
 
-         }
 
-     };
 
-     BootstrapTable.prototype.initContainer = function () {
 
-         this.$container = $([
 
-             '<div class="bootstrap-table">',
 
-             '<div class="fixed-table-toolbar"></div>',
 
-             this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?
 
-                 '<div class="fixed-table-pagination" style="clear: both;"></div>' :
 
-                 '',
 
-             '<div class="fixed-table-container">',
 
-             '<div class="fixed-table-header"><table></table></div>',
 
-             '<div class="fixed-table-body">',
 
-             '<div class="fixed-table-loading">',
 
-             this.options.formatLoadingMessage(),
 
-             '</div>',
 
-             '</div>',
 
-             '<div class="fixed-table-footer"><table><tr></tr></table></div>',
 
-             this.options.paginationVAlign === 'bottom' || this.options.paginationVAlign === 'both' ?
 
-                 '<div class="fixed-table-pagination"></div>' :
 
-                 '',
 
-             '</div>',
 
-             '</div>'
 
-         ].join(''));
 
-         this.$container.insertAfter(this.$el);
 
-         this.$tableContainer = this.$container.find('.fixed-table-container');
 
-         this.$tableHeader = this.$container.find('.fixed-table-header');
 
-         this.$tableBody = this.$container.find('.fixed-table-body');
 
-         this.$tableLoading = this.$container.find('.fixed-table-loading');
 
-         this.$tableFooter = this.$container.find('.fixed-table-footer');
 
-         this.$toolbar = this.$container.find('.fixed-table-toolbar');
 
-         this.$pagination = this.$container.find('.fixed-table-pagination');
 
-         this.$tableBody.append(this.$el);
 
-         this.$container.after('<div class="clearfix"></div>');
 
-         this.$el.addClass(this.options.classes);
 
-         if (this.options.striped) {
 
-             this.$el.addClass('table-striped');
 
-         }
 
-         if ($.inArray('table-no-bordered', this.options.classes.split(' ')) !== -1) {
 
-             this.$tableContainer.addClass('table-no-bordered');
 
-         }
 
-     };
 
-     BootstrapTable.prototype.initTable = function () {
 
-         var that = this,
 
-             columns = [],
 
-             data = [];
 
-         this.$header = this.$el.find('>thead');
 
-         if (!this.$header.length) {
 
-             this.$header = $('<thead></thead>').appendTo(this.$el);
 
-         }
 
-         this.$header.find('tr').each(function () {
 
-             var column = [];
 
-             $(this).find('th').each(function () {
 
-                 column.push($.extend({}, {
 
-                     title: $(this).html(),
 
-                     'class': $(this).attr('class'),
 
-                     titleTooltip: $(this).attr('title'),
 
-                     rowspan: $(this).attr('rowspan') ? +$(this).attr('rowspan') : undefined,
 
-                     colspan: $(this).attr('colspan') ? +$(this).attr('colspan') : undefined
 
-                 }, $(this).data()));
 
-             });
 
-             columns.push(column);
 
-         });
 
-         if (!$.isArray(this.options.columns[0])) {
 
-             this.options.columns = [this.options.columns];
 
-         }
 
-         this.options.columns = $.extend(true, [], columns, this.options.columns);
 
-         this.columns = [];
 
-         setFieldIndex(this.options.columns);
 
-         $.each(this.options.columns, function (i, columns) {
 
-             $.each(columns, function (j, column) {
 
-                 column = $.extend({}, BootstrapTable.COLUMN_DEFAULTS, column);
 
-                 if (typeof column.fieldIndex !== 'undefined') {
 
-                     that.columns[column.fieldIndex] = column;
 
-                 }
 
-                 that.options.columns[i][j] = column;
 
-             });
 
-         });
 
-         // if options.data is setting, do not process tbody data
 
-         if (this.options.data.length) {
 
-             return;
 
-         }
 
-         this.$el.find('>tbody>tr').each(function () {
 
-             var row = {};
 
-             // save tr's id, class and data-* attributes
 
-             row._id = $(this).attr('id');
 
-             row._class = $(this).attr('class');
 
-             row._data = getRealDataAttr($(this).data());
 
-             $(this).find('td').each(function (i) {
 
-                 var field = that.columns[i].field;
 
-                 row[field] = $(this).html();
 
-                 // save td's id, class and data-* attributes
 
-                 row['_' + field + '_id'] = $(this).attr('id');
 
-                 row['_' + field + '_class'] = $(this).attr('class');
 
-                 row['_' + field + '_rowspan'] = $(this).attr('rowspan');
 
-                 row['_' + field + '_title'] = $(this).attr('title');
 
-                 row['_' + field + '_data'] = getRealDataAttr($(this).data());
 
-             });
 
-             data.push(row);
 
-         });
 
-         this.options.data = data;
 
-     };
 
-     BootstrapTable.prototype.initHeader = function () {
 
-         var that = this,
 
-             visibleColumns = {},
 
-             html = [];
 
-         this.header = {
 
-             fields: [],
 
-             styles: [],
 
-             classes: [],
 
-             formatters: [],
 
-             events: [],
 
-             sorters: [],
 
-             sortNames: [],
 
-             cellStyles: [],
 
-             searchables: []
 
-         };
 
-         $.each(this.options.columns, function (i, columns) {
 
-             html.push('<tr>');
 
-             if (i == 0 && !that.options.cardView && that.options.detailView) {
 
-                 html.push(sprintf('<th class="detail" rowspan="%s"><div class="fht-cell"></div></th>',
 
-                     that.options.columns.length));
 
-             }
 
-             $.each(columns, function (j, column) {
 
-                 var text = '',
 
-                     halign = '', // header align style
 
-                     align = '', // body align style
 
-                     style = '',
 
-                     class_ = sprintf(' class="%s"', column['class']),
 
-                     order = that.options.sortOrder || column.order,
 
-                     unitWidth = 'px',
 
-                     width = column.width;
 
-                 if (column.width !== undefined && (!that.options.cardView)) {
 
-                     if (typeof column.width === 'string') {
 
-                         if (column.width.indexOf('%') !== -1) {
 
-                             unitWidth = '%';
 
-                         }
 
-                     }
 
-                 }
 
-                 if (column.width && typeof column.width === 'string') {
 
-                     width = column.width.replace('%', '').replace('px', '');
 
-                 }
 
-                 halign = sprintf('text-align: %s; ', column.halign ? column.halign : column.align);
 
-                 align = sprintf('text-align: %s; ', column.align);
 
-                 style = sprintf('vertical-align: %s; ', column.valign);
 
-                 style += sprintf('width: %s; ', (column.checkbox || column.radio) && !width ?
 
-                     '36px' : (width ? width + unitWidth : undefined));
 
-                 if (typeof column.fieldIndex !== 'undefined') {
 
-                     that.header.fields[column.fieldIndex] = column.field;
 
-                     that.header.styles[column.fieldIndex] = align + style;
 
-                     that.header.classes[column.fieldIndex] = class_;
 
-                     that.header.formatters[column.fieldIndex] = column.formatter;
 
-                     that.header.events[column.fieldIndex] = column.events;
 
-                     that.header.sorters[column.fieldIndex] = column.sorter;
 
-                     that.header.sortNames[column.fieldIndex] = column.sortName;
 
-                     that.header.cellStyles[column.fieldIndex] = column.cellStyle;
 
-                     that.header.searchables[column.fieldIndex] = column.searchable;
 
-                     if (!column.visible) {
 
-                         return;
 
-                     }
 
-                     if (that.options.cardView && (!column.cardVisible)) {
 
-                         return;
 
-                     }
 
-                     visibleColumns[column.field] = column;
 
-                 }
 
-                 html.push('<th' + sprintf(' title="%s"', column.titleTooltip),
 
-                     column.checkbox || column.radio ?
 
-                         sprintf(' class="bs-checkbox %s"', column['class'] || '') :
 
-                         class_,
 
-                     sprintf(' style="%s"', halign + style),
 
-                     sprintf(' rowspan="%s"', column.rowspan),
 
-                     sprintf(' colspan="%s"', column.colspan),
 
-                     sprintf(' data-field="%s"', column.field),
 
-                     "tabindex='0'",
 
-                     '>');
 
-                 html.push(sprintf('<div class="th-inner %s">', that.options.sortable && column.sortable ?
 
-                     'sortable both' : ''));
 
-                 text = column.title;
 
-                 if (column.checkbox) {
 
-                     if (!that.options.singleSelect && that.options.checkboxHeader) {
 
-                         text = '<input name="btSelectAll" type="checkbox" />';
 
-                     }
 
-                     that.header.stateField = column.field;
 
-                 }
 
-                 if (column.radio) {
 
-                     text = '';
 
-                     that.header.stateField = column.field;
 
-                     that.options.singleSelect = true;
 
-                 }
 
-                 html.push(text);
 
-                 html.push('</div>');
 
-                 html.push('<div class="fht-cell"></div>');
 
-                 html.push('</div>');
 
-                 html.push('</th>');
 
-             });
 
-             html.push('</tr>');
 
-         });
 
-         this.$header.html(html.join(''));
 
-         this.$header.find('th[data-field]').each(function (i) {
 
-             $(this).data(visibleColumns[$(this).data('field')]);
 
-         });
 
-         this.$container.off('click', '.th-inner').on('click', '.th-inner', function (event) {
 
-             var target = $(this);
 
-             if (target.closest('.bootstrap-table')[0] !== that.$container[0])
 
-                 return false;
 
-             if (that.options.sortable && target.parent().data().sortable) {
 
-                 that.onSort(event);
 
-             }
 
-         });
 
-         this.$header.children().children().off('keypress').on('keypress', function (event) {
 
-             if (that.options.sortable && $(this).data().sortable) {
 
-                 var code = event.keyCode || event.which;
 
-                 if (code == 13) { //Enter keycode
 
-                     that.onSort(event);
 
-                 }
 
-             }
 
-         });
 
-         if (!this.options.showHeader || this.options.cardView) {
 
-             this.$header.hide();
 
-             this.$tableHeader.hide();
 
-             this.$tableLoading.css('top', 0);
 
-         } else {
 
-             this.$header.show();
 
-             this.$tableHeader.show();
 
-             this.$tableLoading.css('top', this.$header.outerHeight() + 1);
 
-             // Assign the correct sortable arrow
 
-             this.getCaret();
 
-         }
 
-         this.$selectAll = this.$header.find('[name="btSelectAll"]');
 
-         this.$selectAll.off('click').on('click', function () {
 
-                 var checked = $(this).prop('checked');
 
-                 that[checked ? 'checkAll' : 'uncheckAll']();
 
-                 that.updateSelected();
 
-             });
 
-     };
 
-     BootstrapTable.prototype.initFooter = function () {
 
-         if (!this.options.showFooter || this.options.cardView) {
 
-             this.$tableFooter.hide();
 
-         } else {
 
-             this.$tableFooter.show();
 
-         }
 
-     };
 
-     /**
 
-      * @param data
 
-      * @param type: append / prepend
 
-      */
 
-     BootstrapTable.prototype.initData = function (data, type) {
 
-         if (type === 'append') {
 
-             this.data = this.data.concat(data);
 
-         } else if (type === 'prepend') {
 
-             this.data = [].concat(data).concat(this.data);
 
-         } else {
 
-             this.data = data || this.options.data;
 
-         }
 
-         // Fix #839 Records deleted when adding new row on filtered table
 
-         if (type === 'append') {
 
-             this.options.data = this.options.data.concat(data);
 
-         } else if (type === 'prepend') {
 
-             this.options.data = [].concat(data).concat(this.options.data);
 
-         } else {
 
-             this.options.data = this.data;
 
-         }
 
-         if (this.options.sidePagination === 'server') {
 
-             return;
 
-         }
 
-         this.initSort();
 
-     };
 
-     BootstrapTable.prototype.initSort = function () {
 
-         var that = this,
 
-             name = this.options.sortName,
 
-             order = this.options.sortOrder === 'desc' ? -1 : 1,
 
-             index = $.inArray(this.options.sortName, this.header.fields);
 
-         if (index !== -1) {
 
-             this.data.sort(function (a, b) {
 
-                 if (that.header.sortNames[index]) {
 
-                     name = that.header.sortNames[index];
 
-                 }
 
-                 var aa = getItemField(a, name, that.options.escape),
 
-                     bb = getItemField(b, name, that.options.escape),
 
-                     value = calculateObjectValue(that.header, that.header.sorters[index], [aa, bb]);
 
-                 if (value !== undefined) {
 
-                     return order * value;
 
-                 }
 
-                 // Fix #161: undefined or null string sort bug.
 
-                 if (aa === undefined || aa === null) {
 
-                     aa = '';
 
-                 }
 
-                 if (bb === undefined || bb === null) {
 
-                     bb = '';
 
-                 }
 
-                 // IF both values are numeric, do a numeric comparison
 
-                 if ($.isNumeric(aa) && $.isNumeric(bb)) {
 
-                     // Convert numerical values form string to float.
 
-                     aa = parseFloat(aa);
 
-                     bb = parseFloat(bb);
 
-                     if (aa < bb) {
 
-                         return order * -1;
 
-                     }
 
-                     return order;
 
-                 }
 
-                 if (aa === bb) {
 
-                     return 0;
 
-                 }
 
-                 // If value is not a string, convert to string
 
-                 if (typeof aa !== 'string') {
 
-                     aa = aa.toString();
 
-                 }
 
-                 if (aa.localeCompare(bb) === -1) {
 
-                     return order * -1;
 
-                 }
 
-                 return order;
 
-             });
 
-         }
 
-     };
 
-     BootstrapTable.prototype.onSort = function (event) {
 
-         var $this = event.type === "keypress" ? $(event.currentTarget) : $(event.currentTarget).parent(),
 
-             $this_ = this.$header.find('th').eq($this.index());
 
-         this.$header.add(this.$header_).find('span.order').remove();
 
-         if (this.options.sortName === $this.data('field')) {
 
-             this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';
 
-         } else {
 
-             this.options.sortName = $this.data('field');
 
-             this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';
 
-         }
 
-         this.trigger('sort', this.options.sortName, this.options.sortOrder);
 
-         $this.add($this_).data('order', this.options.sortOrder);
 
-         // Assign the correct sortable arrow
 
-         this.getCaret();
 
-         if (this.options.sidePagination === 'server') {
 
-             this.initServer(this.options.silentSort);
 
-             return;
 
-         }
 
-         this.initSort();
 
-         this.initBody();
 
-     };
 
-     BootstrapTable.prototype.initToolbar = function () {
 
-         var that = this,
 
-             html = [],
 
-             timeoutId = 0,
 
-             $keepOpen,
 
-             $search,
 
-             switchableCount = 0;
 
-         if (this.$toolbar.find('.bars').children().length) {
 
-             $('body').append($(this.options.toolbar));
 
-         }
 
-         this.$toolbar.html('');
 
-         if (typeof this.options.toolbar === 'string' || typeof this.options.toolbar === 'object') {
 
-             $(sprintf('<div class="bars pull-%s"></div>', this.options.toolbarAlign))
 
-                 .appendTo(this.$toolbar)
 
-                 .append($(this.options.toolbar));
 
-         }
 
-         // showColumns, showToggle, showRefresh
 
-         html = [sprintf('<div class="columns columns-%s btn-group pull-%s">',
 
-             this.options.buttonsAlign, this.options.buttonsAlign)];
 
-         if (typeof this.options.icons === 'string') {
 
-             this.options.icons = calculateObjectValue(null, this.options.icons);
 
-         }
 
-         if (this.options.showPaginationSwitch) {
 
-             html.push(sprintf('<button class="btn btn-default" type="button" name="paginationSwitch" title="%s">',
 
-                     this.options.formatPaginationSwitch()),
 
-                 sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.paginationSwitchDown),
 
-                 '</button>');
 
-         }
 
-         if (this.options.showRefresh) {
 
-             html.push(sprintf('<button class="btn btn-default' +
 
-                     sprintf(' btn-%s', this.options.iconSize) +
 
-                     '" type="button" name="refresh" title="%s">',
 
-                     this.options.formatRefresh()),
 
-                 sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.refresh),
 
-                 '</button>');
 
-         }
 
-         if (this.options.showToggle) {
 
-             html.push(sprintf('<button class="btn btn-default' +
 
-                     sprintf(' btn-%s', this.options.iconSize) +
 
-                     '" type="button" name="toggle" title="%s">',
 
-                     this.options.formatToggle()),
 
-                 sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.toggle),
 
-                 '</button>');
 
-         }
 
-         if (this.options.showColumns) {
 
-             html.push(sprintf('<div class="keep-open btn-group" title="%s">',
 
-                     this.options.formatColumns()),
 
-                 '<button type="button" class="btn btn-default' +
 
-                 sprintf(' btn-%s', this.options.iconSize) +
 
-                 ' dropdown-toggle" data-toggle="dropdown">',
 
-                 sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.columns),
 
-                 ' <span class="caret"></span>',
 
-                 '</button>',
 
-                 '<ul class="dropdown-menu" role="menu">');
 
-             $.each(this.columns, function (i, column) {
 
-                 if (column.radio || column.checkbox) {
 
-                     return;
 
-                 }
 
-                 if (that.options.cardView && (!column.cardVisible)) {
 
-                     return;
 
-                 }
 
-                 var checked = column.visible ? ' checked="checked"' : '';
 
-                 if (column.switchable) {
 
-                     html.push(sprintf('<li>' +
 
-                         '<label><input type="checkbox" data-field="%s" value="%s"%s> %s</label>' +
 
-                         '</li>', column.field, i, checked, column.title));
 
-                     switchableCount++;
 
-                 }
 
-             });
 
-             html.push('</ul>',
 
-                 '</div>');
 
-         }
 
-         html.push('</div>');
 
-         // Fix #188: this.showToolbar is for extensions
 
-         if (this.showToolbar || html.length > 2) {
 
-             this.$toolbar.append(html.join(''));
 
-         }
 
-         if (this.options.showPaginationSwitch) {
 
-             this.$toolbar.find('button[name="paginationSwitch"]')
 
-                 .off('click').on('click', $.proxy(this.togglePagination, this));
 
-         }
 
-         if (this.options.showRefresh) {
 
-             this.$toolbar.find('button[name="refresh"]')
 
-                 .off('click').on('click', $.proxy(this.refresh, this));
 
-         }
 
-         if (this.options.showToggle) {
 
-             this.$toolbar.find('button[name="toggle"]')
 
-                 .off('click').on('click', function () {
 
-                     that.toggleView();
 
-                 });
 
-         }
 
-         if (this.options.showColumns) {
 
-             $keepOpen = this.$toolbar.find('.keep-open');
 
-             if (switchableCount <= this.options.minimumCountColumns) {
 
-                 $keepOpen.find('input').prop('disabled', true);
 
-             }
 
-             $keepOpen.find('li').off('click').on('click', function (event) {
 
-                 event.stopImmediatePropagation();
 
-             });
 
-             $keepOpen.find('input').off('click').on('click', function () {
 
-                 var $this = $(this);
 
-                 that.toggleColumn(getFieldIndex(that.columns,
 
-                     $(this).data('field')), $this.prop('checked'), false);
 
-                 that.trigger('column-switch', $(this).data('field'), $this.prop('checked'));
 
-             });
 
-         }
 
-         if (this.options.search) {
 
-             html = [];
 
-             html.push(
 
-                 '<div class="pull-' + this.options.searchAlign + ' search">',
 
-                 sprintf('<input class="form-control' +
 
-                     sprintf(' input-%s', this.options.iconSize) +
 
-                     '" type="text" placeholder="%s">',
 
-                     this.options.formatSearch()),
 
-                 '</div>');
 
-             this.$toolbar.append(html.join(''));
 
-             $search = this.$toolbar.find('.search input');
 
-             $search.off('keyup drop').on('keyup drop', function (event) {
 
-                 if (that.options.searchOnEnterKey) {
 
-                     if (event.keyCode !== 13) {
 
-                         return;
 
-                     }
 
-                 }
 
-                 clearTimeout(timeoutId); // doesn't matter if it's 0
 
-                 timeoutId = setTimeout(function () {
 
-                     that.onSearch(event);
 
-                 }, that.options.searchTimeOut);
 
-             });
 
-             if (isIEBrowser()) {
 
-                 $search.off('mouseup').on('mouseup', function (event) {
 
-                     clearTimeout(timeoutId); // doesn't matter if it's 0
 
-                     timeoutId = setTimeout(function () {
 
-                         that.onSearch(event);
 
-                     }, that.options.searchTimeOut);
 
-                 });
 
-             }
 
-         }
 
-     };
 
-     BootstrapTable.prototype.onSearch = function (event) {
 
-         var text = $.trim($(event.currentTarget).val());
 
-         // trim search input
 
-         if (this.options.trimOnSearch && $(event.currentTarget).val() !== text) {
 
-             $(event.currentTarget).val(text);
 
-         }
 
-         if (text === this.searchText) {
 
-             return;
 
-         }
 
-         this.searchText = text;
 
-         this.options.searchText = text;
 
-         this.options.pageNumber = 1;
 
-         this.initSearch();
 
-         this.updatePagination();
 
-         this.trigger('search', text);
 
-     };
 
-     BootstrapTable.prototype.initSearch = function () {
 
-         var that = this;
 
-         if (this.options.sidePagination !== 'server') {
 
-             var s = this.searchText && this.searchText.toLowerCase();
 
-             var f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns;
 
-             // Check filter
 
-             this.data = f ? $.grep(this.options.data, function (item, i) {
 
-                 for (var key in f) {
 
-                     if ($.isArray(f[key])) {
 
-                         if ($.inArray(item[key], f[key]) === -1) {
 
-                             return false;
 
-                         }
 
-                     } else if (item[key] !== f[key]) {
 
-                         return false;
 
-                     }
 
-                 }
 
-                 return true;
 
-             }) : this.options.data;
 
-             this.data = s ? $.grep(this.data, function (item, i) {
 
-                 for (var key in item) {
 
-                     key = $.isNumeric(key) ? parseInt(key, 10) : key;
 
-                     var value = item[key],
 
-                         column = that.columns[getFieldIndex(that.columns, key)],
 
-                         j = $.inArray(key, that.header.fields);
 
-                     // Fix #142: search use formatted data
 
-                     if (column && column.searchFormatter) {
 
-                         value = calculateObjectValue(column,
 
-                             that.header.formatters[j], [value, item, i], value);
 
-                     }
 
-                     var index = $.inArray(key, that.header.fields);
 
-                     if (index !== -1 && that.header.searchables[index] && (typeof value === 'string' || typeof value === 'number')) {
 
-                         if (that.options.strictSearch) {
 
-                             if ((value + '').toLowerCase() === s) {
 
-                                 return true;
 
-                             }
 
-                         } else {
 
-                             if ((value + '').toLowerCase().indexOf(s) !== -1) {
 
-                                 return true;
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-                 return false;
 
-             }) : this.data;
 
-         }
 
-     };
 
-     BootstrapTable.prototype.initPagination = function () {
 
-         if (!this.options.pagination) {
 
-             this.$pagination.hide();
 
-             return;
 
-         } else {
 
-             this.$pagination.show();
 
-         }
 
-         var that = this,
 
-             html = [],
 
-             $allSelected = false,
 
-             i, from, to,
 
-             $pageList,
 
-             $first, $pre,
 
-             $next, $last,
 
-             $number,
 
-             data = this.getData();
 
-         if (this.options.sidePagination !== 'server') {
 
-             this.options.totalRows = data.length;
 
-         }
 
-         this.totalPages = 0;
 
-         if (this.options.totalRows) {
 
-             if (this.options.pageSize === this.options.formatAllRows()) {
 
-                 this.options.pageSize = this.options.totalRows;
 
-                 $allSelected = true;
 
-             } else if (this.options.pageSize === this.options.totalRows) {
 
-                 // Fix #667 Table with pagination,
 
-                 // multiple pages and a search that matches to one page throws exception
 
-                 var pageLst = typeof this.options.pageList === 'string' ?
 
-                     this.options.pageList.replace('[', '').replace(']', '')
 
-                         .replace(/ /g, '').toLowerCase().split(',') : this.options.pageList;
 
-                 if ($.inArray(this.options.formatAllRows().toLowerCase(), pageLst)  > -1) {
 
-                     $allSelected = true;
 
-                 }
 
-             }
 
-             this.totalPages = ~~((this.options.totalRows - 1) / this.options.pageSize) + 1;
 
-             this.options.totalPages = this.totalPages;
 
-         }
 
-         if (this.totalPages > 0 && this.options.pageNumber > this.totalPages) {
 
-             this.options.pageNumber = this.totalPages;
 
-         }
 
-         this.pageFrom = (this.options.pageNumber - 1) * this.options.pageSize + 1;
 
-         this.pageTo = this.options.pageNumber * this.options.pageSize;
 
-         if (this.pageTo > this.options.totalRows) {
 
-             this.pageTo = this.options.totalRows;
 
-         }
 
-         html.push(
 
-             '<div class="pull-' + this.options.paginationDetailHAlign + ' pagination-detail">',
 
-             '<span class="pagination-info">',
 
-             this.options.onlyInfoPagination ? this.options.formatDetailPagination(this.options.totalRows) :
 
-             this.options.formatShowingRows(this.pageFrom, this.pageTo, this.options.totalRows),
 
-             '</span>');
 
-         if (!this.options.onlyInfoPagination) {
 
-             html.push('<span class="page-list">');
 
-             var pageNumber = [
 
-                     sprintf('<span class="btn-group %s">',
 
-                         this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?
 
-                             'dropdown' : 'dropup'),
 
-                     '<button type="button" class="btn btn-default ' +
 
-                     sprintf(' btn-%s', this.options.iconSize) +
 
-                     ' dropdown-toggle" data-toggle="dropdown">',
 
-                     '<span class="page-size">',
 
-                     $allSelected ? this.options.formatAllRows() : this.options.pageSize,
 
-                     '</span>',
 
-                     ' <span class="caret"></span>',
 
-                     '</button>',
 
-                     '<ul class="dropdown-menu" role="menu">'
 
-                 ],
 
-                 pageList = this.options.pageList;
 
-             if (typeof this.options.pageList === 'string') {
 
-                 var list = this.options.pageList.replace('[', '').replace(']', '')
 
-                     .replace(/ /g, '').split(',');
 
-                 pageList = [];
 
-                 $.each(list, function (i, value) {
 
-                     pageList.push(value.toUpperCase() === that.options.formatAllRows().toUpperCase() ?
 
-                         that.options.formatAllRows() : +value);
 
-                 });
 
-             }
 
-             $.each(pageList, function (i, page) {
 
-                 if (!that.options.smartDisplay || i === 0 || pageList[i - 1] <= that.options.totalRows) {
 
-                     var active;
 
-                     if ($allSelected) {
 
-                         active = page === that.options.formatAllRows() ? ' class="active"' : '';
 
-                     } else {
 
-                         active = page === that.options.pageSize ? ' class="active"' : '';
 
-                     }
 
-                     pageNumber.push(sprintf('<li%s><a href="javascript:void(0)">%s</a></li>', active, page));
 
-                 }
 
-             });
 
-             pageNumber.push('</ul></span>');
 
-             html.push(this.options.formatRecordsPerPage(pageNumber.join('')));
 
-             html.push('</span>');
 
-             html.push('</div>',
 
-                 '<div class="pull-' + this.options.paginationHAlign + ' pagination">',
 
-                 '<ul class="pagination' + sprintf(' pagination-%s', this.options.iconSize) + '">',
 
-                 '<li class="page-pre"><a href="javascript:void(0)">' + this.options.paginationPreText + '</a></li>');
 
-             if (this.totalPages < 5) {
 
-                 from = 1;
 
-                 to = this.totalPages;
 
-             } else {
 
-                 from = this.options.pageNumber - 2;
 
-                 to = from + 4;
 
-                 if (from < 1) {
 
-                     from = 1;
 
-                     to = 5;
 
-                 }
 
-                 if (to > this.totalPages) {
 
-                     to = this.totalPages;
 
-                     from = to - 4;
 
-                 }
 
-             }
 
-             if (this.totalPages >= 6) {
 
-                 if (this.options.pageNumber >= 3) {
 
-                     html.push('<li class="page-first' + (1 === this.options.pageNumber ? ' active' : '') + '">',
 
-                         '<a href="javascript:void(0)">', 1, '</a>',
 
-                         '</li>');
 
-                     from++;
 
-                 }
 
-                 if (this.options.pageNumber >= 4) {
 
-                     if (this.options.pageNumber == 4 || this.totalPages == 6 || this.totalPages == 7) {
 
-                         from--;
 
-                     } else {
 
-                         html.push('<li class="page-first-separator disabled">',
 
-                             '<a href="javascript:void(0)">...</a>',
 
-                             '</li>');
 
-                     }
 
-                     to--;
 
-                 }
 
-             }
 
-             if (this.totalPages >= 7) {
 
-                 if (this.options.pageNumber >= (this.totalPages - 2)) {
 
-                     from--;
 
-                 }
 
-             }
 
-             if (this.totalPages == 6) {
 
-                 if (this.options.pageNumber >= (this.totalPages - 2)) {
 
-                     to++;
 
-                 }
 
-             } else if (this.totalPages >= 7) {
 
-                 if (this.totalPages == 7 || this.options.pageNumber >= (this.totalPages - 3)) {
 
-                     to++;
 
-                 }
 
-             }
 
-             for (i = from; i <= to; i++) {
 
-                 html.push('<li class="page-number' + (i === this.options.pageNumber ? ' active' : '') + '">',
 
-                     '<a href="javascript:void(0)">', i, '</a>',
 
-                     '</li>');
 
-             }
 
-             if (this.totalPages >= 8) {
 
-                 if (this.options.pageNumber <= (this.totalPages - 4)) {
 
-                     html.push('<li class="page-last-separator disabled">',
 
-                         '<a href="javascript:void(0)">...</a>',
 
-                         '</li>');
 
-                 }
 
-             }
 
-             if (this.totalPages >= 6) {
 
-                 if (this.options.pageNumber <= (this.totalPages - 3)) {
 
-                     html.push('<li class="page-last' + (this.totalPages === this.options.pageNumber ? ' active' : '') + '">',
 
-                         '<a href="javascript:void(0)">', this.totalPages, '</a>',
 
-                         '</li>');
 
-                 }
 
-             }
 
-             html.push(
 
-                 '<li class="page-next"><a href="javascript:void(0)">' + this.options.paginationNextText + '</a></li>',
 
-                 '</ul>',
 
-                 '</div>');
 
-         }
 
-         this.$pagination.html(html.join(''));
 
-         if (!this.options.onlyInfoPagination) {
 
-             $pageList = this.$pagination.find('.page-list a');
 
-             $first = this.$pagination.find('.page-first');
 
-             $pre = this.$pagination.find('.page-pre');
 
-             $next = this.$pagination.find('.page-next');
 
-             $last = this.$pagination.find('.page-last');
 
-             $number = this.$pagination.find('.page-number');
 
-             if (this.options.smartDisplay) {
 
-                 if (this.totalPages <= 1) {
 
-                     this.$pagination.find('div.pagination').hide();
 
-                 }
 
-                 if (pageList.length < 2 || this.options.totalRows <= pageList[0]) {
 
-                     this.$pagination.find('span.page-list').hide();
 
-                 }
 
-                 // when data is empty, hide the pagination
 
-                 this.$pagination[this.getData().length ? 'show' : 'hide']();
 
-             }
 
-             if ($allSelected) {
 
-                 this.options.pageSize = this.options.formatAllRows();
 
-             }
 
-             $pageList.off('click').on('click', $.proxy(this.onPageListChange, this));
 
-             $first.off('click').on('click', $.proxy(this.onPageFirst, this));
 
-             $pre.off('click').on('click', $.proxy(this.onPagePre, this));
 
-             $next.off('click').on('click', $.proxy(this.onPageNext, this));
 
-             $last.off('click').on('click', $.proxy(this.onPageLast, this));
 
-             $number.off('click').on('click', $.proxy(this.onPageNumber, this));
 
-         }
 
-     };
 
-     BootstrapTable.prototype.updatePagination = function (event) {
 
-         // Fix #171: IE disabled button can be clicked bug.
 
-         if (event && $(event.currentTarget).hasClass('disabled')) {
 
-             return;
 
-         }
 
-         if (!this.options.maintainSelected) {
 
-             this.resetRows();
 
-         }
 
-         this.initPagination();
 
-         if (this.options.sidePagination === 'server') {
 
-             this.initServer();
 
-         } else {
 
-             this.initBody();
 
-         }
 
-         this.trigger('page-change', this.options.pageNumber, this.options.pageSize);
 
-     };
 
-     BootstrapTable.prototype.onPageListChange = function (event) {
 
-         var $this = $(event.currentTarget);
 
-         $this.parent().addClass('active').siblings().removeClass('active');
 
-         this.options.pageSize = $this.text().toUpperCase() === this.options.formatAllRows().toUpperCase() ?
 
-             this.options.formatAllRows() : +$this.text();
 
-         this.$toolbar.find('.page-size').text(this.options.pageSize);
 
-         this.updatePagination(event);
 
-     };
 
-     BootstrapTable.prototype.onPageFirst = function (event) {
 
-         this.options.pageNumber = 1;
 
-         this.updatePagination(event);
 
-     };
 
-     BootstrapTable.prototype.onPagePre = function (event) {
 
-         if ((this.options.pageNumber - 1) == 0) {
 
-             this.options.pageNumber = this.options.totalPages;
 
-         } else {
 
-             this.options.pageNumber--;
 
-         }
 
-         this.updatePagination(event);
 
-     };
 
-     BootstrapTable.prototype.onPageNext = function (event) {
 
-         if ((this.options.pageNumber + 1) > this.options.totalPages) {
 
-             this.options.pageNumber = 1;
 
-         } else {
 
-             this.options.pageNumber++;
 
-         }
 
-         this.updatePagination(event);
 
-     };
 
-     BootstrapTable.prototype.onPageLast = function (event) {
 
-         this.options.pageNumber = this.totalPages;
 
-         this.updatePagination(event);
 
-     };
 
-     BootstrapTable.prototype.onPageNumber = function (event) {
 
-         if (this.options.pageNumber === +$(event.currentTarget).text()) {
 
-             return;
 
-         }
 
-         this.options.pageNumber = +$(event.currentTarget).text();
 
-         this.updatePagination(event);
 
-     };
 
-     BootstrapTable.prototype.initBody = function (fixedScroll) {
 
-         var that = this,
 
-             html = [],
 
-             data = this.getData();
 
-         this.trigger('pre-body', data);
 
-         this.$body = this.$el.find('>tbody');
 
-         if (!this.$body.length) {
 
-             this.$body = $('<tbody></tbody>').appendTo(this.$el);
 
-         }
 
-         //Fix #389 Bootstrap-table-flatJSON is not working
 
-         if (!this.options.pagination || this.options.sidePagination === 'server') {
 
-             this.pageFrom = 1;
 
-             this.pageTo = data.length;
 
-         }
 
-         for (var i = this.pageFrom - 1; i < this.pageTo; i++) {
 
-             var key,
 
-                 item = data[i],
 
-                 style = {},
 
-                 csses = [],
 
-                 data_ = '',
 
-                 attributes = {},
 
-                 htmlAttributes = [];
 
-             style = calculateObjectValue(this.options, this.options.rowStyle, [item, i], style);
 
-             if (style && style.css) {
 
-                 for (key in style.css) {
 
-                     csses.push(key + ': ' + style.css[key]);
 
-                 }
 
-             }
 
-             attributes = calculateObjectValue(this.options,
 
-                 this.options.rowAttributes, [item, i], attributes);
 
-             if (attributes) {
 
-                 for (key in attributes) {
 
-                     htmlAttributes.push(sprintf('%s="%s"', key, escapeHTML(attributes[key])));
 
-                 }
 
-             }
 
-             if (item._data && !$.isEmptyObject(item._data)) {
 
-                 $.each(item._data, function (k, v) {
 
-                     // ignore data-index
 
-                     if (k === 'index') {
 
-                         return;
 
-                     }
 
-                     data_ += sprintf(' data-%s="%s"', k, v);
 
-                 });
 
-             }
 
-             html.push('<tr',
 
-                 sprintf(' %s', htmlAttributes.join(' ')),
 
-                 sprintf(' id="%s"', $.isArray(item) ? undefined : item._id),
 
-                 sprintf(' class="%s"', style.classes || ($.isArray(item) ? undefined : item._class)),
 
-                 sprintf(' data-index="%s"', i),
 
-                 sprintf(' data-uniqueid="%s"', item[this.options.uniqueId]),
 
-                 sprintf('%s', data_),
 
-                 '>'
 
-             );
 
-             if (this.options.cardView) {
 
-                 html.push(sprintf('<td colspan="%s">', this.header.fields.length));
 
-             }
 
-             if (!this.options.cardView && this.options.detailView) {
 
-                 html.push('<td>',
 
-                     '<a class="detail-icon" href="javascript:">',
 
-                     sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.detailOpen),
 
-                     '</a>',
 
-                     '</td>');
 
-             }
 
-             $.each(this.header.fields, function (j, field) {
 
-                 var text = '',
 
-                     value = getItemField(item, field, that.options.escape),
 
-                     type = '',
 
-                     cellStyle = {},
 
-                     id_ = '',
 
-                     class_ = that.header.classes[j],
 
-                     data_ = '',
 
-                     rowspan_ = '',
 
-                     title_ = '',
 
-                     column = that.columns[getFieldIndex(that.columns, field)];
 
-                 if (!column.visible) {
 
-                     return;
 
-                 }
 
-                 style = sprintf('style="%s"', csses.concat(that.header.styles[j]).join('; '));
 
-                 value = calculateObjectValue(column,
 
-                     that.header.formatters[j], [value, item, i], value);
 
-                 // handle td's id and class
 
-                 if (item['_' + field + '_id']) {
 
-                     id_ = sprintf(' id="%s"', item['_' + field + '_id']);
 
-                 }
 
-                 if (item['_' + field + '_class']) {
 
-                     class_ = sprintf(' class="%s"', item['_' + field + '_class']);
 
-                 }
 
-                 if (item['_' + field + '_rowspan']) {
 
-                     rowspan_ = sprintf(' rowspan="%s"', item['_' + field + '_rowspan']);
 
-                 }
 
-                 if (item['_' + field + '_title']) {
 
-                     title_ = sprintf(' title="%s"', item['_' + field + '_title']);
 
-                 }
 
-                 cellStyle = calculateObjectValue(that.header,
 
-                     that.header.cellStyles[j], [value, item, i], cellStyle);
 
-                 if (cellStyle.classes) {
 
-                     class_ = sprintf(' class="%s"', cellStyle.classes);
 
-                 }
 
-                 if (cellStyle.css) {
 
-                     var csses_ = [];
 
-                     for (var key in cellStyle.css) {
 
-                         csses_.push(key + ': ' + cellStyle.css[key]);
 
-                     }
 
-                     style = sprintf('style="%s"', csses_.concat(that.header.styles[j]).join('; '));
 
-                 }
 
-                 if (item['_' + field + '_data'] && !$.isEmptyObject(item['_' + field + '_data'])) {
 
-                     $.each(item['_' + field + '_data'], function (k, v) {
 
-                         // ignore data-index
 
-                         if (k === 'index') {
 
-                             return;
 
-                         }
 
-                         data_ += sprintf(' data-%s="%s"', k, v);
 
-                     });
 
-                 }
 
-                 if (column.checkbox || column.radio) {
 
-                     type = column.checkbox ? 'checkbox' : type;
 
-                     type = column.radio ? 'radio' : type;
 
-                     text = [sprintf(that.options.cardView ?
 
-                         '<div class="card-view %s">' : '<td class="bs-checkbox %s">', column['class'] || ''),
 
-                         '<input' +
 
-                         sprintf(' data-index="%s"', i) +
 
-                         sprintf(' name="%s"', that.options.selectItemName) +
 
-                         sprintf(' type="%s"', type) +
 
-                         sprintf(' value="%s"', item[that.options.idField]) +
 
-                         sprintf(' checked="%s"', value === true ||
 
-                         (value && value.checked) ? 'checked' : undefined) +
 
-                         sprintf(' disabled="%s"', !column.checkboxEnabled ||
 
-                         (value && value.disabled) ? 'disabled' : undefined) +
 
-                         ' />',
 
-                         that.header.formatters[j] && typeof value === 'string' ? value : '',
 
-                         that.options.cardView ? '</div>' : '</td>'
 
-                     ].join('');
 
-                     item[that.header.stateField] = value === true || (value && value.checked);
 
-                 } else {
 
-                     value = typeof value === 'undefined' || value === null ?
 
-                         that.options.undefinedText : value;
 
-                     if (column.extendLabel && (!column.formatter)){
 
-                         value = item[column.field + "_" + column.extendLabel]
 
-                     }
 
-                     text = that.options.cardView ? ['<div class="card-view">',
 
-                         that.options.showHeader ? sprintf('<span class="title" %s>%s</span>', style,
 
-                             getPropertyFromOther(that.columns, 'field', 'title', field)) : '',
 
-                         sprintf('<span class="value">%s</span>', value),
 
-                         '</div>'
 
-                     ].join('') : [sprintf('<td%s %s %s %s %s %s>', id_, class_, style, data_, rowspan_, title_),
 
-                         value,
 
-                         '</td>'
 
-                     ].join('');
 
-                     // Hide empty data on Card view when smartDisplay is set to true.
 
-                     if (that.options.cardView && that.options.smartDisplay && value === '') {
 
-                         // Should set a placeholder for event binding correct fieldIndex
 
-                         text = '<div class="card-view"></div>';
 
-                     }
 
-                 }
 
-                 html.push(text);
 
-             });
 
-             if (this.options.cardView) {
 
-                 html.push('</td>');
 
-             }
 
-             html.push('</tr>');
 
-         }
 
-         // show no records
 
-         if (!html.length) {
 
-             html.push('<tr class="no-records-found">',
 
-                 sprintf('<td colspan="%s">%s</td>',
 
-                     this.$header.find('th').length, this.options.formatNoMatches()),
 
-                 '</tr>');
 
-         }
 
-         this.$body.html(html.join(''));
 
-         if (!fixedScroll) {
 
-             this.scrollTo(0);
 
-         }
 
-         // click to select by column
 
-         this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) {
 
-             var $td = $(this),
 
-                 $tr = $td.parent(),
 
-                 item = that.data[$tr.data('index')],
 
-                 index = $td[0].cellIndex,
 
-                 field = that.header.fields[that.options.detailView && !that.options.cardView ? index - 1 : index],
 
-                 column = that.columns[getFieldIndex(that.columns, field)],
 
-                 value = getItemField(item, field, that.options.escape);
 
-             if ($td.find('.detail-icon').length) {
 
-                 return;
 
-             }
 
-             that.trigger(e.type === 'click' ? 'click-cell' : 'dbl-click-cell', field, value, item, $td);
 
-             that.trigger(e.type === 'click' ? 'click-row' : 'dbl-click-row', item, $tr);
 
-             // if click to select - then trigger the checkbox/radio click
 
-             if (e.type === 'click' && that.options.clickToSelect && column.clickToSelect) {
 
-                 var $selectItem = $tr.find(sprintf('[name="%s"]', that.options.selectItemName));
 
-                 if ($selectItem.length) {
 
-                     $selectItem[0].click(); // #144: .trigger('click') bug
 
-                 }
 
-             }
 
-         });
 
-         this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function () {
 
-             var $this = $(this),
 
-                 $tr = $this.parent().parent(),
 
-                 index = $tr.data('index'),
 
-                 row = data[index]; // Fix #980 Detail view, when searching, returns wrong row
 
-             // remove and update
 
-             if ($tr.next().is('tr.detail-view')) {
 
-                 $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailOpen));
 
-                 $tr.next().remove();
 
-                 that.trigger('collapse-row', index, row);
 
-             } else {
 
-                 $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailClose));
 
-                 $tr.after(sprintf('<tr class="detail-view"><td colspan="%s"></td></tr>', $tr.find('td').length));
 
-                 var $element = $tr.next().find('td');
 
-                 var content = calculateObjectValue(that.options, that.options.detailFormatter, [index, row, $element], '');
 
-                 if($element.length === 1) {
 
-                     $element.append(content);
 
-                 }
 
-                 that.trigger('expand-row', index, row, $element);
 
-             }
 
-             that.resetView();
 
-         });
 
-         this.$selectItem = this.$body.find(sprintf('[name="%s"]', this.options.selectItemName));
 
-         this.$selectItem.off('click').on('click', function (event) {
 
-             event.stopImmediatePropagation();
 
-             var $this = $(this),
 
-                 checked = $this.prop('checked'),
 
-                 row = that.data[$this.data('index')];
 
-             if (that.options.maintainSelected && $(this).is(':radio')) {
 
-                 $.each(that.options.data, function (i, row) {
 
-                     row[that.header.stateField] = false;
 
-                 });
 
-             }
 
-             row[that.header.stateField] = checked;
 
-             if (that.options.singleSelect) {
 
-                 that.$selectItem.not(this).each(function () {
 
-                     that.data[$(this).data('index')][that.header.stateField] = false;
 
-                 });
 
-                 that.$selectItem.filter(':checked').not(this).prop('checked', false);
 
-             }
 
-             that.updateSelected();
 
-             that.trigger(checked ? 'check' : 'uncheck', row, $this);
 
-         });
 
-         $.each(this.header.events, function (i, events) {
 
-             if (!events) {
 
-                 return;
 
-             }
 
-             // fix bug, if events is defined with namespace
 
-             if (typeof events === 'string') {
 
-                 events = calculateObjectValue(null, events);
 
-             }
 
-             var field = that.header.fields[i],
 
-                 fieldIndex = $.inArray(field, that.getVisibleFields());
 
-             if (that.options.detailView && !that.options.cardView) {
 
-                 fieldIndex += 1;
 
-             }
 
-             for (var key in events) {
 
-                 that.$body.find('>tr:not(.no-records-found)').each(function () {
 
-                     var $tr = $(this),
 
-                         $td = $tr.find(that.options.cardView ? '.card-view' : 'td').eq(fieldIndex),
 
-                         index = key.indexOf(' '),
 
-                         name = key.substring(0, index),
 
-                         el = key.substring(index + 1),
 
-                         func = events[key];
 
-                     $td.find(el).off(name).on(name, function (e) {
 
-                         var index = $tr.data('index'),
 
-                             row = that.data[index],
 
-                             value = row[field];
 
-                         func.apply(this, [e, value, row, index]);
 
-                     });
 
-                 });
 
-             }
 
-         });
 
-         this.updateSelected();
 
-         this.resetView();
 
-         this.trigger('post-body');
 
-     };
 
-     BootstrapTable.prototype.initServer = function (silent, query) {
 
-         var that = this,
 
-             data = {},
 
-             params = {
 
-                 searchText: this.searchText,
 
-                 sortName: this.options.sortName,
 
-                 sortOrder: this.options.sortOrder
 
-             },
 
-             request;
 
-         if(this.options.pagination) {
 
-             params.pageSize = this.options.pageSize === this.options.formatAllRows() ?
 
-                 this.options.totalRows : this.options.pageSize;
 
-             params.pageNumber = this.options.pageNumber;
 
-         }
 
-         if (!this.options.url && !this.options.ajax) {
 
-             return;
 
-         }
 
-         if (this.options.queryParamsType === 'limit') {
 
-             params = {
 
-                 search: params.searchText,
 
-                 sort: params.sortName,
 
-                 order: params.sortOrder
 
-             };
 
-             if (this.options.pagination) {
 
-                 params.limit = this.options.pageSize === this.options.formatAllRows() ?
 
-                     this.options.totalRows : this.options.pageSize;
 
-                 params.offset = this.options.pageSize === this.options.formatAllRows() ?
 
-                     0 : this.options.pageSize * (this.options.pageNumber - 1);
 
-             }
 
-         }
 
-         if (!($.isEmptyObject(this.filterColumnsPartial))) {
 
-             params['_filter'] = JSON.stringify(this.filterColumnsPartial, null);
 
-         }
 
-         data = calculateObjectValue(this.options, this.options.queryParams, [params], data);
 
-         $.extend(data, query || {});
 
-         // false to stop request
 
-         if (data === false) {
 
-             return;
 
-         }
 
-         if (!silent) {
 
-             this.$tableLoading.show();
 
-         }
 
-         request = $.extend({}, calculateObjectValue(null, this.options.ajaxOptions), {
 
-             type: this.options.method,
 
-             url: this.options.url,
 
-             data: this.options.contentType === 'application/json' && this.options.method === 'post' ?
 
-                 JSON.stringify(data) : data,
 
-             cache: this.options.cache,
 
-             contentType: this.options.contentType,
 
-             dataType: this.options.dataType,
 
-             success: function (res) {
 
-                 res = calculateObjectValue(that.options, that.options.responseHandler, [res], res);
 
-                 that.load(res);
 
-                 that.trigger('load-success', res);
 
-                 if (!silent) that.$tableLoading.hide();
 
-             },
 
-             error: function (res) {
 
-                 that.trigger('load-error', res.status, res);
 
-                 if (!silent) that.$tableLoading.hide();
 
-             }
 
-         });
 
-         if (this.options.ajax) {
 
-             calculateObjectValue(this, this.options.ajax, [request], null);
 
-         } else {
 
-             $.ajax(request);
 
-         }
 
-     };
 
-     BootstrapTable.prototype.initSearchText = function () {
 
-         if (this.options.search) {
 
-             if (this.options.searchText !== '') {
 
-                 var $search = this.$toolbar.find('.search input');
 
-                 $search.val(this.options.searchText);
 
-                 this.onSearch({currentTarget: $search});
 
-             }
 
-         }
 
-     };
 
-     BootstrapTable.prototype.getCaret = function () {
 
-         var that = this;
 
-         $.each(this.$header.find('th'), function (i, th) {
 
-             $(th).find('.sortable').removeClass('desc asc').addClass($(th).data('field') === that.options.sortName ? that.options.sortOrder : 'both');
 
-         });
 
-     };
 
-     BootstrapTable.prototype.updateSelected = function () {
 
-         var checkAll = this.$selectItem.filter(':enabled').length &&
 
-             this.$selectItem.filter(':enabled').length ===
 
-             this.$selectItem.filter(':enabled').filter(':checked').length;
 
-         this.$selectAll.add(this.$selectAll_).prop('checked', checkAll);
 
-         this.$selectItem.each(function () {
 
-             $(this).closest('tr')[$(this).prop('checked') ? 'addClass' : 'removeClass']('selected');
 
-         });
 
-     };
 
-     BootstrapTable.prototype.updateRows = function () {
 
-         var that = this;
 
-         this.$selectItem.each(function () {
 
-             that.data[$(this).data('index')][that.header.stateField] = $(this).prop('checked');
 
-         });
 
-     };
 
-     BootstrapTable.prototype.resetRows = function () {
 
-         var that = this;
 
-         $.each(this.data, function (i, row) {
 
-             that.$selectAll.prop('checked', false);
 
-             that.$selectItem.prop('checked', false);
 
-             if (that.header.stateField) {
 
-                 row[that.header.stateField] = false;
 
-             }
 
-         });
 
-     };
 
-     BootstrapTable.prototype.trigger = function (name) {
 
-         var args = Array.prototype.slice.call(arguments, 1);
 
-         name += '.bs.table';
 
-         this.options[BootstrapTable.EVENTS[name]].apply(this.options, args);
 
-         this.$el.trigger($.Event(name), args);
 
-         this.options.onAll(name, args);
 
-         this.$el.trigger($.Event('all.bs.table'), [name, args]);
 
-     };
 
-     BootstrapTable.prototype.resetHeader = function () {
 
-         // fix #61: the hidden table reset header bug.
 
-         // fix bug: get $el.css('width') error sometime (height = 500)
 
-         clearTimeout(this.timeoutId_);
 
-         this.timeoutId_ = setTimeout($.proxy(this.fitHeader, this), this.$el.is(':hidden') ? 100 : 0);
 
-     };
 
-     BootstrapTable.prototype.fitHeader = function () {
 
-         var that = this,
 
-             fixedBody,
 
-             scrollWidth,
 
-             focused,
 
-             focusedTemp;
 
-         var timeoutId = 0;
 
-         if (that.$el.is(':hidden')) {
 
-             that.timeoutId_ = setTimeout($.proxy(that.fitHeader, that), 100);
 
-             return;
 
-         }
 
-         fixedBody = this.$tableBody.get(0);
 
-         scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth &&
 
-         fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ?
 
-             getScrollBarWidth() : 0;
 
-         this.$el.css('margin-top', -this.$header.outerHeight());
 
-         focused = $(':focus');
 
-         if (focused.length > 0) {
 
-             var $th = focused.parents('th');
 
-             if ($th.length > 0) {
 
-                 var dataField = $th.attr('data-field');
 
-                 if (dataField !== undefined) {
 
-                     var $headerTh = this.$header.find("[data-field='" + dataField + "']");
 
-                     if ($headerTh.length > 0) {
 
-                         $headerTh.find(":input").addClass("focus-temp");
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         this.$header_ = this.$header.clone(true, true);
 
-         this.$selectAll_ = this.$header_.find('[name="btSelectAll"]');
 
-         this.$tableHeader.css({
 
-             'margin-right': scrollWidth
 
-         }).find('table').css('width', this.$el.outerWidth())
 
-             .html('').attr('class', this.$el.attr('class'))
 
-             .append(this.$header_);
 
-         $.each(that.$tableHeader.find('.popdate'), function () {
 
-             $(this).popdate();
 
-             $(this).off("change").on("change", function (event) {
 
-                 that.onColumnSearch(event);
 
-             })
 
-         })
 
-         focusedTemp = $('.focus-temp:visible:eq(0)');
 
-         if (focusedTemp.length > 0) {
 
-             focusedTemp.focus();
 
-             this.$header.find('.focus-temp').removeClass('focus-temp');
 
-         }
 
-         // fix bug: $.data() is not working as expected after $.append()
 
-         this.$header.find('th[data-field]').each(function (i) {
 
-             that.$header_.find(sprintf('th[data-field="%s"]', $(this).data('field'))).data($(this).data());
 
-         });
 
-         var visibleFields = this.getVisibleFields();
 
-         this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {
 
-             var $this = $(this),
 
-                 index = i;
 
-             if (that.options.detailView && !that.options.cardView) {
 
-                 if (i === 0) {
 
-                     that.$header_.find('th.detail').find('.fht-cell').width($this.innerWidth());
 
-                 }
 
-                 index = i - 1;
 
-             }
 
-             that.$header_.find(sprintf('th[data-field="%s"]', visibleFields[index]))
 
-                 .find('.fht-cell').width($this.innerWidth());
 
-         });
 
-         // horizontal scroll event
 
-         // TODO: it's probably better improving the layout than binding to scroll event
 
-         this.$tableBody.off('scroll').on('scroll', function () {
 
-             that.$tableHeader.scrollLeft($(this).scrollLeft());
 
-             if (that.options.showFooter && !that.options.cardView) {
 
-                 that.$tableFooter.scrollLeft($(this).scrollLeft());
 
-             }
 
-         });
 
-         that.trigger('post-header');
 
-     };
 
-     BootstrapTable.prototype.resetFooter = function () {
 
-         var that = this,
 
-             data = that.getData(),
 
-             html = [];
 
-         if (!this.options.showFooter || this.options.cardView) { //do nothing
 
-             return;
 
-         }
 
-         if (!this.options.cardView && this.options.detailView) {
 
-             html.push('<td><div class="th-inner"> </div><div class="fht-cell"></div></td>');
 
-         }
 
-         $.each(this.columns, function (i, column) {
 
-             var falign = '', // footer align style
 
-                 style = '',
 
-                 class_ = sprintf(' class="%s"', column['class']);
 
-             if (!column.visible) {
 
-                 return;
 
-             }
 
-             if (that.options.cardView && (!column.cardVisible)) {
 
-                 return;
 
-             }
 
-             falign = sprintf('text-align: %s; ', column.falign ? column.falign : column.align);
 
-             style = sprintf('vertical-align: %s; ', column.valign);
 
-             html.push('<td', class_, sprintf(' style="%s"', falign + style), '>');
 
-             html.push('<div class="th-inner">');
 
-             html.push(calculateObjectValue(column, column.footerFormatter, [data], ' ') || ' ');
 
-             html.push('</div>');
 
-             html.push('<div class="fht-cell"></div>');
 
-             html.push('</div>');
 
-             html.push('</td>');
 
-         });
 
-         this.$tableFooter.find('tr').html(html.join(''));
 
-         clearTimeout(this.timeoutFooter_);
 
-         this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this),
 
-             this.$el.is(':hidden') ? 100 : 0);
 
-     };
 
-     BootstrapTable.prototype.fitFooter = function () {
 
-         var that = this,
 
-             $footerTd,
 
-             elWidth,
 
-             scrollWidth;
 
-         clearTimeout(this.timeoutFooter_);
 
-         if (this.$el.is(':hidden')) {
 
-             this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this), 100);
 
-             return;
 
-         }
 
-         elWidth = this.$el.css('width');
 
-         scrollWidth = elWidth > this.$tableBody.width() ? getScrollBarWidth() : 0;
 
-         this.$tableFooter.css({
 
-             'margin-right': scrollWidth
 
-         }).find('table').css('width', elWidth)
 
-             .attr('class', this.$el.attr('class'));
 
-         $footerTd = this.$tableFooter.find('td');
 
-         this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {
 
-             var $this = $(this);
 
-             $footerTd.eq(i).find('.fht-cell').width($this.innerWidth());
 
-         });
 
-     };
 
-     BootstrapTable.prototype.toggleColumn = function (index, checked, needUpdate) {
 
-         if (index === -1) {
 
-             return;
 
-         }
 
-         this.columns[index].visible = checked;
 
-         this.initHeader();
 
-         this.initSearch();
 
-         this.initPagination();
 
-         this.initBody();
 
-         if (this.options.showColumns) {
 
-             var $items = this.$toolbar.find('.keep-open input').prop('disabled', false);
 
-             if (needUpdate) {
 
-                 $items.filter(sprintf('[value="%s"]', index)).prop('checked', checked);
 
-             }
 
-             if ($items.filter(':checked').length <= this.options.minimumCountColumns) {
 
-                 $items.filter(':checked').prop('disabled', true);
 
-             }
 
-         }
 
-     };
 
-     BootstrapTable.prototype.toggleRow = function (index, uniqueId, visible) {
 
-         if (index === -1) {
 
-             return;
 
-         }
 
-         this.$body.find(typeof index !== 'undefined' ?
 
-             sprintf('tr[data-index="%s"]', index) :
 
-             sprintf('tr[data-uniqueid="%s"]', uniqueId))
 
-             [visible ? 'show' : 'hide']();
 
-     };
 
-     BootstrapTable.prototype.getVisibleFields = function () {
 
-         var that = this,
 
-             visibleFields = [];
 
-         $.each(this.header.fields, function (j, field) {
 
-             var column = that.columns[getFieldIndex(that.columns, field)];
 
-             if (!column.visible) {
 
-                 return;
 
-             }
 
-             visibleFields.push(field);
 
-         });
 
-         return visibleFields;
 
-     };
 
-     // PUBLIC FUNCTION DEFINITION
 
-     // =======================
 
-     BootstrapTable.prototype.resetView = function (params) {
 
-         var padding = 0;
 
-         if (params && params.height) {
 
-             this.options.height = params.height;
 
-         }
 
-         this.$selectAll.prop('checked', this.$selectItem.length > 0 &&
 
-             this.$selectItem.length === this.$selectItem.filter(':checked').length);
 
-         if (this.options.height) {
 
-             var toolbarHeight = getRealHeight(this.$toolbar),
 
-                 paginationHeight = getRealHeight(this.$pagination),
 
-                 height = this.options.height - toolbarHeight - paginationHeight;
 
-             this.$tableContainer.css('height', height + 'px');
 
-         }
 
-         if (this.options.cardView) {
 
-             // remove the element css
 
-             this.$el.css('margin-top', '0');
 
-             this.$tableContainer.css('padding-bottom', '0');
 
-             return;
 
-         }
 
-         if (this.options.showHeader && this.options.height) {
 
-             this.$tableHeader.show();
 
-             this.resetHeader();
 
-             padding += this.$header.outerHeight();
 
-         } else {
 
-             this.$tableHeader.hide();
 
-             this.trigger('post-header');
 
-         }
 
-         if (this.options.showFooter) {
 
-             this.resetFooter();
 
-             if (this.options.height) {
 
-                 padding += this.$tableFooter.outerHeight() + 1;
 
-             }
 
-         }
 
-         // Assign the correct sortable arrow
 
-         this.getCaret();
 
-         this.$tableContainer.css('padding-bottom', padding + 'px');
 
-         this.trigger('reset-view');
 
-     };
 
-     BootstrapTable.prototype.getData = function (useCurrentPage) {
 
-         return (this.searchText || !$.isEmptyObject(this.filterColumns) || !$.isEmptyObject(this.filterColumnsPartial)) ?
 
-             (useCurrentPage ? this.data.slice(this.pageFrom - 1, this.pageTo) : this.data) :
 
-             (useCurrentPage ? this.options.data.slice(this.pageFrom - 1, this.pageTo) : this.options.data);
 
-     };
 
-     BootstrapTable.prototype.load = function (data) {
 
-         var fixedScroll = false;
 
-         // #431: support pagination
 
-         if (this.options.sidePagination === 'server') {
 
-             this.options.totalRows = data.total;
 
-             fixedScroll = data.fixedScroll;
 
-             data = data[this.options.dataField];
 
-         } else if (!$.isArray(data)) { // support fixedScroll
 
-             fixedScroll = data.fixedScroll;
 
-             data = data.data;
 
-         }
 
-         this.initData(data);
 
-         this.initSearch();
 
-         this.initPagination();
 
-         this.initBody(fixedScroll);
 
-     };
 
-     BootstrapTable.prototype.append = function (data) {
 
-         this.initData(data, 'append');
 
-         this.initSearch();
 
-         this.initPagination();
 
-         this.initSort();
 
-         this.initBody(true);
 
-     };
 
-     BootstrapTable.prototype.prepend = function (data) {
 
-         this.initData(data, 'prepend');
 
-         this.initSearch();
 
-         this.initPagination();
 
-         this.initSort();
 
-         this.initBody(true);
 
-     };
 
-     BootstrapTable.prototype.remove = function (params) {
 
-         var len = this.options.data.length,
 
-             i, row;
 
-         if (!params.hasOwnProperty('field') || !params.hasOwnProperty('values')) {
 
-             return;
 
-         }
 
-         for (i = len - 1; i >= 0; i--) {
 
-             row = this.options.data[i];
 
-             if (!row.hasOwnProperty(params.field)) {
 
-                 continue;
 
-             }
 
-             if ($.inArray(row[params.field], params.values) !== -1) {
 
-                 this.options.data.splice(i, 1);
 
-             }
 
-         }
 
-         if (len === this.options.data.length) {
 
-             return;
 
-         }
 
-         this.initSearch();
 
-         this.initPagination();
 
-         this.initSort();
 
-         this.initBody(true);
 
-     };
 
-     BootstrapTable.prototype.removeAll = function () {
 
-         if (this.options.data.length > 0) {
 
-             this.options.data.splice(0, this.options.data.length);
 
-             this.initSearch();
 
-             this.initPagination();
 
-             this.initBody(true);
 
-         }
 
-     };
 
-     BootstrapTable.prototype.getRowByUniqueId = function (id) {
 
-         var uniqueId = this.options.uniqueId,
 
-             len = this.options.data.length,
 
-             dataRow = null,
 
-             i, row, rowUniqueId;
 
-         for (i = len - 1; i >= 0; i--) {
 
-             row = this.options.data[i];
 
-             if (row.hasOwnProperty(uniqueId)) { // uniqueId is a column
 
-                 rowUniqueId = row[uniqueId];
 
-             } else if(row._data.hasOwnProperty(uniqueId)) { // uniqueId is a row data property
 
-                 rowUniqueId = row._data[uniqueId];
 
-             } else {
 
-                 continue;
 
-             }
 
-             if (typeof rowUniqueId === 'string') {
 
-                 id = id.toString();
 
-             } else if (typeof rowUniqueId === 'number') {
 
-                 if ((Number(rowUniqueId) === rowUniqueId) && (rowUniqueId % 1 === 0)) {
 
-                     id = parseInt(id);
 
-                 } else if ((rowUniqueId === Number(rowUniqueId)) && (rowUniqueId !== 0)) {
 
-                     id = parseFloat(id);
 
-                 }
 
-             }
 
-             if (rowUniqueId === id) {
 
-                 dataRow = row;
 
-                 break;
 
-             }
 
-         }
 
-         return dataRow;
 
-     };
 
-     BootstrapTable.prototype.removeByUniqueId = function (id) {
 
-         var len = this.options.data.length,
 
-             row = this.getRowByUniqueId(id);
 
-         if (row) {
 
-             this.options.data.splice(this.options.data.indexOf(row), 1);
 
-         }
 
-         if (len === this.options.data.length) {
 
-             return;
 
-         }
 
-         this.initSearch();
 
-         this.initPagination();
 
-         this.initBody(true);
 
-     };
 
-     BootstrapTable.prototype.updateByUniqueId = function (params) {
 
-         var rowId;
 
-         if (!params.hasOwnProperty('id') || !params.hasOwnProperty('row')) {
 
-             return;
 
-         }
 
-         rowId = $.inArray(this.getRowByUniqueId(params.id), this.options.data);
 
-         if (rowId === -1) {
 
-             return;
 
-         }
 
-         $.extend(this.data[rowId], params.row);
 
-         this.initSort();
 
-         this.initBody(true);
 
-     };
 
-     BootstrapTable.prototype.insertRow = function (params) {
 
-         if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {
 
-             return;
 
-         }
 
-         this.data.splice(params.index, 0, params.row);
 
-         this.initSearch();
 
-         this.initPagination();
 
-         this.initSort();
 
-         this.initBody(true);
 
-     };
 
-     BootstrapTable.prototype.updateRow = function (params) {
 
-         if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {
 
-             return;
 
-         }
 
-         $.extend(this.data[params.index], params.row);
 
-         this.initSort();
 
-         this.initBody(true);
 
-     };
 
-     BootstrapTable.prototype.showRow = function (params) {
 
-         if (!params.hasOwnProperty('index') && !params.hasOwnProperty('uniqueId')) {
 
-             return;
 
-         }
 
-         this.toggleRow(params.index, params.uniqueId, true);
 
-     };
 
-     BootstrapTable.prototype.hideRow = function (params) {
 
-         if (!params.hasOwnProperty('index') && !params.hasOwnProperty('uniqueId')) {
 
-             return;
 
-         }
 
-         this.toggleRow(params.index, params.uniqueId, false);
 
-     };
 
-     BootstrapTable.prototype.getRowsHidden = function (show) {
 
-         var rows = $(this.$body[0]).children().filter(':hidden'),
 
-             i = 0;
 
-         if (show) {
 
-             for (; i < rows.length; i++) {
 
-                 $(rows[i]).show();
 
-             }
 
-         }
 
-         return rows;
 
-     };
 
-     BootstrapTable.prototype.mergeCells = function (options) {
 
-         var row = options.index,
 
-             col = $.inArray(options.field, this.getVisibleFields()),
 
-             rowspan = options.rowspan || 1,
 
-             colspan = options.colspan || 1,
 
-             i, j,
 
-             $tr = this.$body.find('>tr'),
 
-             $td;
 
-         if (this.options.detailView && !this.options.cardView) {
 
-             col += 1;
 
-         }
 
-         $td = $tr.eq(row).find('>td').eq(col);
 
-         if (row < 0 || col < 0 || row >= this.data.length) {
 
-             return;
 
-         }
 
-         for (i = row; i < row + rowspan; i++) {
 
-             for (j = col; j < col + colspan; j++) {
 
-                 $tr.eq(i).find('>td').eq(j).hide();
 
-             }
 
-         }
 
-         $td.attr('rowspan', rowspan).attr('colspan', colspan).show();
 
-     };
 
-     BootstrapTable.prototype.updateCell = function (params) {
 
-         if (!params.hasOwnProperty('index') ||
 
-             !params.hasOwnProperty('field') ||
 
-             !params.hasOwnProperty('value')) {
 
-             return;
 
-         }
 
-         this.data[params.index][params.field] = params.value;
 
-         if (params.reinit === false) {
 
-             return;
 
-         }
 
-         this.initSort();
 
-         this.initBody(true);
 
-     };
 
-     BootstrapTable.prototype.getOptions = function () {
 
-         return this.options;
 
-     };
 
-     BootstrapTable.prototype.getSelections = function () {
 
-         var that = this;
 
-         return $.grep(this.data, function (row) {
 
-             return row[that.header.stateField];
 
-         });
 
-     };
 
-     BootstrapTable.prototype.getAllSelections = function () {
 
-         var that = this;
 
-         return $.grep(this.options.data, function (row) {
 
-             return row[that.header.stateField];
 
-         });
 
-     };
 
-     BootstrapTable.prototype.checkAll = function () {
 
-         this.checkAll_(true);
 
-     };
 
-     BootstrapTable.prototype.uncheckAll = function () {
 
-         this.checkAll_(false);
 
-     };
 
-     BootstrapTable.prototype.checkInvert = function () {
 
-         var that = this;
 
-         var rows = that.$selectItem.filter(':enabled');
 
-         var checked = rows.filter(':checked');
 
-         rows.each(function() {
 
-             $(this).prop('checked', !$(this).prop('checked'));
 
-         });
 
-         that.updateRows();
 
-         that.updateSelected();
 
-         that.trigger('uncheck-some', checked);
 
-         checked = that.getSelections();
 
-         that.trigger('check-some', checked);
 
-     };
 
-     BootstrapTable.prototype.checkAll_ = function (checked) {
 
-         var rows;
 
-         if (!checked) {
 
-             rows = this.getSelections();
 
-         }
 
-         this.$selectAll.add(this.$selectAll_).prop('checked', checked);
 
-         this.$selectItem.filter(':enabled').prop('checked', checked);
 
-         this.updateRows();
 
-         if (checked) {
 
-             rows = this.getSelections();
 
-         }
 
-         this.trigger(checked ? 'check-all' : 'uncheck-all', rows);
 
-     };
 
-     BootstrapTable.prototype.check = function (index) {
 
-         this.check_(true, index);
 
-     };
 
-     BootstrapTable.prototype.uncheck = function (index) {
 
-         this.check_(false, index);
 
-     };
 
-     BootstrapTable.prototype.check_ = function (checked, index) {
 
-         var $el = this.$selectItem.filter(sprintf('[data-index="%s"]', index)).prop('checked', checked);
 
-         this.data[index][this.header.stateField] = checked;
 
-         this.updateSelected();
 
-         this.trigger(checked ? 'check' : 'uncheck', this.data[index], $el);
 
-     };
 
-     BootstrapTable.prototype.checkBy = function (obj) {
 
-         this.checkBy_(true, obj);
 
-     };
 
-     BootstrapTable.prototype.uncheckBy = function (obj) {
 
-         this.checkBy_(false, obj);
 
-     };
 
-     BootstrapTable.prototype.checkBy_ = function (checked, obj) {
 
-         if (!obj.hasOwnProperty('field') || !obj.hasOwnProperty('values')) {
 
-             return;
 
-         }
 
-         var that = this,
 
-             rows = [];
 
-         $.each(this.options.data, function (index, row) {
 
-             if (!row.hasOwnProperty(obj.field)) {
 
-                 return false;
 
-             }
 
-             if ($.inArray(row[obj.field], obj.values) !== -1) {
 
-                 var $el = that.$selectItem.filter(':enabled')
 
-                     .filter(sprintf('[data-index="%s"]', index)).prop('checked', checked);
 
-                 row[that.header.stateField] = checked;
 
-                 rows.push(row);
 
-                 that.trigger(checked ? 'check' : 'uncheck', row, $el);
 
-             }
 
-         });
 
-         this.updateSelected();
 
-         this.trigger(checked ? 'check-some' : 'uncheck-some', rows);
 
-     };
 
-     BootstrapTable.prototype.destroy = function () {
 
-         this.$el.insertBefore(this.$container);
 
-         $(this.options.toolbar).insertBefore(this.$el);
 
-         this.$container.next().remove();
 
-         this.$container.remove();
 
-         this.$el.html(this.$el_.html())
 
-             .css('margin-top', '0')
 
-             .attr('class', this.$el_.attr('class') || ''); // reset the class
 
-     };
 
-     BootstrapTable.prototype.showLoading = function () {
 
-         this.$tableLoading.show();
 
-     };
 
-     BootstrapTable.prototype.hideLoading = function () {
 
-         this.$tableLoading.hide();
 
-     };
 
-     BootstrapTable.prototype.togglePagination = function () {
 
-         this.options.pagination = !this.options.pagination;
 
-         var button = this.$toolbar.find('button[name="paginationSwitch"] i');
 
-         if (this.options.pagination) {
 
-             button.attr("class", this.options.iconsPrefix + " " + this.options.icons.paginationSwitchDown);
 
-         } else {
 
-             button.attr("class", this.options.iconsPrefix + " " + this.options.icons.paginationSwitchUp);
 
-         }
 
-         this.updatePagination();
 
-     };
 
-     BootstrapTable.prototype.refresh = function (params) {
 
-         if (params && params.url) {
 
-             this.options.url = params.url;
 
-             this.options.pageNumber = 1;
 
-             // gdj add
 
-             $.extend(this.options, params)
 
-         }
 
-         this.initServer(params && params.silent, params && params.query);
 
-     };
 
-     BootstrapTable.prototype.resetWidth = function () {
 
-         if (this.options.showHeader && this.options.height) {
 
-             this.fitHeader();
 
-         }
 
-         if (this.options.showFooter) {
 
-             this.fitFooter();
 
-         }
 
-     };
 
-     BootstrapTable.prototype.showColumn = function (field) {
 
-         this.toggleColumn(getFieldIndex(this.columns, field), true, true);
 
-     };
 
-     BootstrapTable.prototype.hideColumn = function (field) {
 
-         this.toggleColumn(getFieldIndex(this.columns, field), false, true);
 
-     };
 
-     BootstrapTable.prototype.getHiddenColumns = function () {
 
-         return $.grep(this.columns, function (column) {
 
-             return !column.visible;
 
-         });
 
-     };
 
-     BootstrapTable.prototype.filterBy = function (columns) {
 
-         this.filterColumns = $.isEmptyObject(columns) ? {} : columns;
 
-         this.options.pageNumber = 1;
 
-         this.initSearch();
 
-         this.updatePagination();
 
-     };
 
-     BootstrapTable.prototype.scrollTo = function (value) {
 
-         if (typeof value === 'string') {
 
-             value = value === 'bottom' ? this.$tableBody[0].scrollHeight : 0;
 
-         }
 
-         if (typeof value === 'number') {
 
-             this.$tableBody.scrollTop(value);
 
-         }
 
-         if (typeof value === 'undefined') {
 
-             return this.$tableBody.scrollTop();
 
-         }
 
-     };
 
-     BootstrapTable.prototype.getScrollPosition = function () {
 
-         return this.scrollTo();
 
-     };
 
-     BootstrapTable.prototype.selectPage = function (page) {
 
-         if (page > 0 && page <= this.options.totalPages) {
 
-             this.options.pageNumber = page;
 
-             this.updatePagination();
 
-         }
 
-     };
 
-     BootstrapTable.prototype.prevPage = function () {
 
-         if (this.options.pageNumber > 1) {
 
-             this.options.pageNumber--;
 
-             this.updatePagination();
 
-         }
 
-     };
 
-     BootstrapTable.prototype.nextPage = function () {
 
-         if (this.options.pageNumber < this.options.totalPages) {
 
-             this.options.pageNumber++;
 
-             this.updatePagination();
 
-         }else{
 
-             this.options.pageNumber = 0;
 
-         }
 
-     };
 
-     BootstrapTable.prototype.toggleView = function () {
 
-         this.options.cardView = !this.options.cardView;
 
-         this.initHeader();
 
-         // Fixed remove toolbar when click cardView button.
 
-         //that.initToolbar();
 
-         this.initBody();
 
-         this.trigger('toggle', this.options.cardView);
 
-     };
 
-     BootstrapTable.prototype.refreshOptions = function (options) {
 
-         //If the objects are equivalent then avoid the call of destroy / init methods
 
-         if (compareObjects(this.options, options, true)) {
 
-             return;
 
-         }
 
-         this.options = $.extend(this.options, options);
 
-         this.trigger('refresh-options', this.options);
 
-         this.destroy();
 
-         this.init();
 
-     };
 
-     BootstrapTable.prototype.resetSearch = function (text) {
 
-         var $search = this.$toolbar.find('.search input');
 
-         $search.val(text || '');
 
-         this.onSearch({currentTarget: $search});
 
-     };
 
-     BootstrapTable.prototype.expandRow_ = function (expand, index) {
 
-         var $tr = this.$body.find(sprintf('> tr[data-index="%s"]', index));
 
-         if ($tr.next().is('tr.detail-view') === (expand ? false : true)) {
 
-             $tr.find('> td > .detail-icon').click();
 
-         }
 
-     };
 
-     BootstrapTable.prototype.expandRow = function (index) {
 
-         this.expandRow_(true, index);
 
-     };
 
-     BootstrapTable.prototype.collapseRow = function (index) {
 
-         this.expandRow_(false, index);
 
-     };
 
-     BootstrapTable.prototype.expandAllRows = function (isSubTable) {
 
-         if (isSubTable) {
 
-             var $tr = this.$body.find(sprintf('> tr[data-index="%s"]', 0)),
 
-                 that = this,
 
-                 detailIcon = null,
 
-                 executeInterval = false,
 
-                 idInterval = -1;
 
-             if (!$tr.next().is('tr.detail-view')) {
 
-                 $tr.find('> td > .detail-icon').click();
 
-                 executeInterval = true;
 
-             } else if (!$tr.next().next().is('tr.detail-view')) {
 
-                 $tr.next().find(".detail-icon").click();
 
-                 executeInterval = true;
 
-             }
 
-             if (executeInterval) {
 
-                 try {
 
-                     idInterval = setInterval(function () {
 
-                         detailIcon = that.$body.find("tr.detail-view").last().find(".detail-icon");
 
-                         if (detailIcon.length > 0) {
 
-                             detailIcon.click();
 
-                         } else {
 
-                             clearInterval(idInterval);
 
-                         }
 
-                     }, 1);
 
-                 } catch (ex) {
 
-                     clearInterval(idInterval);
 
-                 }
 
-             }
 
-         } else {
 
-             var trs = this.$body.children();
 
-             for (var i = 0; i < trs.length; i++) {
 
-                 this.expandRow_(true, $(trs[i]).data("index"));
 
-             }
 
-         }
 
-     };
 
-     BootstrapTable.prototype.collapseAllRows = function (isSubTable) {
 
-         if (isSubTable) {
 
-             this.expandRow_(false, 0);
 
-         } else {
 
-             var trs = this.$body.children();
 
-             for (var i = 0; i < trs.length; i++) {
 
-                 this.expandRow_(false, $(trs[i]).data("index"));
 
-             }
 
-         }
 
-     };
 
-     BootstrapTable.prototype.updateFormatText = function (name, text) {
 
-         if (this.options[sprintf('format%s', name)]) {
 
-             if (typeof text === 'string') {
 
-                 this.options[sprintf('format%s', name)] = function () {
 
-                     return text;
 
-                 };
 
-             } else if (typeof text === 'function') {
 
-                 this.options[sprintf('format%s', name)] = text;
 
-             }
 
-         }
 
-         this.initToolbar();
 
-         this.initPagination();
 
-         this.initBody();
 
-     };
 
-     // BOOTSTRAP TABLE PLUGIN DEFINITION
 
-     // =======================
 
-     var allowedMethods = [
 
-         'getOptions',
 
-         'getSelections', 'getAllSelections', 'getData',
 
-         'load', 'append', 'prepend', 'remove', 'removeAll',
 
-         'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',
 
-         'getRowByUniqueId', 'showRow', 'hideRow', 'getRowsHidden',
 
-         'mergeCells',
 
-         'checkAll', 'uncheckAll', 'checkInvert',
 
-         'check', 'uncheck',
 
-         'checkBy', 'uncheckBy',
 
-         'refresh',
 
-         'resetView',
 
-         'resetWidth',
 
-         'destroy',
 
-         'showLoading', 'hideLoading',
 
-         'showColumn', 'hideColumn', 'getHiddenColumns',
 
-         'filterBy',
 
-         'scrollTo',
 
-         'getScrollPosition',
 
-         'selectPage', 'prevPage', 'nextPage',
 
-         'togglePagination',
 
-         'toggleView',
 
-         'refreshOptions',
 
-         'resetSearch',
 
-         'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows',
 
-         'updateFormatText'
 
-     ];
 
-     $.fn.bootstrapTable = function (option) {
 
-         var value,
 
-             args = Array.prototype.slice.call(arguments, 1);
 
-         this.each(function () {
 
-             var $this = $(this),
 
-                 data = $this.data('bootstrap.table'),
 
-                 options = $.extend({}, BootstrapTable.DEFAULTS, $this.data(),
 
-                     typeof option === 'object' && option);
 
-             if (typeof option === 'string') {
 
-                 if ($.inArray(option, allowedMethods) < 0) {
 
-                     throw new Error("Unknown method: " + option);
 
-                 }
 
-                 if (!data) {
 
-                     return;
 
-                 }
 
-                 value = data[option].apply(data, args);
 
-                 if (option === 'destroy') {
 
-                     $this.removeData('bootstrap.table');
 
-                 }
 
-             }
 
-             if (!data) {
 
-                 $this.data('bootstrap.table', (data = new BootstrapTable(this, options)));
 
-             }
 
-         });
 
-         return typeof value === 'undefined' ? this : value;
 
-     };
 
-     $.fn.bootstrapTable.Constructor = BootstrapTable;
 
-     $.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS;
 
-     $.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS;
 
-     $.fn.bootstrapTable.locales = BootstrapTable.LOCALES;
 
-     $.fn.bootstrapTable.methods = allowedMethods;
 
-     $.fn.bootstrapTable.utils = {
 
-         sprintf: sprintf,
 
-         getFieldIndex: getFieldIndex,
 
-         compareObjects: compareObjects,
 
-         calculateObjectValue: calculateObjectValue
 
-     };
 
-     // BOOTSTRAP TABLE INIT
 
-     // =======================
 
-     $(function () {
 
-         $('[data-toggle="table"]').bootstrapTable();
 
-     });
 
- }(jQuery);
 
- /**
 
-  * @author: Dennis Hernández
 
-  * @webSite: http://djhvscf.github.io/Blog
 
-  * @version: v1.0.0
 
-  */
 
- /**
 
-  * Bootstrap Table Chinese translation
 
-  * Author: Zhixin Wen<wenzhixin2010@gmail.com>
 
-  */
 
- (function ($) {
 
-     'use strict';
 
-     $.fn.bootstrapTable.locales['zh-CN'] = {
 
-         formatLoadingMessage: function () {
 
-             return '正在努力地加载数据中,请稍候……';
 
-         },
 
-         formatRecordsPerPage: function (pageNumber) {
 
-             return '每页显示 ' + pageNumber + ' 条记录';
 
-         },
 
-         formatShowingRows: function (pageFrom, pageTo, totalRows) {
 
-             return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录';
 
-         },
 
-         formatSearch: function () {
 
-             return '搜索';
 
-         },
 
-         formatNoMatches: function () {
 
-             return '没有找到匹配的记录';
 
-         },
 
-         formatPaginationSwitch: function () {
 
-             return '隐藏/显示分页';
 
-         },
 
-         formatRefresh: function () {
 
-             return '刷新';
 
-         },
 
-         formatToggle: function () {
 
-             return '切换';
 
-         },
 
-         formatColumns: function () {
 
-             return '列';
 
-         }
 
-     };
 
-     $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']);
 
- })(jQuery);
 
- !function ($) {
 
-     'use strict';
 
-     var sprintf = $.fn.bootstrapTable.utils.sprintf;
 
-     var addOptionToSelectControl = function (selectControl, value, text) {
 
-         value = $.trim(value);
 
-         selectControl = $(selectControl.get(selectControl.length - 1));
 
-         if (existOptionInSelectControl(selectControl, value)) {
 
-             selectControl.append($("<option></option>")
 
-                 .attr("value", value)
 
-                 .text($('<div />').html(text).text()));
 
-             // Sort it. Not overly efficient to do this here
 
-             var $opts = selectControl.find('option:gt(0)');
 
-             $opts.sort(function (a, b) {
 
-                 a = $(a).text().toLowerCase();
 
-                 b = $(b).text().toLowerCase();
 
-                 if ($.isNumeric(a) && $.isNumeric(b)) {
 
-                     // Convert numerical values from string to float.
 
-                     a = parseFloat(a);
 
-                     b = parseFloat(b);
 
-                 }
 
-                 return a > b ? 1 : a < b ? -1 : 0;
 
-             });
 
-             selectControl.find('option:gt(0)').remove();
 
-             selectControl.append($opts);
 
-         }
 
-     };
 
-     var existOptionInSelectControl = function (selectControl, value) {
 
-         var options = selectControl.get(selectControl.length - 1).options;
 
-         for (var i = 0; i < options.length; i++) {
 
-             if (options[i].value === value.toString()) {
 
-                 //The value is not valid to add
 
-                 return false;
 
-             }
 
-         }
 
-         //If we get here, the value is valid to add
 
-         return true;
 
-     };
 
-     var fixHeaderCSS = function (that) {
 
-         that.$tableHeader.css('height', '68px');
 
-     };
 
-     var getCurrentHeader = function (that) {
 
-         var header = that.$header;
 
-         if (that.options.height) {
 
-             header = that.$tableHeader;
 
-         }
 
-         return header;
 
-     };
 
-     var getCurrentSearchControls = function (that) {
 
-         var searchControls = 'select, input';
 
-         if (that.options.height) {
 
-             searchControls = 'table select, table input';
 
-         }
 
-         return searchControls;
 
-     };
 
-     var copyValues = function (that) {
 
-         var header = getCurrentHeader(that),
 
-             searchControls = getCurrentSearchControls(that);
 
-         that.options.valuesFilterControl = [];
 
-         header.find(searchControls).each(function () {
 
-             that.options.valuesFilterControl.push(
 
-                 {
 
-                     field: $(this).closest('[data-field]').data('field'),
 
-                     value: $(this).val()
 
-                 });
 
-         });
 
-     };
 
-     var setValues = function(that) {
 
-         var field = null,
 
-             result = [],
 
-             header = getCurrentHeader(that),
 
-             searchControls = getCurrentSearchControls(that);
 
-         if (that.options.valuesFilterControl.length > 0) {
 
-             header.find(searchControls).each(function (index, ele) {
 
-                 field = $(this).closest('[data-field]').data('field');
 
-                 result = $.grep(that.options.valuesFilterControl, function (valueObj) {
 
-                     return valueObj.field === field;
 
-                 });
 
-                 if (result.length > 0) {
 
-                     $(this).val(result[0].value);
 
-                 }
 
-             });
 
-         }
 
-     };
 
-     var collectBootstrapCookies = function cookiesRegex() {
 
-         var cookies = [],
 
-             foundCookies = document.cookie.match(/(?:bs.table.)(\w*)/g);
 
-         if (foundCookies) {
 
-             $.each(foundCookies, function (i, cookie) {
 
-                 if (/./.test(cookie)) {
 
-                     cookie = cookie.split(".").pop();
 
-                 }
 
-                 if ($.inArray(cookie, cookies) === -1) {
 
-                     cookies.push(cookie);
 
-                 }
 
-             });
 
-             return cookies;
 
-         }
 
-     };
 
-     var initFilterSelectControls = function (bootstrapTable) {
 
-         var data = bootstrapTable.options.data,
 
-             itemsPerPage = bootstrapTable.pageTo < bootstrapTable.options.data.length ? bootstrapTable.options.data.length : bootstrapTable.pageTo,
 
-             isColumnSearchableViaSelect = function (column) {
 
-                 return column.filterControl && column.filterControl.toLowerCase() === 'select' && column.searchable;
 
-             },
 
-             isFilterDataNotGiven = function (column) {
 
-                 return column.filterData === undefined || column.filterData.toLowerCase() === 'column';
 
-             },
 
-             hasSelectControlElement = function (selectControl) {
 
-                 return selectControl && selectControl.length > 0;
 
-             };
 
-         for (var i = bootstrapTable.pageFrom - 1; i < bootstrapTable.pageTo; i++) {
 
-             $.each(bootstrapTable.header.fields, function (j, field) {
 
-                 var column = bootstrapTable.columns[$.fn.bootstrapTable.utils.getFieldIndex(bootstrapTable.columns, field)],
 
-                     selectControl = $('.' + column.field);
 
-                 if (isColumnSearchableViaSelect(column) && isFilterDataNotGiven(column) && hasSelectControlElement(selectControl)) {
 
-                     if (selectControl.get(selectControl.length - 1).options.length === 0) {
 
-                         //Added the default option
 
-                         addOptionToSelectControl(selectControl, '', '');
 
-                     }
 
-                     //Added a new value
 
-                     var fieldValue = data[i][field],
 
-                         formattedValue = $.fn.bootstrapTable.utils.calculateObjectValue(bootstrapTable.header, bootstrapTable.header.formatters[j], [fieldValue, data[i], i], fieldValue);
 
-                     if (column.extendLabel){
 
-                         formattedValue = data[i][column.field + "_" + column.extendLabel]
 
-                     }
 
-                     addOptionToSelectControl(selectControl, fieldValue, formattedValue);
 
-                 }
 
-             });
 
-         }
 
-     }
 
-     var createControls = function (that, header) {
 
-         var addedFilterControl = false,
 
-             isVisible,
 
-             html,
 
-             timeoutId = 0;
 
-         $.each(that.columns, function (i, column) {
 
-             isVisible = 'hidden';
 
-             html = [];
 
-             if (!column.visible) {
 
-                 return;
 
-             }
 
-             if (!column.filterControl) {
 
-                 html.push('<div style="height: 34px;"></div>');
 
-             } else {
 
-                 html.push('<div style="margin: 0 2px 2px 2px;" class="filterControl">');
 
-                 var nameControl = column.filterControl.toLowerCase();
 
-                 if (column.searchable && that.options.filterTemplate[nameControl]) {
 
-                     addedFilterControl = true;
 
-                     isVisible = 'visible';
 
-                     html.push(that.options.filterTemplate[nameControl](that, column.field, isVisible));
 
-                 }
 
-             }
 
-             $.each(header.children().children(), function (i, tr) {
 
-                 tr = $(tr);
 
-                 if (tr.data('field') === column.field) {
 
-                     tr.find('.fht-cell').append(html.join(''));
 
-                     return false;
 
-                 }
 
-             });
 
-             if (column.filterData !== undefined && column.filterData.toLowerCase() !== 'column') {
 
-                 var filterDataType = column.filterData.substring(0, 3);
 
-                 var filterDataSource = column.filterData.substring(4, column.filterData.length);
 
-                 var selectControl = $('.' + column.field);
 
-                 addOptionToSelectControl(selectControl, '', '');
 
-                 switch (filterDataType) {
 
-                     case 'url':
 
-                         $.ajax({
 
-                             url: filterDataSource,
 
-                             dataType: 'json',
 
-                             success: function (data) {
 
-                                 $.each(data, function (key, value) {
 
-                                     addOptionToSelectControl(selectControl, key, value);
 
-                                 });
 
-                             }
 
-                         });
 
-                         break;
 
-                     case 'var':
 
-                         var variableValues = window[filterDataSource];
 
-                         for (var key in variableValues) {
 
-                             addOptionToSelectControl(selectControl, key, variableValues[key]);
 
-                         }
 
-                         break;
 
-                 }
 
-             }
 
-         });
 
-         if (addedFilterControl) {
 
-             header.off('keyup', 'input').on('keyup', 'input', function (event) {
 
-                 clearTimeout(timeoutId);
 
-                 timeoutId = setTimeout(function () {
 
-                     that.onColumnSearch(event);
 
-                 }, that.options.searchTimeOut);
 
-             });
 
-             header.off('change', 'select').on('change', 'select', function (event) {
 
-                 clearTimeout(timeoutId);
 
-                 timeoutId = setTimeout(function () {
 
-                     that.onColumnSearch(event);
 
-                 }, that.options.searchTimeOut);
 
-             });
 
-             header.off('mouseup', 'input').on('mouseup', 'input', function (event) {
 
-                 var $input = $(this),
 
-                     oldValue = $input.val();
 
-                 if (oldValue === "") {
 
-                     return;
 
-                 }
 
-                 setTimeout(function(){
 
-                     var newValue = $input.val();
 
-                     if (newValue === "") {
 
-                         clearTimeout(timeoutId);
 
-                         timeoutId = setTimeout(function () {
 
-                             that.onColumnSearch(event);
 
-                         }, that.options.searchTimeOut);
 
-                     }
 
-                 }, 1);
 
-             });
 
-             if (header.find('.date-filter-control').length > 0) {
 
-                 $.each(that.columns, function (i, column) {
 
-                     if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'datepicker') {
 
-                         header.find('.date-filter-control.' + column.field).datetimepicker(column.filterDatepickerOptions)
 
-                             .on('changeDate', function (e) {
 
-                                 //Fired the keyup event
 
-                                 $(e.currentTarget).keyup();
 
-                             });
 
-                     }
 
-                 });
 
-             }
 
-         } else {
 
-             header.find('.filterControl').hide();
 
-         }
 
-     };
 
-     var getDirectionOfSelectOptions = function (alignment) {
 
-         alignment = alignment === undefined ? 'left' : alignment.toLowerCase();
 
-         switch (alignment) {
 
-             case 'left':
 
-                 return 'ltr';
 
-             case 'right':
 
-                 return 'rtl';
 
-             case 'auto':
 
-                 return 'auto';
 
-             default:
 
-                 return 'ltr'
 
-         }
 
-     };
 
-     $.extend($.fn.bootstrapTable.defaults, {
 
-         filterControl: false,
 
-         onColumnSearch: function (field, text) {
 
-             return false;
 
-         },
 
-         filterShowClear: false,
 
-         alignmentSelectControlOptions: undefined,
 
-         //internal variables
 
-         valuesFilterControl: [],
 
-         filterTemplate: {
 
-             input: function (that, field, isVisible) {
 
-                 return sprintf('<input type="text" class="form-control %s" filter-field="%s" style="width: 100%; visibility: %s">', field, field, isVisible);
 
-             },
 
-             select: function (that, field, isVisible) {
 
-                 return sprintf('<select class="%s form-control" filter-field="%s" style="width: 100%; visibility: %s" dir="%s"></select>',
 
-                     field, field, isVisible, getDirectionOfSelectOptions(that.options.alignmentSelectControlOptions))
 
-             },
 
-             datepicker: function (that, field, isVisible) {
 
-                 return sprintf('<input type="text" class="date-filter-control %s form-control"  filter-field="%s" style="width: 100%; visibility: %s">', field, field, isVisible);
 
-             },
 
-             popdate:function (that, field, isVisible) {
 
-                 return sprintf('<input type="text" class="form-control %s popdate" filter-field="%s" style="width: 100%; visibility: %s">', field, field, isVisible);
 
-             }
 
-         }
 
-     });
 
-     $.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
 
-         filterControl: undefined,
 
-         filterData: undefined,
 
-         filterDatepickerOptions: undefined,
 
-         filterStrictSearch: false
 
-     });
 
-     $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
 
-         'column-search.bs.table': 'onColumnSearch'
 
-     });
 
-     $.extend($.fn.bootstrapTable.defaults.icons, {
 
-         clear: 'glyphicon-trash icon-clear'
 
-     });
 
-     var BootstrapTable = $.fn.bootstrapTable.Constructor,
 
-         _init = BootstrapTable.prototype.init,
 
-         _initToolbar = BootstrapTable.prototype.initToolbar,
 
-         _initHeader = BootstrapTable.prototype.initHeader,
 
-         _initBody = BootstrapTable.prototype.initBody,
 
-         _initSearch = BootstrapTable.prototype.initSearch;
 
-     BootstrapTable.prototype.init = function () {
 
-         //Make sure that the filterControl option is set
 
-         if (this.options.filterControl) {
 
-             this.filterInputValues = {}
 
-             var that = this;
 
-             //Make sure that the internal variables are set correctly
 
-             this.options.valuesFilterControl = [];
 
-             this.$el.on('reset-view.bs.table', function () {
 
-                 //Create controls on $tableHeader if the height is set
 
-                 if (!that.options.height) {
 
-                     return;
 
-                 }
 
-                 //Avoid recreate the controls
 
-                 if (that.$tableHeader.find('select').length > 0 || that.$tableHeader.find('input').length > 0) {
 
-                     return;
 
-                 }
 
-                 // createControls(that, that.$tableHeader);
 
-             }).on('post-header.bs.table', function () {
 
-                 setValues(that);
 
-             }).on('post-body.bs.table', function () {
 
-                 if (that.options.height) {
 
-                     fixHeaderCSS(that);
 
-                 }
 
-             }).on('column-switch.bs.table', function() {
 
-                 setValues(that);
 
-             });
 
-         }
 
-         _init.apply(this, Array.prototype.slice.apply(arguments));
 
-     };
 
-     $.extend($.fn.bootstrapTable.locales, {
 
-         formatClearFilters: function () {
 
-             return 'Clear Filters';
 
-         }
 
-     });
 
-     $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
 
-     BootstrapTable.prototype.initToolbar = function () {
 
-         if ((!this.showToolbar) && (this.options.filterControl)) {
 
-             this.showToolbar = this.options.filterControl;
 
-         }
 
-         _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
 
-         if (this.options.filterControl && this.options.filterShowClear) {
 
-             var $btnGroup = this.$toolbar.find('>.btn-group'),
 
-                 $btnClear = $btnGroup.find('div.export');
 
-             if (!$btnClear.length) {
 
-                 $btnClear = $([
 
-                     '<button class="btn btn-default" ',
 
-                     sprintf('type="button" title="%s">', this.options.formatClearFilters()),
 
-                     sprintf('<i class="%s %s"></i> ', this.options.iconsPrefix, this.options.icons.clear),
 
-                     '</button>',
 
-                     '</ul>'].join('')).appendTo($btnGroup);
 
-                 $btnClear.off('click').on('click', $.proxy(this.clearFilterControl, this));
 
-             }
 
-         }
 
-     };
 
-     BootstrapTable.prototype.initHeader = function () {
 
-         _initHeader.apply(this, Array.prototype.slice.apply(arguments));
 
-         if (!this.options.filterControl) {
 
-             return;
 
-         }
 
-         createControls(this, this.$header);
 
-     };
 
-     BootstrapTable.prototype.initBody = function () {
 
-         _initBody.apply(this, Array.prototype.slice.apply(arguments));
 
-         initFilterSelectControls(this);
 
-     };
 
-     BootstrapTable.prototype.initSearch = function () {
 
-         _initSearch.apply(this, Array.prototype.slice.apply(arguments));
 
-         if (!this.options.sidePagination === 'server') {
 
-             return;
 
-         }
 
-         var that = this;
 
-         var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
 
-         //Check partial column filter
 
-         this.data = fp ? $.grep(this.data, function (item, i) {
 
-             for (var key in fp) {
 
-                 var thisColumn = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, key)];
 
-                 var fval = fp[key].toLowerCase();
 
-                 var value = item[key];
 
-                 // Fix #142: search use formated data
 
-                 if (thisColumn && thisColumn.searchFormatter) {
 
-                     value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header,
 
-                         that.header.formatters[$.inArray(key, that.header.fields)],
 
-                         [value, item, i], value);
 
-                     if (thisColumn.extendLabel){
 
-                         value = item[key];
 
-                     }
 
-                 }
 
-                 if (thisColumn && thisColumn.filterControl){
 
-                     return true
 
-                 }
 
-                 if (thisColumn.filterStrictSearch) {
 
-                     if (!($.inArray(key, that.header.fields) !== -1 &&
 
-                         (typeof value === 'string' || typeof value === 'number') &&
 
-                         value.toString().toLowerCase() === fval.toString().toLowerCase())) {
 
-                         return false;
 
-                     }
 
-                 }
 
-                 else {
 
-                     if (!($.inArray(key, that.header.fields) !== -1 &&
 
-                         (typeof value === 'string' || typeof value === 'number') &&
 
-                         (value + '').toLowerCase().indexOf(fval) !== -1)) {
 
-                         return false;
 
-                     }
 
-                 }
 
-             }
 
-             return true;
 
-         }) : this.data;
 
-     };
 
-     BootstrapTable.prototype.onColumnSearch = function (event) {
 
-         copyValues(this);
 
-         var text = $.trim($(event.currentTarget).val());
 
-         var $field = $(event.currentTarget).closest('[data-field]').data('field');
 
-         var that = this
 
-         var change = false
 
-         getCurrentHeader(this).find('[filter-field]').each(function(i, e){
 
-             var $e = $(e)
 
-             var fieldName = $e.attr("filter-field")
 
-             var v = $e.val()
 
-             if (fieldName in that.filterInputValues && that.filterInputValues[fieldName] == v)
 
-             {
 
-                 return
 
-             }
 
-             that.filterInputValues[fieldName] = v
 
-             change = true
 
-         })
 
-         if (change == false){
 
-             return
 
-         }
 
-         if ($.isEmptyObject(this.filterColumnsPartial)) {
 
-             this.filterColumnsPartial = {};
 
-         }
 
-         for (var k in this.filterInputValues){
 
-             var v = this.filterInputValues[k]
 
-             if (v == ""){
 
-                 delete this.filterColumnsPartial[k]
 
-                 continue
 
-             }
 
-             this.filterColumnsPartial[k] = v
 
-         }
 
-         this.options.pageNumber = 1;
 
-         this.initSearch();
 
-         this.updatePagination();
 
-         this.trigger('column-search', $field, text);
 
-     };
 
-     BootstrapTable.prototype.clearFilterControl = function () {
 
-         if (this.options.filterControl && this.options.filterShowClear) {
 
-             var that = this,
 
-                 cookies = collectBootstrapCookies(),
 
-                 header = getCurrentHeader(that),
 
-                 table = header.closest('table'),
 
-                 controls = header.find(getCurrentSearchControls(that)),
 
-                 search = that.$toolbar.find('.search input'),
 
-                 timeoutId = 0;
 
-             $.each(that.options.valuesFilterControl, function (i, item) {
 
-                 item.value = '';
 
-             });
 
-             setValues(that);
 
-             // Clear each type of filter if it exists.
 
-             // Requires the body to reload each time a type of filter is found because we never know
 
-             // which ones are going to be present.
 
-             if (controls.length > 0) {
 
-                 this.filterColumnsPartial = {};
 
-                 $(controls[0]).trigger(controls[0].tagName === 'INPUT' ? 'keyup' : 'change');
 
-             }
 
-             if (search.length > 0) {
 
-                 that.resetSearch();
 
-             }
 
-             // use the default sort order if it exists. do nothing if it does not
 
-             // if (that.options.sortName !== table.data('sortName') || that.options.sortOrder !== table.data('sortOrder')) {
 
-             //     var sorter = sprintf(header.find('[data-field="%s"]', $(controls[0]).closest('table').data('sortName')));
 
-             //     that.onSort(table.data('sortName'), table.data('sortName'));
 
-             //     $(sorter).find('.sortable').trigger('click');
 
-             // }
 
-             // clear cookies once the filters are clean
 
-             clearTimeout(timeoutId);
 
-             timeoutId = setTimeout(function () {
 
-                 if (cookies && cookies.length > 0) {
 
-                     $.each(cookies, function (i, item) {
 
-                         that.deleteCookie(item);
 
-                     });
 
-                 }
 
-             }, that.options.searchTimeOut);
 
-         }
 
-     };
 
- }(jQuery);
 
- /**
 
-  * @author: Dennis Hernández
 
-  * @webSite: http://djhvscf.github.io/Blog
 
-  * @version: v1.1.0
 
-  */
 
- !function ($) {
 
-     'use strict';
 
-     var showHideColumns = function (that, checked) {
 
-         if (that.options.columnsHidden.length > 0 ) {
 
-             $.each(that.columns, function (i, column) {
 
-                 if (that.options.columnsHidden.indexOf(column.field) !== -1) {
 
-                     if (column.visible !== checked) {
 
-                         that.toggleColumn($.fn.bootstrapTable.utils.getFieldIndex(that.columns, column.field), checked, true);
 
-                     }
 
-                 }
 
-             });
 
-         }
 
-     };
 
-     var resetView = function (that) {
 
-         if (that.options.height || that.options.showFooter) {
 
-             setTimeout(function(){
 
-                 that.resetView.call(that);
 
-             }, 1);
 
-         }
 
-     };
 
-     var changeView = function (that, width, height) {
 
-         if (that.options.minHeight) {
 
-             if ((width <= that.options.minWidth) && (height <= that.options.minHeight)) {
 
-                 conditionCardView(that);
 
-             } else if ((width > that.options.minWidth) && (height > that.options.minHeight)) {
 
-                 conditionFullView(that);
 
-             }
 
-         } else {
 
-             if (width <= that.options.minWidth) {
 
-                 conditionCardView(that);
 
-             } else if (width > that.options.minWidth) {
 
-                 conditionFullView(that);
 
-             }
 
-         }
 
-         resetView(that);
 
-     };
 
-     var conditionCardView = function (that) {
 
-         changeTableView(that, false);
 
-         showHideColumns(that, false);
 
-     };
 
-     var conditionFullView = function (that) {
 
-         changeTableView(that, true);
 
-         showHideColumns(that, true);
 
-     };
 
-     var changeTableView = function (that, cardViewState) {
 
-         that.options.cardView = cardViewState;
 
-         that.toggleView();
 
-     };
 
-     var debounce = function(func,wait) {
 
-         var timeout;
 
-         return function() {
 
-             var context = this,
 
-                 args = arguments;
 
-             var later = function() {
 
-                 timeout = null;
 
-                 func.apply(context,args);
 
-             };
 
-             clearTimeout(timeout);
 
-             timeout = setTimeout(later, wait);
 
-         };
 
-     };
 
-     $.extend($.fn.bootstrapTable.defaults, {
 
-         mobileResponsive: false,
 
-         minWidth: 562,
 
-         minHeight: undefined,
 
-         heightThreshold: 100, // just slightly larger than mobile chrome's auto-hiding toolbar
 
-         checkOnInit: true,
 
-         columnsHidden: []
 
-     });
 
-     var BootstrapTable = $.fn.bootstrapTable.Constructor,
 
-         _init = BootstrapTable.prototype.init;
 
-     BootstrapTable.prototype.init = function () {
 
-         _init.apply(this, Array.prototype.slice.apply(arguments));
 
-         if (!this.options.mobileResponsive) {
 
-             return;
 
-         }
 
-         if (!this.options.minWidth) {
 
-             return;
 
-         }
 
-         if (this.options.minWidth < 100 && this.options.resizable) {
 
-             console.log("The minWidth when the resizable extension is active should be greater or equal than 100");
 
-             this.options.minWidth = 100;
 
-         }
 
-         var that = this,
 
-             old = {
 
-                 width: $(window).width(),
 
-                 height: $(window).height()
 
-             };
 
-         $(window).on('resize orientationchange',debounce(function (evt) {
 
-             // reset view if height has only changed by at least the threshold.
 
-             var height = $(this).height(),
 
-                 width = $(this).width();
 
-             if (Math.abs(old.height - height) > that.options.heightThreshold || old.width != width) {
 
-                 changeView(that, width, height);
 
-                 old = {
 
-                     width: width,
 
-                     height: height
 
-                 };
 
-             }
 
-         },200));
 
-         if (this.options.checkOnInit) {
 
-             var height = $(window).height(),
 
-                 width = $(window).width();
 
-             changeView(this, width, height);
 
-             old = {
 
-                 width: width,
 
-                 height: height
 
-             };
 
-         }
 
-     };
 
- }(jQuery);
 
- /**
 
-  * @author zhixin wen <wenzhixin2010@gmail.com>
 
-  * extensions: https://github.com/kayalshri/tableExport.jquery.plugin
 
-  */
 
- (function ($) {
 
-     'use strict';
 
-     var sprintf = $.fn.bootstrapTable.utils.sprintf;
 
-     var TYPE_NAME = {
 
-         json: 'JSON',
 
-         xml: 'XML',
 
-         png: 'PNG',
 
-         csv: 'CSV',
 
-         txt: 'TXT',
 
-         sql: 'SQL',
 
-         doc: 'MS-Word',
 
-         excel: 'MS-Excel',
 
-         powerpoint: 'MS-Powerpoint',
 
-         pdf: 'PDF'
 
-     };
 
-     $.extend($.fn.bootstrapTable.defaults, {
 
-         showExport: false,
 
-         exportDataType: 'basic', // basic, all, selected
 
-         // 'json', 'xml', 'png', 'csv', 'txt', 'sql', 'doc', 'excel', 'powerpoint', 'pdf'
 
-         exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],
 
-         exportOptions: {}
 
-     });
 
-     $.extend($.fn.bootstrapTable.defaults.icons, {
 
-         export: 'glyphicon-export icon-share'
 
-     });
 
-     $.extend($.fn.bootstrapTable.locales, {
 
-         formatExport: function () {
 
-             return 'Export data';
 
-         }
 
-     });
 
-     $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
 
-     var BootstrapTable = $.fn.bootstrapTable.Constructor,
 
-         _initToolbar = BootstrapTable.prototype.initToolbar;
 
-     BootstrapTable.prototype.initToolbar = function () {
 
-         this.showToolbar = this.options.showExport;
 
-         _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
 
-         if (this.options.showExport) {
 
-             var that = this,
 
-                 $btnGroup = this.$toolbar.find('>.btn-group'),
 
-                 $export = $btnGroup.find('div.export');
 
-             if (!$export.length) {
 
-                 $export = $([
 
-                     '<div class="export btn-group">',
 
-                     '<button class="btn' +
 
-                     sprintf(' btn-%s', this.options.buttonsClass) +
 
-                     sprintf(' btn-%s', this.options.iconSize) +
 
-                     ' dropdown-toggle" ' +
 
-                     'title="' + this.options.formatExport() + '" ' +
 
-                     'data-toggle="dropdown" type="button">',
 
-                     sprintf('<i class="%s %s"></i> ', this.options.iconsPrefix, this.options.icons.export),
 
-                     '<span class="caret"></span>',
 
-                     '</button>',
 
-                     '<ul class="dropdown-menu" role="menu">',
 
-                     '</ul>',
 
-                     '</div>'].join('')).appendTo($btnGroup);
 
-                 var $menu = $export.find('.dropdown-menu'),
 
-                     exportTypes = this.options.exportTypes;
 
-                 if (typeof this.options.exportTypes === 'string') {
 
-                     var types = this.options.exportTypes.slice(1, -1).replace(/ /g, '').split(',');
 
-                     exportTypes = [];
 
-                     $.each(types, function (i, value) {
 
-                         exportTypes.push(value.slice(1, -1));
 
-                     });
 
-                 }
 
-                 $.each(exportTypes, function (i, type) {
 
-                     if (TYPE_NAME.hasOwnProperty(type)) {
 
-                         $menu.append(['<li data-type="' + type + '">',
 
-                             '<a href="javascript:void(0)">',
 
-                             TYPE_NAME[type],
 
-                             '</a>',
 
-                             '</li>'].join(''));
 
-                     }
 
-                 });
 
-                 $menu.find('li').click(function () {
 
-                     var type = $(this).data('type'),
 
-                         doExport = function () {
 
-                             that.$el.tableExport($.extend({}, that.options.exportOptions, {
 
-                                 type: type,
 
-                                 escape: false
 
-                             }));
 
-                         };
 
-                     if (that.options.exportDataType === 'all' && that.options.pagination) {
 
-                         that.$el.one(that.options.sidePagination === 'server' ? 'post-body.bs.table' : 'page-change.bs.table', function () {
 
-                             doExport();
 
-                             that.togglePagination();
 
-                         });
 
-                         that.togglePagination();
 
-                     } else if (that.options.exportDataType === 'selected') {
 
-                         var data = that.getData(),
 
-                             selectedData = that.getAllSelections();
 
-                         // Quick fix #2220
 
-                         if (that.options.sidePagination === 'server') {
 
-                             data = {total: that.options.totalRows};
 
-                             data[that.options.dataField] = that.getData();
 
-                             selectedData = {total: that.options.totalRows};
 
-                             selectedData[that.options.dataField] = that.getAllSelections();
 
-                         }
 
-                         that.load(selectedData);
 
-                         doExport();
 
-                         that.load(data);
 
-                     } else {
 
-                         doExport();
 
-                     }
 
-                 });
 
-             }
 
-         }
 
-     };
 
- })(jQuery);
 
- /**
 
-  * @preserve tableExport.jquery.plugin
 
-  *
 
-  * Copyright (c) 2015,2016 hhurz, https://github.com/hhurz/tableExport.jquery.plugin
 
-  * Original work Copyright (c) 2014 Giri Raj, https://github.com/kayalshri/
 
-  *
 
-  * Licensed under the MIT License, http://opensource.org/licenses/mit-license
 
-  */
 
- (function ($) {
 
-     $.fn.extend({
 
-         tableExport: function (options) {
 
-             var defaults = {
 
-                 consoleLog: false,
 
-                 csvEnclosure: '"',
 
-                 csvSeparator: ',',
 
-                 csvUseBOM: true,
 
-                 displayTableName: false,
 
-                 escape: false,
 
-                 excelstyles: [],       // e.g. ['border-bottom', 'border-top', 'border-left', 'border-right']
 
-                 fileName: 'tableExport',
 
-                 htmlContent: false,
 
-                 ignoreColumn: [],
 
-                 ignoreRow:[],
 
-                 jsonScope: 'all', // head, data, all
 
-                 jspdf: {orientation: 'p',
 
-                     unit: 'pt',
 
-                     format: 'a4', // jspdf page format or 'bestfit' for autmatic paper format selection
 
-                     margins: {left: 20, right: 10, top: 10, bottom: 10},
 
-                     autotable: {styles: {cellPadding: 2,
 
-                         rowHeight: 12,
 
-                         fontSize: 8,
 
-                         fillColor: 255,        // color value or 'inherit' to use css background-color from html table
 
-                         textColor: 50,         // color value or 'inherit' to use css color from html table
 
-                         fontStyle: 'normal',   // normal, bold, italic, bolditalic or 'inherit' to use css font-weight and fonst-style from html table
 
-                         overflow: 'ellipsize', // visible, hidden, ellipsize or linebreak
 
-                         halign: 'left',        // left, center, right
 
-                         valign: 'middle'       // top, middle, bottom
 
-                     },
 
-                         headerStyles: {fillColor: [52, 73, 94],
 
-                             textColor: 255,
 
-                             fontStyle: 'bold',
 
-                             halign: 'center'
 
-                         },
 
-                         alternateRowStyles: {fillColor: 245
 
-                         },
 
-                         tableExport: {onAfterAutotable: null,
 
-                             onBeforeAutotable: null,
 
-                             onTable: null,
 
-                             outputImages: true
 
-                         }
 
-                     }
 
-                 },
 
-                 numbers: {html: {decimalMark: '.',
 
-                     thousandsSeparator: ','
 
-                 },
 
-                     output: {decimalMark: '.',
 
-                         thousandsSeparator: ','
 
-                     }
 
-                 },
 
-                 onCellData: null,
 
-                 onCellHtmlData: null,
 
-                 outputMode: 'file',  // 'file', 'string' or 'base64'
 
-                 pdfmake: {enabled: false}, // true: use pdfmake instead of jspdf(-autotable)
 
-                 tbodySelector: 'tr',
 
-                 tfootSelector: 'tr', // set empty ('') to prevent export of tfoot rows
 
-                 theadSelector: 'tr',
 
-                 tableName: 'myTableName',
 
-                 type: 'csv', // 'csv', 'txt', 'sql', 'json', 'xml', 'excel', 'doc', 'png' or 'pdf'
 
-                 worksheetName: 'xlsWorksheetName'
 
-             };
 
-             var FONT_ROW_RATIO = 1.15;
 
-             var el = this;
 
-             var DownloadEvt = null;
 
-             var $hrows = [];
 
-             var $rows = [];
 
-             var rowIndex = 0;
 
-             var rowspans = [];
 
-             var trData = '';
 
-             var colNames = [];
 
-             var blob;
 
-             $.extend(true, defaults, options);
 
-             colNames = GetColumnNames (el);
 
-             if (defaults.type == 'csv' || defaults.type == 'txt') {
 
-                 var csvData = "";
 
-                 var rowlength = 0;
 
-                 rowIndex = 0;
 
-                 var CollectCsvData = function ($rows, rowselector, length) {
 
-                     $rows.each(function () {
 
-                         trData = "";
 
-                         ForEachVisibleCell(this, rowselector, rowIndex, length + $rows.length,
 
-                             function (cell, row, col) {
 
-                                 trData += csvString(cell, row, col) + defaults.csvSeparator;
 
-                             });
 
-                         trData = $.trim(trData).substring(0, trData.length - 1);
 
-                         if (trData.length > 0) {
 
-                             if (csvData.length > 0)
 
-                                 csvData += "\n";
 
-                             csvData += trData;
 
-                         }
 
-                         rowIndex++;
 
-                     });
 
-                     return $rows.length;
 
-                 };
 
-                 rowlength += CollectCsvData ($(el).find('thead').first().find(defaults.theadSelector), 'th,td', rowlength);
 
-                 $(el).find('tbody').each(function() {
 
-                     rowlength += CollectCsvData ($(this).find(defaults.tbodySelector), 'td', rowlength);
 
-                 });
 
-                 if (defaults.tfootSelector.length)
 
-                     CollectCsvData ($(el).find('tfoot').first().find(defaults.tfootSelector), 'td', rowlength);
 
-                 csvData += "\n";
 
-                 //output
 
-                 if (defaults.consoleLog === true)
 
-                     console.log(csvData);
 
-                 if (defaults.outputMode === 'string')
 
-                     return csvData;
 
-                 if (defaults.outputMode === 'base64')
 
-                     return base64encode(csvData);
 
-                 try {
 
-                     blob = new Blob([csvData], {type: "text/" + (defaults.type == 'csv' ? 'csv' : 'plain') + ";charset=utf-8"});
 
-                     saveAs(blob, defaults.fileName + '.' + defaults.type, (defaults.type != 'csv' || defaults.csvUseBOM === false));
 
-                 }
 
-                 catch (e) {
 
-                     downloadFile(defaults.fileName + '.' + defaults.type,
 
-                         'data:text/' + (defaults.type == 'csv' ? 'csv' : 'plain') + ';charset=utf-8,' + ((defaults.type == 'csv' && defaults.csvUseBOM)? '\ufeff' : ''),
 
-                         csvData);
 
-                 }
 
-             } else if (defaults.type == 'sql') {
 
-                 // Header
 
-                 rowIndex = 0;
 
-                 var tdData = "INSERT INTO `" + defaults.tableName + "` (";
 
-                 $hrows = $(el).find('thead').first().find(defaults.theadSelector);
 
-                 $hrows.each(function () {
 
-                     ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,
 
-                         function (cell, row, col) {
 
-                             tdData += "'" + parseString(cell, row, col) + "',";
 
-                         });
 
-                     rowIndex++;
 
-                     tdData = $.trim(tdData);
 
-                     tdData = $.trim(tdData).substring(0, tdData.length - 1);
 
-                 });
 
-                 tdData += ") VALUES ";
 
-                 // Row vs Column
 
-                 $(el).find('tbody').each(function() {
 
-                     $rows.push.apply ($rows, $(this).find(defaults.tbodySelector));
 
-                 });
 
-                 if (defaults.tfootSelector.length)
 
-                     $rows.push.apply ($rows, $(el).find('tfoot').find(defaults.tfootSelector));
 
-                 $($rows).each(function () {
 
-                     trData = "";
 
-                     ForEachVisibleCell(this, 'td', rowIndex, $hrows.length + $rows.length,
 
-                         function (cell, row, col) {
 
-                             trData += "'" + parseString(cell, row, col) + "',";
 
-                         });
 
-                     if (trData.length > 3) {
 
-                         tdData += "(" + trData;
 
-                         tdData = $.trim(tdData).substring(0, tdData.length - 1);
 
-                         tdData += "),";
 
-                     }
 
-                     rowIndex++;
 
-                 });
 
-                 tdData = $.trim(tdData).substring(0, tdData.length - 1);
 
-                 tdData += ";";
 
-                 //output
 
-                 if (defaults.consoleLog === true)
 
-                     console.log(tdData);
 
-                 if (defaults.outputMode === 'string')
 
-                     return tdData;
 
-                 if (defaults.outputMode === 'base64')
 
-                     return base64encode(tdData);
 
-                 try {
 
-                     blob = new Blob([tdData], {type: "text/plain;charset=utf-8"});
 
-                     saveAs(blob, defaults.fileName + '.sql');
 
-                 }
 
-                 catch (e) {
 
-                     downloadFile(defaults.fileName + '.sql',
 
-                         'data:application/sql;charset=utf-8,',
 
-                         tdData);
 
-                 }
 
-             } else if (defaults.type == 'json') {
 
-                 var jsonHeaderArray = [];
 
-                 $hrows = $(el).find('thead').first().find(defaults.theadSelector);
 
-                 $hrows.each(function () {
 
-                     var jsonArrayTd = [];
 
-                     ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,
 
-                         function (cell, row, col) {
 
-                             jsonArrayTd.push(parseString(cell, row, col));
 
-                         });
 
-                     jsonHeaderArray.push(jsonArrayTd);
 
-                 });
 
-                 var jsonArray = [];
 
-                 $(el).find('tbody').each(function() {
 
-                     $rows.push.apply ($rows, $(this).find(defaults.tbodySelector));
 
-                 });
 
-                 if (defaults.tfootSelector.length)
 
-                     $rows.push.apply ($rows, $(el).find('tfoot').find(defaults.tfootSelector));
 
-                 $($rows).each(function () {
 
-                     var jsonObjectTd = {};
 
-                     var colIndex = 0;
 
-                     ForEachVisibleCell(this, 'td', rowIndex, $hrows.length + $rows.length,
 
-                         function (cell, row, col) {
 
-                             if (jsonHeaderArray.length) {
 
-                                 jsonObjectTd[jsonHeaderArray[jsonHeaderArray.length-1][colIndex]] = parseString(cell, row, col);
 
-                             } else {
 
-                                 jsonObjectTd[colIndex] = parseString(cell, row, col);
 
-                             }
 
-                             colIndex++;
 
-                         });
 
-                     if ($.isEmptyObject(jsonObjectTd) === false)
 
-                         jsonArray.push(jsonObjectTd);
 
-                     rowIndex++;
 
-                 });
 
-                 var sdata = "";
 
-                 if (defaults.jsonScope == 'head')
 
-                     sdata = JSON.stringify(jsonHeaderArray);
 
-                 else if (defaults.jsonScope == 'data')
 
-                     sdata = JSON.stringify(jsonArray);
 
-                 else // all
 
-                     sdata = JSON.stringify({header: jsonHeaderArray, data: jsonArray});
 
-                 if (defaults.consoleLog === true)
 
-                     console.log(sdata);
 
-                 if (defaults.outputMode === 'string')
 
-                     return sdata;
 
-                 if (defaults.outputMode === 'base64')
 
-                     return base64encode(sdata);
 
-                 try {
 
-                     blob = new Blob([sdata], {type: "application/json;charset=utf-8"});
 
-                     saveAs(blob, defaults.fileName + '.json');
 
-                 }
 
-                 catch (e) {
 
-                     downloadFile(defaults.fileName + '.json',
 
-                         'data:application/json;charset=utf-8;base64,',
 
-                         sdata);
 
-                 }
 
-             } else if (defaults.type === 'xml') {
 
-                 rowIndex = 0;
 
-                 var xml = '<?xml version="1.0" encoding="utf-8"?>';
 
-                 xml += '<tabledata><fields>';
 
-                 // Header
 
-                 $hrows = $(el).find('thead').first().find(defaults.theadSelector);
 
-                 $hrows.each(function () {
 
-                     ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,
 
-                         function (cell, row, col) {
 
-                             xml += "<field>" + parseString(cell, row, col) + "</field>";
 
-                         });
 
-                     rowIndex++;
 
-                 });
 
-                 xml += '</fields><data>';
 
-                 // Row Vs Column
 
-                 var rowCount = 1;
 
-                 $(el).find('tbody').each(function() {
 
-                     $rows.push.apply ($rows, $(this).find(defaults.tbodySelector));
 
-                 });
 
-                 if (defaults.tfootSelector.length)
 
-                     $rows.push.apply ($rows, $(el).find('tfoot').find(defaults.tfootSelector));
 
-                 $($rows).each(function () {
 
-                     var colCount = 1;
 
-                     trData = "";
 
-                     ForEachVisibleCell(this, 'td', rowIndex, $hrows.length + $rows.length,
 
-                         function (cell, row, col) {
 
-                             trData += "<column-" + colCount + ">" + parseString(cell, row, col) + "</column-" + colCount + ">";
 
-                             colCount++;
 
-                         });
 
-                     if (trData.length > 0 && trData != "<column-1></column-1>") {
 
-                         xml += '<row id="' + rowCount + '">' + trData + '</row>';
 
-                         rowCount++;
 
-                     }
 
-                     rowIndex++;
 
-                 });
 
-                 xml += '</data></tabledata>';
 
-                 //output
 
-                 if (defaults.consoleLog === true)
 
-                     console.log(xml);
 
-                 if (defaults.outputMode === 'string')
 
-                     return xml;
 
-                 if (defaults.outputMode === 'base64')
 
-                     return base64encode(xml);
 
-                 try {
 
-                     blob = new Blob([xml], {type: "application/xml;charset=utf-8"});
 
-                     saveAs(blob, defaults.fileName + '.xml');
 
-                 }
 
-                 catch (e) {
 
-                     downloadFile(defaults.fileName + '.xml',
 
-                         'data:application/xml;charset=utf-8;base64,',
 
-                         xml);
 
-                 }
 
-             } else if (defaults.type == 'excel' || defaults.type == 'xls' || defaults.type == 'word' || defaults.type == 'doc') {
 
-                 var MSDocType = (defaults.type == 'excel' || defaults.type == 'xls') ? 'excel' : 'word';
 
-                 var MSDocExt = (MSDocType == 'excel') ? 'xls' : 'doc';
 
-                 var MSDocSchema = 'xmlns:x="urn:schemas-microsoft-com:office:' + MSDocType + '"';
 
-                 var $tables = $(el).filter(function() {
 
-                     return $(this).data("tableexport-display") != 'none' &&
 
-                         ($(this).is(':visible') ||
 
-                         $(this).data("tableexport-display") == 'always');
 
-                 });
 
-                 var docData = '';
 
-                 $tables.each(function(){
 
-                     var $table = $(this);
 
-                     rowIndex = 0;
 
-                     colNames = GetColumnNames (this);
 
-                     docData += '<table><thead>';
 
-                     // Header
 
-                     $hrows = $table.find('thead').first().find(defaults.theadSelector);
 
-                     $hrows.each(function() {
 
-                         trData = "";
 
-                         ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,
 
-                             function(cell, row, col) {
 
-                                 if (cell !== null) {
 
-                                     var thstyle = '';
 
-                                     trData += '<th';
 
-                                     for (var styles in defaults.excelstyles) {
 
-                                         if (defaults.excelstyles.hasOwnProperty(styles)) {
 
-                                             var thcss = $(cell).css(defaults.excelstyles[styles]);
 
-                                             if (thcss !== '' && thcss !='0px none rgb(0, 0, 0)') {
 
-                                                 if (thstyle === '')
 
-                                                     thstyle = 'style="';
 
-                                                 thstyle += defaults.excelstyles[styles] + ':' + thcss + ';';
 
-                                             }
 
-                                         }
 
-                                     }
 
-                                     if (thstyle !== '' )
 
-                                         trData += ' ' + thstyle + '"';
 
-                                     if ($(cell).is("[colspan]"))
 
-                                         trData += ' colspan="' + $(cell).attr('colspan') + '"';
 
-                                     if ($(cell).is("[rowspan]"))
 
-                                         trData += ' rowspan="' + $(cell).attr('rowspan') + '"';
 
-                                     trData += '>' + parseString(cell, row, col) + '</th>';
 
-                                 }
 
-                             });
 
-                         if (trData.length > 0)
 
-                             docData += '<tr>' + trData + '</tr>';
 
-                         rowIndex++;
 
-                     });
 
-                     docData += '</thead><tbody>';
 
-                     // Row Vs Column, support multiple tbodys
 
-                     $table.find('tbody').each(function() {
 
-                         $rows.push.apply ($rows, $(this).find(defaults.tbodySelector));
 
-                     });
 
-                     if (defaults.tfootSelector.length)
 
-                         $rows.push.apply ($rows, $table.find('tfoot').find(defaults.tfootSelector));
 
-                     $($rows).each(function() {
 
-                         var $row = $(this);
 
-                         trData = "";
 
-                         ForEachVisibleCell(this, 'td', rowIndex, $hrows.length + $rows.length,
 
-                             function(cell, row, col) {
 
-                                 if (cell !== null) {
 
-                                     var tdstyle = '';
 
-                                     var tdcss = $(cell).data("tableexport-msonumberformat");
 
-                                     if (typeof tdcss == 'undefined' && typeof defaults.onMsoNumberFormat === 'function')
 
-                                         tdcss = defaults.onMsoNumberFormat(cell, row, col);
 
-                                     if (typeof tdcss != 'undefined' && tdcss !== '') {
 
-                                         if (tdstyle === '')
 
-                                             tdstyle = 'style="';
 
-                                         tdstyle = 'style="mso-number-format:\'' + tdcss + '\'';
 
-                                     }
 
-                                     trData += '<td';
 
-                                     for (var cssStyle in defaults.excelstyles) {
 
-                                         if (defaults.excelstyles.hasOwnProperty(cssStyle)) {
 
-                                             tdcss = $(cell).css(defaults.excelstyles[cssStyle]);
 
-                                             if (tdcss === '')
 
-                                                 tdcss = $row.css(defaults.excelstyles[cssStyle]);
 
-                                             if (tdcss !== '' && tdcss !='0px none rgb(0, 0, 0)' && tdcss != 'rgba(0, 0, 0, 0)') {
 
-                                                 if (tdstyle === '')
 
-                                                     tdstyle = 'style="';
 
-                                                 tdstyle += defaults.excelstyles[cssStyle] + ':' + tdcss + ';';
 
-                                             }
 
-                                         }
 
-                                     }
 
-                                     if (tdstyle !== '' )
 
-                                         trData += ' ' + tdstyle + '"';
 
-                                     if ($(cell).is("[colspan]"))
 
-                                         trData += ' colspan="' + $(cell).attr('colspan') + '"';
 
-                                     if ($(cell).is("[rowspan]"))
 
-                                         trData += ' rowspan="' + $(cell).attr('rowspan') + '"';
 
-                                     trData += '>' + parseString(cell, row, col) + '</td>';
 
-                                 }
 
-                             });
 
-                         if (trData.length > 0)
 
-                             docData += '<tr>' + trData + '</tr>';
 
-                         rowIndex++;
 
-                     });
 
-                     if (defaults.displayTableName)
 
-                         docData += '<tr><td></td></tr><tr><td></td></tr><tr><td>' + parseString($('<p>' + defaults.tableName + '</p>')) + '</td></tr>';
 
-                     docData += '</tbody></table>';
 
-                     if (defaults.consoleLog === true)
 
-                         console.log(docData);
 
-                 });
 
-                 var docFile = '<html xmlns:o="urn:schemas-microsoft-com:office:office" ' + MSDocSchema + ' xmlns="http://www.w3.org/TR/REC-html40">';
 
-                 docFile += '<meta http-equiv="content-type" content="application/vnd.ms-' + MSDocType + '; charset=UTF-8">';
 
-                 docFile += "<head>";
 
-                 if (MSDocType === 'excel') {
 
-                     docFile += "<!--[if gte mso 9]>";
 
-                     docFile += "<xml>";
 
-                     docFile += "<x:ExcelWorkbook>";
 
-                     docFile += "<x:ExcelWorksheets>";
 
-                     docFile += "<x:ExcelWorksheet>";
 
-                     docFile += "<x:Name>";
 
-                     docFile += defaults.worksheetName;
 
-                     docFile += "</x:Name>";
 
-                     docFile += "<x:WorksheetOptions>";
 
-                     docFile += "<x:DisplayGridlines/>";
 
-                     docFile += "</x:WorksheetOptions>";
 
-                     docFile += "</x:ExcelWorksheet>";
 
-                     docFile += "</x:ExcelWorksheets>";
 
-                     docFile += "</x:ExcelWorkbook>";
 
-                     docFile += "</xml>";
 
-                     docFile += "<![endif]-->";
 
-                 }
 
-                 docFile += "</head>";
 
-                 docFile += "<body>";
 
-                 docFile += docData;
 
-                 docFile += "</body>";
 
-                 docFile += "</html>";
 
-                 if (defaults.consoleLog === true)
 
-                     console.log(docFile);
 
-                 if (defaults.outputMode === 'string')
 
-                     return docFile;
 
-                 if (defaults.outputMode === 'base64')
 
-                     return base64encode(docFile);
 
-                 try {
 
-                     blob = new Blob([docFile], {type: 'application/vnd.ms-' + defaults.type});
 
-                     saveAs(blob, defaults.fileName + '.' + MSDocExt);
 
-                 }
 
-                 catch (e) {
 
-                     downloadFile(defaults.fileName + '.' + MSDocExt,
 
-                         'data:application/vnd.ms-' + MSDocType + ';base64,',
 
-                         docFile);
 
-                 }
 
-             } else if (defaults.type == 'xlsx') {
 
-                 var data = [];
 
-                 var ranges = [];
 
-                 rowIndex = 0;
 
-                 $rows = $(el).find('thead').first().find(defaults.theadSelector);
 
-                 $(el).find('tbody').each(function() {
 
-                     $rows.push.apply ($rows, $(this).find(defaults.tbodySelector));
 
-                 });
 
-                 if (defaults.tfootSelector.length)
 
-                     $rows.push.apply ($rows, $(el).find('tfoot').find(defaults.tfootSelector));
 
-                 $($rows).each(function () {
 
-                     var cols = [];
 
-                     ForEachVisibleCell(this, 'th,td', rowIndex, $rows.length,
 
-                         function (cell, row, col) {
 
-                             if (typeof cell !== 'undefined' && cell !== null) {
 
-                                 var colspan = cell.getAttribute('colspan');
 
-                                 var rowspan = cell.getAttribute('rowspan');
 
-                                 var cellValue = parseString(cell, row, col);
 
-                                 if(cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
 
-                                 //Skip ranges
 
-                                 ranges.forEach(function(range) {
 
-                                     if(rowIndex >= range.s.r && rowIndex <= range.e.r && cols.length >= range.s.c && cols.length <= range.e.c) {
 
-                                         for(var i = 0; i <= range.e.c - range.s.c; ++i) cols.push(null);
 
-                                     }
 
-                                 });
 
-                                 //Handle Row Span
 
-                                 if (rowspan || colspan) {
 
-                                     rowspan = rowspan || 1;
 
-                                     colspan = colspan || 1;
 
-                                     ranges.push({s:{r:rowIndex, c:cols.length},e:{r:rowIndex+rowspan-1, c:cols.length+colspan-1}});
 
-                                 }
 
-                                 //Handle Value
 
-                                 cols.push(cellValue !== "" ? cellValue : null);
 
-                                 //Handle Colspan
 
-                                 if (colspan) for (var k = 0; k < colspan - 1; ++k) cols.push(null);
 
-                             }
 
-                         });
 
-                     data.push(cols);
 
-                     rowIndex++;
 
-                 });
 
-                 var wb = new jx_Workbook(),
 
-                     ws = jx_createSheet(data);
 
-                 // add ranges to worksheet
 
-                 ws['!merges'] = ranges;
 
-                 // add worksheet to workbook
 
-                 wb.SheetNames.push(defaults.worksheetName);
 
-                 wb.Sheets[defaults.worksheetName] = ws;
 
-                 var wbout = XLSX.write(wb, {bookType: defaults.type, bookSST: false, type: 'binary'});
 
-                 try {
 
-                     blob = new Blob([jx_s2ab(wbout)], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8'});
 
-                     saveAs(blob, defaults.fileName + '.' + defaults.type);
 
-                 }
 
-                 catch (e) {
 
-                     downloadFile(defaults.fileName + '.' + defaults.type,
 
-                         'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',
 
-                         data);
 
-                 }
 
-             } else if (defaults.type == 'png') {
 
-                 //html2canvas($(el)[0], {
 
-                 //  onrendered: function (canvas) {
 
-                 html2canvas($(el)[0]).then(
 
-                     function (canvas) {
 
-                         var image = canvas.toDataURL();
 
-                         image = image.substring(22); // remove data stuff
 
-                         var byteString = atob(image);
 
-                         var buffer = new ArrayBuffer(byteString.length);
 
-                         var intArray = new Uint8Array(buffer);
 
-                         for (var i = 0; i < byteString.length; i++)
 
-                             intArray[i] = byteString.charCodeAt(i);
 
-                         if (defaults.consoleLog === true)
 
-                             console.log(byteString);
 
-                         if (defaults.outputMode === 'string')
 
-                             return byteString;
 
-                         if (defaults.outputMode === 'base64')
 
-                             return base64encode(image);
 
-                         try {
 
-                             blob = new Blob([buffer], {type: "image/png"});
 
-                             saveAs(blob, defaults.fileName + '.png');
 
-                         }
 
-                         catch (e) {
 
-                             downloadFile(defaults.fileName + '.png',
 
-                                 'data:image/png,',
 
-                                 image);
 
-                         }
 
-                         //}
 
-                     });
 
-             } else if (defaults.type == 'pdf') {
 
-                 if (defaults.pdfmake.enabled === true) {
 
-                     // pdf output using pdfmake
 
-                     // https://github.com/bpampuch/pdfmake
 
-                     var widths = [];
 
-                     var body = [];
 
-                     rowIndex = 0;
 
-                     $hrows = $(this).find('thead').first().find(defaults.theadSelector);
 
-                     $hrows.each(function () {
 
-                         var h = [];
 
-                         ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,
 
-                             function (cell, row, col) {
 
-                                 h.push(parseString(cell, row, col));
 
-                             });
 
-                         if (h.length)
 
-                             body.push(h);
 
-                         for(var i = widths.length; i < h.length;i++)
 
-                             widths.push("*");
 
-                         rowIndex++;
 
-                     });
 
-                     $(this).find('tbody').each(function() {
 
-                         $rows.push.apply ($rows, $(this).find(defaults.tbodySelector));
 
-                     });
 
-                     if (defaults.tfootSelector.length)
 
-                         $rows.push.apply ($rows, $(this).find('tfoot').find(defaults.tfootSelector));
 
-                     $($rows).each(function () {
 
-                         var r = [];
 
-                         ForEachVisibleCell(this, 'td', rowIndex, $hrows.length + $rows.length,
 
-                             function (cell, row, col) {
 
-                                 r.push(parseString(cell, row, col));
 
-                             });
 
-                         if (r.length)
 
-                             body.push(r);
 
-                         rowIndex++;
 
-                     });
 
-                     var docDefinition = {
 
-                         pageOrientation: 'landscape',
 
-                         content: [
 
-                             {
 
-                                 table: {
 
-                                     headerRows: $hrows.length,
 
-                                     widths: widths,
 
-                                     body: body
 
-                                 }
 
-                             }
 
-                         ]
 
-                     };
 
-                     pdfMake.createPdf(docDefinition).getBuffer(function (buffer) {
 
-                         try {
 
-                             var blob = new Blob([buffer], {type: "application/pdf"});
 
-                             saveAs(blob, defaults.fileName + '.pdf');
 
-                         }
 
-                         catch (e) {
 
-                             downloadFile(defaults.fileName + '.pdf',
 
-                                 'data:application/pdf;base64,',
 
-                                 buffer);
 
-                         }
 
-                     });
 
-                 }
 
-                 else if (defaults.jspdf.autotable === false) {
 
-                     // pdf output using jsPDF's core html support
 
-                     var addHtmlOptions = {
 
-                         dim: {
 
-                             w: getPropertyUnitValue($(el).first().get(0), 'width', 'mm'),
 
-                             h: getPropertyUnitValue($(el).first().get(0), 'height', 'mm')
 
-                         },
 
-                         pagesplit: false
 
-                     };
 
-                     var doc = new jsPDF(defaults.jspdf.orientation, defaults.jspdf.unit, defaults.jspdf.format);
 
-                     doc.addHTML($(el).first(),
 
-                         defaults.jspdf.margins.left,
 
-                         defaults.jspdf.margins.top,
 
-                         addHtmlOptions,
 
-                         function () {
 
-                             jsPdfOutput(doc);
 
-                         });
 
-                     //delete doc;
 
-                 }
 
-                 else {
 
-                     // pdf output using jsPDF AutoTable plugin
 
-                     // https://github.com/simonbengtsson/jsPDF-AutoTable
 
-                     var teOptions = defaults.jspdf.autotable.tableExport;
 
-                     // When setting jspdf.format to 'bestfit' tableExport tries to choose
 
-                     // the minimum required paper format and orientation in which the table
 
-                     // (or tables in multitable mode) completely fits without column adjustment
 
-                     if (typeof defaults.jspdf.format === 'string' && defaults.jspdf.format.toLowerCase() === 'bestfit') {
 
-                         var pageFormats = {
 
-                             'a0': [2383.94, 3370.39], 'a1': [1683.78, 2383.94],
 
-                             'a2': [1190.55, 1683.78], 'a3': [841.89, 1190.55],
 
-                             'a4': [595.28, 841.89]
 
-                         };
 
-                         var rk = '', ro = '';
 
-                         var mw = 0;
 
-                         $(el).filter(':visible').each(function () {
 
-                             if ($(this).css('display') != 'none') {
 
-                                 var w = getPropertyUnitValue($(this).get(0), 'width', 'pt');
 
-                                 if (w > mw) {
 
-                                     if (w > pageFormats.a0[0]) {
 
-                                         rk = 'a0';
 
-                                         ro = 'l';
 
-                                     }
 
-                                     for (var key in pageFormats) {
 
-                                         if (pageFormats.hasOwnProperty(key)) {
 
-                                             if (pageFormats[key][1] > w) {
 
-                                                 rk = key;
 
-                                                 ro = 'l';
 
-                                                 if (pageFormats[key][0] > w)
 
-                                                     ro = 'p';
 
-                                             }
 
-                                         }
 
-                                     }
 
-                                     mw = w;
 
-                                 }
 
-                             }
 
-                         });
 
-                         defaults.jspdf.format = (rk === '' ? 'a4' : rk);
 
-                         defaults.jspdf.orientation = (ro === '' ? 'w' : ro);
 
-                     }
 
-                     // The jsPDF doc object is stored in defaults.jspdf.autotable.tableExport,
 
-                     // thus it can be accessed from any callback function
 
-                     teOptions.doc = new jsPDF(defaults.jspdf.orientation,
 
-                         defaults.jspdf.unit,
 
-                         defaults.jspdf.format);
 
-                     if (teOptions.outputImages === true)
 
-                         teOptions.images = {};
 
-                     if (typeof teOptions.images != 'undefined') {
 
-                         $(el).filter(function() {
 
-                             return $(this).data("tableexport-display") != 'none' &&
 
-                                 ($(this).is(':visible') ||
 
-                                 $(this).data("tableexport-display") == 'always');
 
-                         }).each(function () {
 
-                             var rowCount = 0;
 
-                             $hrows = $(this).find('thead').find(defaults.theadSelector);
 
-                             $(this).find('tbody').each(function() {
 
-                                 $rows.push.apply ($rows, $(this).find(defaults.tbodySelector));
 
-                             });
 
-                             if (defaults.tfootSelector.length)
 
-                                 $rows.push.apply ($rows, $(this).find('tfoot').find(defaults.tfootSelector));
 
-                             $($rows).each(function () {
 
-                                 ForEachVisibleCell(this, 'td', $hrows.length + rowCount, $hrows.length + $rows.length,
 
-                                     function (cell, row, col) {
 
-                                         if (typeof cell !== 'undefined' && cell !== null) {
 
-                                             var kids = $(cell).children();
 
-                                             if (typeof kids != 'undefined' && kids.length > 0)
 
-                                                 collectImages (cell, kids, teOptions);
 
-                                         }
 
-                                     });
 
-                                 rowCount++;
 
-                             });
 
-                         });
 
-                         $hrows = [];
 
-                         $rows = [];
 
-                     }
 
-                     loadImages ( teOptions, function (imageCount) {
 
-                         $(el).filter(function() {
 
-                             return $(this).data("tableexport-display") != 'none' &&
 
-                                 ($(this).is(':visible') ||
 
-                                 $(this).data("tableexport-display") == 'always');
 
-                         }).each(function () {
 
-                             var colKey;
 
-                             var rowIndex = 0;
 
-                             colNames = GetColumnNames (this);
 
-                             teOptions.columns = [];
 
-                             teOptions.rows = [];
 
-                             teOptions.rowoptions = {};
 
-                             // onTable: optional callback function for every matching table that can be used
 
-                             // to modify the tableExport options or to skip the output of a particular table
 
-                             // if the table selector targets multiple tables
 
-                             if (typeof teOptions.onTable === 'function')
 
-                                 if (teOptions.onTable($(this), defaults) === false)
 
-                                     return true; // continue to next iteration step (table)
 
-                             // each table works with an own copy of AutoTable options
 
-                             defaults.jspdf.autotable.tableExport = null;  // avoid deep recursion error
 
-                             var atOptions = $.extend(true, {}, defaults.jspdf.autotable);
 
-                             defaults.jspdf.autotable.tableExport = teOptions;
 
-                             atOptions.margin = {};
 
-                             $.extend(true, atOptions.margin, defaults.jspdf.margins);
 
-                             atOptions.tableExport = teOptions;
 
-                             // Fix jsPDF Autotable's row height calculation
 
-                             if (typeof atOptions.beforePageContent !== 'function') {
 
-                                 atOptions.beforePageContent = function (data) {
 
-                                     if (data.pageCount == 1) {
 
-                                         var all = data.table.rows.concat(data.table.headerRow);
 
-                                         all.forEach(function (row) {
 
-                                             if ( row.height > 0 ) {
 
-                                                 row.height += (2 - FONT_ROW_RATIO) / 2 * row.styles.fontSize;
 
-                                                 data.table.height += (2 - FONT_ROW_RATIO) / 2 * row.styles.fontSize;
 
-                                             }
 
-                                         });
 
-                                     }
 
-                                 };
 
-                             }
 
-                             if (typeof atOptions.createdHeaderCell !== 'function') {
 
-                                 // apply some original css styles to pdf header cells
 
-                                 atOptions.createdHeaderCell = function (cell, data) {
 
-                                     // jsPDF AutoTable plugin v2.0.14 fix: each cell needs its own styles object
 
-                                     cell.styles = $.extend({}, data.row.styles);
 
-                                     if (typeof teOptions.columns [data.column.dataKey] != 'undefined') {
 
-                                         var col = teOptions.columns [data.column.dataKey];
 
-                                         if (typeof col.rect != 'undefined') {
 
-                                             var rh;
 
-                                             cell.contentWidth = col.rect.width;
 
-                                             if (typeof teOptions.heightRatio == 'undefined' || teOptions.heightRatio === 0) {
 
-                                                 if (data.row.raw [data.column.dataKey].rowspan)
 
-                                                     rh = data.row.raw [data.column.dataKey].rect.height / data.row.raw [data.column.dataKey].rowspan;
 
-                                                 else
 
-                                                     rh = data.row.raw [data.column.dataKey].rect.height;
 
-                                                 teOptions.heightRatio = cell.styles.rowHeight / rh;
 
-                                             }
 
-                                             rh = data.row.raw [data.column.dataKey].rect.height * teOptions.heightRatio;
 
-                                             if (rh > cell.styles.rowHeight)
 
-                                                 cell.styles.rowHeight = rh;
 
-                                         }
 
-                                         if (typeof col.style != 'undefined' && col.style.hidden !== true) {
 
-                                             cell.styles.halign = col.style.align;
 
-                                             if (atOptions.styles.fillColor === 'inherit')
 
-                                                 cell.styles.fillColor = col.style.bcolor;
 
-                                             if (atOptions.styles.textColor === 'inherit')
 
-                                                 cell.styles.textColor = col.style.color;
 
-                                             if (atOptions.styles.fontStyle === 'inherit')
 
-                                                 cell.styles.fontStyle = col.style.fstyle;
 
-                                         }
 
-                                     }
 
-                                 };
 
-                             }
 
-                             if (typeof atOptions.createdCell !== 'function') {
 
-                                 // apply some original css styles to pdf table cells
 
-                                 atOptions.createdCell = function (cell, data) {
 
-                                     var rowopt = teOptions.rowoptions [data.row.index + ":" + data.column.dataKey];
 
-                                     if (typeof rowopt != 'undefined' &&
 
-                                         typeof rowopt.style != 'undefined' &&
 
-                                         rowopt.style.hidden !== true) {
 
-                                         cell.styles.halign = rowopt.style.align;
 
-                                         if (atOptions.styles.fillColor === 'inherit')
 
-                                             cell.styles.fillColor = rowopt.style.bcolor;
 
-                                         if (atOptions.styles.textColor === 'inherit')
 
-                                             cell.styles.textColor = rowopt.style.color;
 
-                                         if (atOptions.styles.fontStyle === 'inherit')
 
-                                             cell.styles.fontStyle = rowopt.style.fstyle;
 
-                                     }
 
-                                 };
 
-                             }
 
-                             if (typeof atOptions.drawHeaderCell !== 'function') {
 
-                                 atOptions.drawHeaderCell = function (cell, data) {
 
-                                     var colopt = teOptions.columns [data.column.dataKey];
 
-                                     if ((colopt.style.hasOwnProperty("hidden") !== true || colopt.style.hidden !== true) &&
 
-                                         colopt.rowIndex >= 0 )
 
-                                         return prepareAutoTableText (cell, data, colopt);
 
-                                     else
 
-                                         return false; // cell is hidden
 
-                                 };
 
-                             }
 
-                             if (typeof atOptions.drawCell !== 'function') {
 
-                                 atOptions.drawCell = function (cell, data) {
 
-                                     var rowopt = teOptions.rowoptions [data.row.index + ":" + data.column.dataKey];
 
-                                     if ( prepareAutoTableText (cell, data, rowopt) ) {
 
-                                         teOptions.doc.rect(cell.x, cell.y, cell.width, cell.height, cell.styles.fillStyle);
 
-                                         if (typeof rowopt != 'undefined' && typeof rowopt.kids != 'undefined' && rowopt.kids.length > 0) {
 
-                                             var dh = cell.height / rowopt.rect.height;
 
-                                             if ( dh > teOptions.dh || typeof teOptions.dh == 'undefined' )
 
-                                                 teOptions.dh = dh;
 
-                                             teOptions.dw = cell.width / rowopt.rect.width;
 
-                                             drawCellElements (cell, rowopt.kids, teOptions);
 
-                                         }
 
-                                         teOptions.doc.autoTableText(cell.text, cell.textPos.x, cell.textPos.y, {
 
-                                             halign: cell.styles.halign,
 
-                                             valign: cell.styles.valign
 
-                                         });
 
-                                     }
 
-                                     return false;
 
-                                 };
 
-                             }
 
-                             // collect header and data rows
 
-                             teOptions.headerrows = [];
 
-                             $hrows = $(this).find('thead').find(defaults.theadSelector);
 
-                             $hrows.each(function () {
 
-                                 colKey = 0;
 
-                                 teOptions.headerrows[rowIndex] = [];
 
-                                 ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,
 
-                                     function (cell, row, col) {
 
-                                         var obj = getCellStyles (cell);
 
-                                         obj.title = parseString(cell, row, col);
 
-                                         obj.key = colKey++;
 
-                                         obj.rowIndex = rowIndex;
 
-                                         teOptions.headerrows[rowIndex].push(obj);
 
-                                     });
 
-                                 rowIndex++;
 
-                             });
 
-                             if (rowIndex > 0) {
 
-                                 // iterate through last row
 
-                                 $.each(teOptions.headerrows[rowIndex-1], function () {
 
-                                     var obj = this;
 
-                                     if (rowIndex > 1 && this.rect === null)
 
-                                         obj = teOptions.headerrows[rowIndex-2][this.key];
 
-                                     if (obj !== null)
 
-                                         teOptions.columns.push(obj);
 
-                                 });
 
-                             }
 
-                             var rowCount = 0;
 
-                             $rows = [];
 
-                             $(this).find('tbody').each(function() {
 
-                                 $rows.push.apply ($rows, $(this).find(defaults.tbodySelector));
 
-                             });
 
-                             if (defaults.tfootSelector.length)
 
-                                 $rows.push.apply ($rows, $(this).find('tfoot').find(defaults.tfootSelector));
 
-                             $($rows).each(function () {
 
-                                 var rowData = [];
 
-                                 colKey = 0;
 
-                                 ForEachVisibleCell(this, 'td', rowIndex, $hrows.length + $rows.length,
 
-                                     function (cell, row, col) {
 
-                                         if (typeof teOptions.columns[colKey] === 'undefined') {
 
-                                             // jsPDF-Autotable needs columns. Thus define hidden ones for tables without thead
 
-                                             var obj = {
 
-                                                 title: '',
 
-                                                 key: colKey,
 
-                                                 style: {
 
-                                                     hidden: true
 
-                                                 }
 
-                                             };
 
-                                             teOptions.columns.push(obj);
 
-                                         }
 
-                                         if (typeof cell !== 'undefined' && cell !== null) {
 
-                                             var obj = getCellStyles (cell);
 
-                                             obj.kids = $(cell).children();
 
-                                             teOptions.rowoptions [rowCount + ":" + colKey++] = obj;
 
-                                         }
 
-                                         else {
 
-                                             var obj = $.extend(true, {}, teOptions.rowoptions [rowCount + ":" + (colKey-1)]);
 
-                                             obj.colspan = -1;
 
-                                             teOptions.rowoptions [rowCount + ":" + colKey++] = obj;
 
-                                         }
 
-                                         rowData.push(parseString(cell, row, col));
 
-                                     });
 
-                                 if (rowData.length) {
 
-                                     teOptions.rows.push(rowData);
 
-                                     rowCount++;
 
-                                 }
 
-                                 rowIndex++;
 
-                             });
 
-                             // onBeforeAutotable: optional callback function before calling
 
-                             // jsPDF AutoTable that can be used to modify the AutoTable options
 
-                             if (typeof teOptions.onBeforeAutotable === 'function')
 
-                                 teOptions.onBeforeAutotable($(this), teOptions.columns, teOptions.rows, atOptions);
 
-                             teOptions.doc.autoTable(teOptions.columns, teOptions.rows, atOptions);
 
-                             // onAfterAutotable: optional callback function after returning
 
-                             // from jsPDF AutoTable that can be used to modify the AutoTable options
 
-                             if (typeof teOptions.onAfterAutotable === 'function')
 
-                                 teOptions.onAfterAutotable($(this), atOptions);
 
-                             // set the start position for the next table (in case there is one)
 
-                             defaults.jspdf.autotable.startY = teOptions.doc.autoTableEndPosY() + atOptions.margin.top;
 
-                         });
 
-                         jsPdfOutput(teOptions.doc);
 
-                         if (typeof teOptions.headerrows != 'undefined')
 
-                             teOptions.headerrows.length = 0;
 
-                         if (typeof teOptions.columns != 'undefined')
 
-                             teOptions.columns.length = 0;
 
-                         if (typeof teOptions.rows != 'undefined')
 
-                             teOptions.rows.length = 0;
 
-                         delete teOptions.doc;
 
-                         teOptions.doc = null;
 
-                     });
 
-                 }
 
-             }
 
-             function FindColObject (objects, colIndex, rowIndex) {
 
-                 var result = null;
 
-                 $.each(objects, function () {
 
-                     if (this.rowIndex == rowIndex && this.key == colIndex) {
 
-                         result = this;
 
-                         return false;
 
-                     }
 
-                 });
 
-                 return result;
 
-             }
 
-             function GetColumnNames (table) {
 
-                 var result = [];
 
-                 $(table).find('thead').first().find('th').each(function(index, el) {
 
-                     if ($(el).attr("data-field") !== undefined)
 
-                         result[index] = $(el).attr("data-field");
 
-                     else
 
-                         result[index] = index.toString();
 
-                 });
 
-                 return result;
 
-             }
 
-             function isColumnIgnored($row, colIndex) {
 
-                 var result = false;
 
-                 if (defaults.ignoreColumn.length > 0) {
 
-                     if (typeof defaults.ignoreColumn[0] == 'string') {
 
-                         if (colNames.length > colIndex && typeof colNames[colIndex] != 'undefined')
 
-                             if ($.inArray(colNames[colIndex], defaults.ignoreColumn) != -1)
 
-                                 result = true;
 
-                     }
 
-                     else if (typeof defaults.ignoreColumn[0] == 'number') {
 
-                         if ($.inArray(colIndex, defaults.ignoreColumn) != -1 ||
 
-                             $.inArray(colIndex-$row.length, defaults.ignoreColumn) != -1)
 
-                             result = true;
 
-                     }
 
-                 }
 
-                 return result;
 
-             }
 
-             function ForEachVisibleCell(tableRow, selector, rowIndex, rowCount, cellcallback) {
 
-                 if ($.inArray(rowIndex, defaults.ignoreRow) == -1 &&
 
-                     $.inArray(rowIndex-rowCount, defaults.ignoreRow) == -1) {
 
-                     var $row = $(tableRow).filter(function() {
 
-                         return $(this).data("tableexport-display") != 'none' &&
 
-                             ($(this).is(':visible') ||
 
-                             $(this).data("tableexport-display") == 'always' ||
 
-                             $(this).closest('table').data("tableexport-display") == 'always');
 
-                     }).find(selector);
 
-                     var rowColspan = 0;
 
-                     var rowColIndex = 0;
 
-                     $row.each(function (colIndex) {
 
-                         if ($(this).data("tableexport-display") == 'always' ||
 
-                             ($(this).css('display') != 'none' &&
 
-                             $(this).css('visibility') != 'hidden' &&
 
-                             $(this).data("tableexport-display") != 'none')) {
 
-                             if (isColumnIgnored($row, colIndex) === false) {
 
-                                 if (typeof (cellcallback) === "function") {
 
-                                     var c, Colspan = 0;
 
-                                     var r, Rowspan = 0;
 
-                                     // handle rowspans from previous rows
 
-                                     if (typeof rowspans[rowIndex] != 'undefined' && rowspans[rowIndex].length > 0) {
 
-                                         for (c = 0; c <= colIndex; c++) {
 
-                                             if (typeof rowspans[rowIndex][c] != 'undefined') {
 
-                                                 cellcallback(null, rowIndex, c);
 
-                                                 delete rowspans[rowIndex][c];
 
-                                                 colIndex++;
 
-                                             }
 
-                                         }
 
-                                     }
 
-                                     rowColIndex = colIndex;
 
-                                     if ($(this).is("[colspan]")) {
 
-                                         Colspan = parseInt($(this).attr('colspan'));
 
-                                         rowColspan += Colspan > 0 ? Colspan - 1 : 0;
 
-                                     }
 
-                                     if ($(this).is("[rowspan]"))
 
-                                         Rowspan = parseInt($(this).attr('rowspan'));
 
-                                     // output content of current cell
 
-                                     cellcallback(this, rowIndex, colIndex);
 
-                                     // handle colspan of current cell
 
-                                     for (c = 0; c < Colspan - 1; c++)
 
-                                         cellcallback(null, rowIndex, colIndex + c);
 
-                                     // store rowspan for following rows
 
-                                     if (Rowspan) {
 
-                                         for (r = 1; r < Rowspan; r++) {
 
-                                             if (typeof rowspans[rowIndex + r] == 'undefined')
 
-                                                 rowspans[rowIndex + r] = [];
 
-                                             rowspans[rowIndex + r][colIndex + rowColspan] = "";
 
-                                             for (c = 1; c < Colspan; c++)
 
-                                                 rowspans[rowIndex + r][colIndex + rowColspan - c] = "";
 
-                                         }
 
-                                     }
 
-                                 }
 
-                             }
 
-                         }
 
-                     });
 
-                     // handle rowspans from previous rows
 
-                     if (typeof rowspans[rowIndex] != 'undefined' && rowspans[rowIndex].length > 0) {
 
-                         for (var c = 0; c <= rowspans[rowIndex].length; c++) {
 
-                             if (typeof rowspans[rowIndex][c] != 'undefined') {
 
-                                 cellcallback(null, rowIndex, c);
 
-                                 delete rowspans[rowIndex][c];
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             function jsPdfOutput(doc) {
 
-                 if (defaults.consoleLog === true)
 
-                     console.log(doc.output());
 
-                 if (defaults.outputMode === 'string')
 
-                     return doc.output();
 
-                 if (defaults.outputMode === 'base64')
 
-                     return base64encode(doc.output());
 
-                 try {
 
-                     var blob = doc.output('blob');
 
-                     saveAs(blob, defaults.fileName + '.pdf');
 
-                 }
 
-                 catch (e) {
 
-                     downloadFile(defaults.fileName + '.pdf',
 
-                         'data:application/pdf;base64,',
 
-                         doc.output());
 
-                 }
 
-             }
 
-             function prepareAutoTableText (cell, data, cellopt) {
 
-                 var cs = 0;
 
-                 if ( typeof cellopt != 'undefined' )
 
-                     cs = cellopt.colspan;
 
-                 if ( cs >= 0 ) {
 
-                     // colspan handling
 
-                     var cellWidth = cell.width;
 
-                     var textPosX = cell.textPos.x;
 
-                     var i = data.table.columns.indexOf(data.column);
 
-                     for (var c = 1; c < cs; c++) {
 
-                         var column = data.table.columns[i+c];
 
-                         cellWidth += column.width;
 
-                     }
 
-                     if ( cs > 1 ) {
 
-                         if ( cell.styles.halign === 'right' )
 
-                             textPosX = cell.textPos.x + cellWidth - cell.width;
 
-                         else if ( cell.styles.halign === 'center' )
 
-                             textPosX = cell.textPos.x + (cellWidth - cell.width) / 2;
 
-                     }
 
-                     cell.width = cellWidth;
 
-                     cell.textPos.x = textPosX;
 
-                     if ( typeof cellopt != 'undefined' && cellopt.rowspan > 1 )
 
-                         cell.height = cell.height * cellopt.rowspan;
 
-                     // fix jsPDF's calculation of text position
 
-                     if ( cell.styles.valign === 'middle' || cell.styles.valign === 'bottom' ) {
 
-                         var splittedText = typeof cell.text === 'string' ? cell.text.split(/\r\n|\r|\n/g) : cell.text;
 
-                         var lineCount = splittedText.length || 1;
 
-                         if (lineCount > 2)
 
-                             cell.textPos.y -= ((2 - FONT_ROW_RATIO) / 2 * data.row.styles.fontSize) * (lineCount-2) / 3 ;
 
-                     }
 
-                     return true;
 
-                 }
 
-                 else
 
-                     return false; // cell is hidden (colspan = -1), don't draw it
 
-             }
 
-             function collectImages (cell, elements, teOptions) {
 
-                 if (typeof teOptions.images != 'undefined') {
 
-                     elements.each(function () {
 
-                         var kids = $(this).children();
 
-                         if ( $(this).is("img") ) {
 
-                             var hash = strHashCode(this.src);
 
-                             teOptions.images[hash] = { url: this.src,
 
-                                 src: this.src };
 
-                         }
 
-                         if (typeof kids != 'undefined' && kids.length > 0)
 
-                             collectImages (cell, kids, teOptions);
 
-                     });
 
-                 }
 
-             }
 
-             function loadImages (teOptions, callback) {
 
-                 var i;
 
-                 var imageCount = 0;
 
-                 var x = 0;
 
-                 function done() {
 
-                     callback(imageCount);
 
-                 }
 
-                 function loadImage(image) {
 
-                     if (!image.url)
 
-                         return;
 
-                     var img = new Image();
 
-                     imageCount = ++x;
 
-                     img.crossOrigin = 'Anonymous';
 
-                     img.onerror = img.onload = function () {
 
-                         if(img.complete) {
 
-                             if (img.src.indexOf('data:image/') === 0) {
 
-                                 img.width = image.width || img.width || 0;
 
-                                 img.height = image.height || img.height || 0;
 
-                             }
 
-                             if (img.width + img.height) {
 
-                                 var canvas = document.createElement("canvas");
 
-                                 var ctx = canvas.getContext("2d");
 
-                                 canvas.width = img.width;
 
-                                 canvas.height = img.height;
 
-                                 ctx.drawImage( img, 0, 0 );
 
-                                 image.src = canvas.toDataURL("image/jpeg");
 
-                             }
 
-                         }
 
-                         if(!--x)
 
-                             done();
 
-                     };
 
-                     img.src = image.url;
 
-                 }
 
-                 if (typeof teOptions.images != 'undefined') {
 
-                     for (i in teOptions.images)
 
-                         if (teOptions.images.hasOwnProperty(i))
 
-                             loadImage(teOptions.images[i]);
 
-                 }
 
-                 return x || done();
 
-             }
 
-             function drawCellElements (cell, elements, teOptions) {
 
-                 elements.each(function () {
 
-                     var kids = $(this).children();
 
-                     if ( $(this).is("div") ) {
 
-                         var bcolor = rgb2array(getStyle(this, 'background-color'), [255, 255, 255]);
 
-                         var lcolor = rgb2array(getStyle(this, 'border-top-color'), [0, 0, 0]);
 
-                         var lwidth = getPropertyUnitValue(this, 'border-top-width', defaults.jspdf.unit);
 
-                         var r = this.getBoundingClientRect();
 
-                         var ux = this.offsetLeft * teOptions.dw;
 
-                         var uy = this.offsetTop * teOptions.dh;
 
-                         var uw = r.width * teOptions.dw;
 
-                         var uh = r.height * teOptions.dh;
 
-                         teOptions.doc.setDrawColor.apply (undefined, lcolor);
 
-                         teOptions.doc.setFillColor.apply (undefined, bcolor);
 
-                         teOptions.doc.setLineWidth (lwidth);
 
-                         teOptions.doc.rect(cell.x + ux, cell.y + uy, uw, uh, lwidth ? "FD" : "F");
 
-                     }
 
-                     else if ( $(this).is("img") ) {
 
-                         if (typeof teOptions.images != 'undefined') {
 
-                             var hash = strHashCode(this.src);
 
-                             var image = teOptions.images[hash];
 
-                             if (typeof image != 'undefined') {
 
-                                 teOptions.doc.addImage (image.src, cell.textPos.x, cell.y, this.width, this.height);
 
-                                 cell.textPos.x += this.width;
 
-                             }
 
-                         }
 
-                     }
 
-                     if (typeof kids != 'undefined' && kids.length > 0)
 
-                         drawCellElements (cell, kids, teOptions);
 
-                 });
 
-             }
 
-             function escapeRegExp(string) {
 
-                 return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
 
-             }
 
-             function replaceAll(string, find, replace) {
 
-                 return string.replace(new RegExp(escapeRegExp(find), 'g'), replace);
 
-             }
 
-             // Takes a string and encapsulates it (by default in double-quotes) if it
 
-             // contains the csv field separator, spaces, or linebreaks.
 
-             function csvString(cell, rowIndex, colIndex) {
 
-                 var result = '';
 
-                 if (cell !== null) {
 
-                     var dataString = parseString(cell, rowIndex, colIndex);
 
-                     var csvValue = (dataString === null || dataString === '') ? '' : dataString.toString();
 
-                     if (dataString instanceof Date)
 
-                         result = defaults.csvEnclosure + dataString.toLocaleString() + defaults.csvEnclosure;
 
-                     else {
 
-                         result = replaceAll(csvValue, defaults.csvEnclosure, defaults.csvEnclosure + defaults.csvEnclosure);
 
-                         if (result.indexOf(defaults.csvSeparator) >= 0 || /[\r\n ]/g.test(result))
 
-                             result = defaults.csvEnclosure + result + defaults.csvEnclosure;
 
-                     }
 
-                 }
 
-                 return result;
 
-             }
 
-             function parseNumber(value) {
 
-                 value = value || "0";
 
-                 value = replaceAll(value, defaults.numbers.html.decimalMark, '.');
 
-                 value = replaceAll(value, defaults.numbers.html.thousandsSeparator, '');
 
-                 return typeof value === "number" || jQuery.isNumeric(value) !== false ? value : false;
 
-             }
 
-             function parseString(cell, rowIndex, colIndex) {
 
-                 var result = '';
 
-                 if (cell !== null) {
 
-                     var $cell = $(cell);
 
-                     var htmlData;
 
-                     if($($cell[0]).is("th")){
 
-                         htmlData = $($cell[0]).find(".th-inner").html();
 
-                     } else if ($cell[0].hasAttribute("data-tableexport-value"))
 
-                         htmlData = $cell.data("tableexport-value");
 
-                     else
 
-                         htmlData = $cell.html();
 
-                     if (typeof defaults.onCellHtmlData === 'function')
 
-                         htmlData = defaults.onCellHtmlData($cell, rowIndex, colIndex, htmlData);
 
-                     if (defaults.htmlContent === true) {
 
-                         result = $.trim(htmlData);
 
-                     }
 
-                     else {
 
-                         var text = htmlData.replace(/\n/g,'\u2028').replace(/<br\s*[\/]?>/gi, '\u2060');
 
-                         var obj = $('<div/>').html(text).contents();
 
-                         text = '';
 
-                         $.each(obj.text().split("\u2028"), function(i, v) {
 
-                             if (i > 0)
 
-                                 text += " ";
 
-                             text += $.trim(v);
 
-                         });
 
-                         $.each(text.split("\u2060"), function(i, v) {
 
-                             if (i > 0)
 
-                                 result += "\n";
 
-                             result += $.trim(v).replace(/\u00AD/g, ""); // remove soft hyphens
 
-                         });
 
-                         if (defaults.numbers.html.decimalMark != defaults.numbers.output.decimalMark ||
 
-                             defaults.numbers.html.thousandsSeparator != defaults.numbers.output.thousandsSeparator) {
 
-                             var number = parseNumber (result);
 
-                             if ( number !== false ) {
 
-                                 var frac = ("" + number).split('.');
 
-                                 if ( frac.length == 1 )
 
-                                     frac[1] = "";
 
-                                 var mod = frac[0].length > 3 ? frac[0].length % 3 : 0;
 
-                                 result = (number < 0 ? "-" : "") +
 
-                                     (defaults.numbers.output.thousandsSeparator ? ((mod ? frac[0].substr(0, mod) + defaults.numbers.output.thousandsSeparator : "") + frac[0].substr(mod).replace(/(\d{3})(?=\d)/g, "$1" + defaults.numbers.output.thousandsSeparator)) : frac[0]) +
 
-                                     (frac[1].length ? defaults.numbers.output.decimalMark + frac[1] : "");
 
-                             }
 
-                         }
 
-                     }
 
-                     if (defaults.escape === true) {
 
-                         result = escape(result);
 
-                     }
 
-                     if (typeof defaults.onCellData === 'function') {
 
-                         result = defaults.onCellData($cell, rowIndex, colIndex, result);
 
-                     }
 
-                 }
 
-                 return result;
 
-             }
 
-             function hyphenate(a, b, c) {
 
-                 return b + "-" + c.toLowerCase();
 
-             }
 
-             function rgb2array(rgb_string, default_result) {
 
-                 var re = /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/;
 
-                 var bits = re.exec(rgb_string);
 
-                 var result = default_result;
 
-                 if (bits)
 
-                     result = [ parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3]) ];
 
-                 return result;
 
-             }
 
-             function getCellStyles (cell) {
 
-                 var a = getStyle(cell, 'text-align');
 
-                 var fw = getStyle(cell, 'font-weight');
 
-                 var fs = getStyle(cell, 'font-style');
 
-                 var f = '';
 
-                 if (a == 'start')
 
-                     a = getStyle(cell, 'direction') == 'rtl' ? 'right' : 'left';
 
-                 if (fw >= 700)
 
-                     f = 'bold';
 
-                 if (fs == 'italic')
 
-                     f += fs;
 
-                 if (f === '')
 
-                     f = 'normal';
 
-                 var result = {
 
-                     style: {
 
-                         align: a,
 
-                         bcolor: rgb2array(getStyle(cell, 'background-color'), [255, 255, 255]),
 
-                         color: rgb2array(getStyle(cell, 'color'), [0, 0, 0]),
 
-                         fstyle: f
 
-                     },
 
-                     colspan: (parseInt($(cell).attr('colspan')) || 0),
 
-                     rowspan: (parseInt($(cell).attr('rowspan')) || 0)
 
-                 };
 
-                 if (cell !== null) {
 
-                     var r = cell.getBoundingClientRect();
 
-                     result.rect = {
 
-                         width: r.width,
 
-                         height: r.height
 
-                     };
 
-                 }
 
-                 return result;
 
-             }
 
-             // get computed style property
 
-             function getStyle(target, prop) {
 
-                 try {
 
-                     if (window.getComputedStyle) { // gecko and webkit
 
-                         prop = prop.replace(/([a-z])([A-Z])/, hyphenate);  // requires hyphenated, not camel
 
-                         return window.getComputedStyle(target, null).getPropertyValue(prop);
 
-                     }
 
-                     if (target.currentStyle) { // ie
 
-                         return target.currentStyle[prop];
 
-                     }
 
-                     return target.style[prop];
 
-                 }
 
-                 catch (e) {
 
-                 }
 
-                 return "";
 
-             }
 
-             function getUnitValue(parent, value, unit) {
 
-                 var baseline = 100;  // any number serves
 
-                 var temp = document.createElement("div");  // create temporary element
 
-                 temp.style.overflow = "hidden";  // in case baseline is set too low
 
-                 temp.style.visibility = "hidden";  // no need to show it
 
-                 parent.appendChild(temp); // insert it into the parent for em, ex and %
 
-                 temp.style.width = baseline + unit;
 
-                 var factor = baseline / temp.offsetWidth;
 
-                 parent.removeChild(temp);  // clean up
 
-                 return (value * factor);
 
-             }
 
-             function getPropertyUnitValue(target, prop, unit) {
 
-                 var value = getStyle(target, prop);  // get the computed style value
 
-                 var numeric = value.match(/\d+/);  // get the numeric component
 
-                 if (numeric !== null) {
 
-                     numeric = numeric[0];  // get the string
 
-                     return getUnitValue (target.parentElement, numeric, unit);
 
-                 }
 
-                 return 0;
 
-             }
 
-             function jx_Workbook() {
 
-                 if(!(this instanceof jx_Workbook)) return new jx_Workbook();
 
-                 this.SheetNames = [];
 
-                 this.Sheets = {};
 
-             }
 
-             function jx_s2ab(s) {
 
-                 var buf = new ArrayBuffer(s.length);
 
-                 var view = new Uint8Array(buf);
 
-                 for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
 
-                 return buf;
 
-             }
 
-             function jx_datenum(v, date1904) {
 
-                 if(date1904) v+=1462;
 
-                 var epoch = Date.parse(v);
 
-                 return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
 
-             }
 
-             function jx_createSheet(data) {
 
-                 var ws = {};
 
-                 var range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }};
 
-                 for(var R = 0; R != data.length; ++R) {
 
-                     for(var C = 0; C != data[R].length; ++C) {
 
-                         if(range.s.r > R) range.s.r = R;
 
-                         if(range.s.c > C) range.s.c = C;
 
-                         if(range.e.r < R) range.e.r = R;
 
-                         if(range.e.c < C) range.e.c = C;
 
-                         var cell = {v: data[R][C] };
 
-                         if(cell.v === null) continue;
 
-                         var cell_ref = XLSX.utils.encode_cell({c:C,r:R});
 
-                         if(typeof cell.v === 'number') cell.t = 'n';
 
-                         else if(typeof cell.v === 'boolean') cell.t = 'b';
 
-                         else if(cell.v instanceof Date) {
 
-                             cell.t = 'n'; cell.z = XLSX.SSF._table[14];
 
-                             cell.v = jx_datenum(cell.v);
 
-                         }
 
-                         else cell.t = 's';
 
-                         ws[cell_ref] = cell;
 
-                     }
 
-                 }
 
-                 if(range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
 
-                 return ws;
 
-             }
 
-             function strHashCode (str) {
 
-                 var hash = 0, i, chr, len;
 
-                 if (str.length === 0) return hash;
 
-                 for (i = 0, len = str.length; i < len; i++) {
 
-                     chr   = str.charCodeAt(i);
 
-                     hash  = ((hash << 5) - hash) + chr;
 
-                     hash |= 0; // Convert to 32bit integer
 
-                 }
 
-                 return hash;
 
-             }
 
-             function downloadFile(filename, header, data) {
 
-                 var ua = window.navigator.userAgent;
 
-                 if (ua.indexOf("MSIE ") > 0 || !!ua.match(/Trident.*rv\:11\./)) {
 
-                     // Internet Explorer (<= 9) workaround by Darryl (https://github.com/dawiong/tableExport.jquery.plugin)
 
-                     // based on sampopes answer on http://stackoverflow.com/questions/22317951
 
-                     // ! Not working for json and pdf format !
 
-                     var frame = document.createElement("iframe");
 
-                     if (frame) {
 
-                         document.body.appendChild(frame);
 
-                         frame.setAttribute("style", "display:none");
 
-                         frame.contentDocument.open("txt/html", "replace");
 
-                         frame.contentDocument.write(data);
 
-                         frame.contentDocument.close();
 
-                         frame.focus();
 
-                         frame.contentDocument.execCommand("SaveAs", true, filename);
 
-                         document.body.removeChild(frame);
 
-                     }
 
-                 }
 
-                 else {
 
-                     var DownloadLink = document.createElement('a');
 
-                     if (DownloadLink) {
 
-                         DownloadLink.style.display = 'none';
 
-                         DownloadLink.download = filename;
 
-                         if (header.toLowerCase().indexOf("base64,") >= 0)
 
-                             DownloadLink.href = header + base64encode(data);
 
-                         else
 
-                             DownloadLink.href = header + encodeURIComponent(data);
 
-                         document.body.appendChild(DownloadLink);
 
-                         if (document.createEvent) {
 
-                             if (DownloadEvt === null)
 
-                                 DownloadEvt = document.createEvent('MouseEvents');
 
-                             DownloadEvt.initEvent('click', true, false);
 
-                             DownloadLink.dispatchEvent(DownloadEvt);
 
-                         }
 
-                         else if (document.createEventObject)
 
-                             DownloadLink.fireEvent('onclick');
 
-                         else if (typeof DownloadLink.onclick == 'function')
 
-                             DownloadLink.onclick();
 
-                         document.body.removeChild(DownloadLink);
 
-                     }
 
-                 }
 
-             }
 
-             function utf8Encode(string) {
 
-                 string = string.replace(/\x0d\x0a/g, "\x0a");
 
-                 var utftext = "";
 
-                 for (var n = 0; n < string.length; n++) {
 
-                     var c = string.charCodeAt(n);
 
-                     if (c < 128) {
 
-                         utftext += String.fromCharCode(c);
 
-                     }
 
-                     else if ((c > 127) && (c < 2048)) {
 
-                         utftext += String.fromCharCode((c >> 6) | 192);
 
-                         utftext += String.fromCharCode((c & 63) | 128);
 
-                     }
 
-                     else {
 
-                         utftext += String.fromCharCode((c >> 12) | 224);
 
-                         utftext += String.fromCharCode(((c >> 6) & 63) | 128);
 
-                         utftext += String.fromCharCode((c & 63) | 128);
 
-                     }
 
-                 }
 
-                 return utftext;
 
-             }
 
-             function base64encode(input) {
 
-                 var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
-                 var output = "";
 
-                 var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
 
-                 var i = 0;
 
-                 input = utf8Encode(input);
 
-                 while (i < input.length) {
 
-                     chr1 = input.charCodeAt(i++);
 
-                     chr2 = input.charCodeAt(i++);
 
-                     chr3 = input.charCodeAt(i++);
 
-                     enc1 = chr1 >> 2;
 
-                     enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
 
-                     enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
 
-                     enc4 = chr3 & 63;
 
-                     if (isNaN(chr2)) {
 
-                         enc3 = enc4 = 64;
 
-                     } else if (isNaN(chr3)) {
 
-                         enc4 = 64;
 
-                     }
 
-                     output = output +
 
-                         keyStr.charAt(enc1) + keyStr.charAt(enc2) +
 
-                         keyStr.charAt(enc3) + keyStr.charAt(enc4);
 
-                 }
 
-                 return output;
 
-             }
 
-             return this;
 
-         }
 
-     });
 
- })(jQuery);
 
 
  |