No Description

kindeditor-all.js 239KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784
  1. /* KindEditor 4.1.11 (2016-03-31), Copyright (C) kindsoft.net, Licence: http://kindeditor.net/license.php */ !
  2. function(window, undefined) {
  3. function _isArray(a) {
  4. return a ? "[object Array]" === Object.prototype.toString.call(a) : !1
  5. }
  6. function _isFunction(a) {
  7. return a ? "[object Function]" === Object.prototype.toString.call(a) : !1
  8. }
  9. function _inArray(a, b) {
  10. for(var c = 0,
  11. d = b.length; d > c; c++)
  12. if(a === b[c]) return c;
  13. return -1
  14. }
  15. function _each(a, b) {
  16. if(_isArray(a))
  17. for(var c = 0,
  18. d = a.length; d > c && b.call(a[c], c, a[c]) !== !1; c++);
  19. else
  20. for(var e in a)
  21. if(a.hasOwnProperty(e) && b.call(a[e], e, a[e]) === !1) break
  22. }
  23. function _trim(a) {
  24. return a.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, "")
  25. }
  26. function _inString(a, b, c) {
  27. return c = c === undefined ? "," : c,
  28. (c + b + c).indexOf(c + a + c) >= 0
  29. }
  30. function _addUnit(a, b) {
  31. return b = b || "px",
  32. a && /^-?\d+(?:\.\d+)?$/.test(a) ? a + b : a
  33. }
  34. function _removeUnit(a) {
  35. var b;
  36. return a && (b = /(\d+)/.exec(a)) ? parseInt(b[1], 10) : 0
  37. }
  38. function _escape(a) {
  39. return a.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;")
  40. }
  41. function _unescape(a) {
  42. return a.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&amp;/g, "&")
  43. }
  44. function _toCamel(a) {
  45. var b = a.split("-");
  46. return a = "",
  47. _each(b,
  48. function(b, c) {
  49. a += b > 0 ? c.charAt(0).toUpperCase() + c.substr(1) : c
  50. }),
  51. a
  52. }
  53. function _toHex(a) {
  54. function b(a) {
  55. var b = parseInt(a, 10).toString(16).toUpperCase();
  56. return b.length > 1 ? b : "0" + b
  57. }
  58. return a.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/gi,
  59. function(a, c, d, e) {
  60. return "#" + b(c) + b(d) + b(e)
  61. })
  62. }
  63. function _toMap(a, b) {
  64. b = b === undefined ? "," : b;
  65. var c, d = {},
  66. e = _isArray(a) ? a : a.split(b);
  67. return _each(e,
  68. function(a, b) {
  69. if(c = /^(\d+)\.\.(\d+)$/.exec(b))
  70. for(var e = parseInt(c[1], 10); e <= parseInt(c[2], 10); e++) d[e.toString()] = !0;
  71. else d[b] = !0
  72. }),
  73. d
  74. }
  75. function _toArray(a, b) {
  76. return Array.prototype.slice.call(a, b || 0)
  77. }
  78. function _undef(a, b) {
  79. return a === undefined ? b : a
  80. }
  81. function _invalidUrl(a) {
  82. return !a || /[<>"]/.test(a)
  83. }
  84. function _addParam(a, b) {
  85. return a.indexOf("?") >= 0 ? a + "&" + b : a + "?" + b
  86. }
  87. function _extend(a, b, c) {
  88. c || (c = b, b = null);
  89. var d;
  90. if(b) {
  91. var e = function() {};
  92. e.prototype = b.prototype,
  93. d = new e,
  94. _each(c,
  95. function(a, b) {
  96. d[a] = b
  97. })
  98. } else d = c;
  99. d.constructor = a,
  100. a.prototype = d,
  101. a.parent = b ? b.prototype : null
  102. }
  103. function _json(text) {
  104. var match;
  105. (match = /\{[\s\S]*\}|\[[\s\S]*\]/.exec(text)) && (text = match[0]);
  106. var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
  107. if(cx.lastIndex = 0, cx.test(text) && (text = text.replace(cx,
  108. function(a) {
  109. return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4)
  110. })), /^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return eval("(" + text + ")");
  111. throw "JSON parse error"
  112. }
  113. function _getBasePath() {
  114. for(var a, b = document.getElementsByTagName("script"), c = 0, d = b.length; d > c; c++)
  115. if(a = b[c].src || "", /kindeditor[\w\-\.]*\.js/.test(a)) return a.substring(0, a.lastIndexOf("/") + 1);
  116. return ""
  117. }
  118. function _bindEvent(a, b, c) {
  119. a.addEventListener ? a.addEventListener(b, c, _useCapture) : a.attachEvent && a.attachEvent("on" + b, c)
  120. }
  121. function _unbindEvent(a, b, c) {
  122. a.removeEventListener ? a.removeEventListener(b, c, _useCapture) : a.detachEvent && a.detachEvent("on" + b, c)
  123. }
  124. function KEvent(a, b) {
  125. this.init(a, b)
  126. }
  127. function _getId(a) {
  128. return a[_eventExpendo] || null
  129. }
  130. function _setId(a) {
  131. return a[_eventExpendo] = ++_eventId,
  132. _eventId
  133. }
  134. function _removeId(a) {
  135. try {
  136. delete a[_eventExpendo]
  137. } catch(b) {
  138. a.removeAttribute && a.removeAttribute(_eventExpendo)
  139. }
  140. }
  141. function _bind(a, b, c) {
  142. if(b.indexOf(",") >= 0) return void _each(b.split(","),
  143. function() {
  144. _bind(a, this, c)
  145. });
  146. var d = _getId(a);
  147. d || (d = _setId(a)),
  148. _eventData[d] === undefined && (_eventData[d] = {});
  149. var e = _eventData[d][b];
  150. e && e.length > 0 ? _unbindEvent(a, b, e[0]) : (_eventData[d][b] = [], _eventData[d].el = a),
  151. e = _eventData[d][b],
  152. 0 === e.length && (e[0] = function(b) {
  153. var c = b ? new KEvent(a, b) : undefined;
  154. _each(e,
  155. function(b, d) {
  156. b > 0 && d && d.call(a, c)
  157. })
  158. }),
  159. _inArray(c, e) < 0 && e.push(c),
  160. _bindEvent(a, b, e[0])
  161. }
  162. function _unbind(a, b, c) {
  163. if(b && b.indexOf(",") >= 0) return void _each(b.split(","),
  164. function() {
  165. _unbind(a, this, c)
  166. });
  167. var d = _getId(a);
  168. if(d) {
  169. if(b === undefined) return void(d in _eventData && (_each(_eventData[d],
  170. function(b, c) {
  171. "el" != b && c.length > 0 && _unbindEvent(a, b, c[0])
  172. }), delete _eventData[d], _removeId(a)));
  173. if(_eventData[d]) {
  174. var e = _eventData[d][b];
  175. if(e && e.length > 0) {
  176. c === undefined ? (_unbindEvent(a, b, e[0]), delete _eventData[d][b]) : (_each(e,
  177. function(a, b) {
  178. a > 0 && b === c && e.splice(a, 1)
  179. }), 1 == e.length && (_unbindEvent(a, b, e[0]), delete _eventData[d][b]));
  180. var f = 0;
  181. _each(_eventData[d],
  182. function() {
  183. f++
  184. }),
  185. 2 > f && (delete _eventData[d], _removeId(a))
  186. }
  187. }
  188. }
  189. }
  190. function _fire(a, b) {
  191. if(b.indexOf(",") >= 0) return void _each(b.split(","),
  192. function() {
  193. _fire(a, this)
  194. });
  195. var c = _getId(a);
  196. if(c) {
  197. var d = _eventData[c][b];
  198. _eventData[c] && d && d.length > 0 && d[0]()
  199. }
  200. }
  201. function _ctrl(a, b, c) {
  202. b = /^\d{2,}$/.test(b) ? b : b.toUpperCase().charCodeAt(0),
  203. _bind(a, "keydown",
  204. function(d) {
  205. !d.ctrlKey || d.which != b || d.shiftKey || d.altKey || (c.call(a), d.stop())
  206. })
  207. }
  208. function _ready(a) {
  209. function b() {
  210. e || (e = !0, a(KindEditor), _readyFinished = !0)
  211. }
  212. function c() {
  213. if(!e) {
  214. try {
  215. document.documentElement.doScroll("left")
  216. } catch(a) {
  217. return void setTimeout(c, 100)
  218. }
  219. b()
  220. }
  221. }
  222. function d() {
  223. "complete" === document.readyState && b()
  224. }
  225. if(_readyFinished) return void a(KindEditor);
  226. var e = !1;
  227. if(document.addEventListener) _bind(document, "DOMContentLoaded", b);
  228. else if(document.attachEvent) {
  229. _bind(document, "readystatechange", d);
  230. var f = !1;
  231. try {
  232. f = null == window.frameElement
  233. } catch(g) {}
  234. document.documentElement.doScroll && f && c()
  235. }
  236. _bind(window, "load", b)
  237. }
  238. function _getCssList(a) {
  239. for(var b, c = {},
  240. d = /\s*([\w\-]+)\s*:([^;]*)(;|$)/g; b = d.exec(a);) {
  241. var e = _trim(b[1].toLowerCase()),
  242. f = _trim(_toHex(b[2]));
  243. c[e] = f
  244. }
  245. return c
  246. }
  247. function _getAttrList(a) {
  248. for(var b, c = {},
  249. d = /\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g; b = d.exec(a);) {
  250. var e = (b[1] || b[2] || b[4] || b[6]).toLowerCase(),
  251. f = (b[2] ? b[3] : b[4] ? b[5] : b[7]) || "";
  252. c[e] = f
  253. }
  254. return c
  255. }
  256. function _addClassToTag(a, b) {
  257. return a = /\s+class\s*=/.test(a) ? a.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,
  258. function(a, c, d, e) {
  259. return(" " + d + " ").indexOf(" " + b + " ") < 0 ? "" === d ? c + b + e : c + d + " " + b + e : a
  260. }) : a.substr(0, a.length - 1) + ' class="' + b + '">'
  261. }
  262. function _formatCss(a) {
  263. var b = "";
  264. return _each(_getCssList(a),
  265. function(a, c) {
  266. b += a + ":" + c + ";"
  267. }),
  268. b
  269. }
  270. function _formatUrl(a, b, c, d) {
  271. function e(a) {
  272. for(var b = a.split("/"), c = [], d = 0, e = b.length; e > d; d++) {
  273. var f = b[d];
  274. ".." == f ? c.length > 0 && c.pop() : "" !== f && "." != f && c.push(f)
  275. }
  276. return "/" + c.join("/")
  277. }
  278. function f(b, c) {
  279. if(a.substr(0, b.length) === b) {
  280. for(var e = [], g = 0; c > g; g++) e.push("..");
  281. var i = ".";
  282. return e.length > 0 && (i += "/" + e.join("/")),
  283. "/" == d && (i += "/"),
  284. i + a.substr(b.length)
  285. }
  286. return(h = /^(.*)\//.exec(b)) ? f(h[1], ++c) : void 0
  287. }
  288. if(b = _undef(b, "").toLowerCase(), "data:" != a.substr(0, 5) && (a = a.replace(/([^:])\/\//g, "$1/")), _inArray(b, ["absolute", "relative", "domain"]) < 0) return a;
  289. if(c = c || location.protocol + "//" + location.host, d === undefined) {
  290. var g = location.pathname.match(/^(\/.*)\//);
  291. d = g ? g[1] : ""
  292. }
  293. var h;
  294. if(h = /^(\w+:\/\/[^\/]*)/.exec(a)) {
  295. if(h[1] !== c) return a
  296. } else if(/^\w+:/.test(a)) return a;
  297. return /^\//.test(a) ? a = c + e(a.substr(1)) : /^\w+:\/\//.test(a) || (a = c + e(d + "/" + a)),
  298. "relative" === b ? a = f(c + d, 0).substr(2) : "absolute" === b && a.substr(0, c.length) === c && (a = a.substr(c.length)),
  299. a
  300. }
  301. function _formatHtml(a, b, c, d, e) {
  302. null == a && (a = ""),
  303. c = c || "",
  304. d = _undef(d, !1),
  305. e = _undef(e, " ");
  306. var f = "xx-small,x-small,small,medium,large,x-large,xx-large".split(",");
  307. a = a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,
  308. function(a, b, c, d) {
  309. return b + c.replace(/<(?:br|br\s[^>]*)>/gi, "\n") + d
  310. }),
  311. a = a.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/gi, "</p>"),
  312. a = a.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/gi, "$1<br />$2"),
  313. a = a.replace(/\u200B/g, ""),
  314. a = a.replace(/\u00A9/g, "&copy;"),
  315. a = a.replace(/\u00AE/g, "&reg;"),
  316. a = a.replace(/\u2003/g, "&emsp;"),
  317. a = a.replace(/\u3000/g, "&emsp;"),
  318. a = a.replace(/<[^>]+/g,
  319. function(a) {
  320. return a.replace(/\s+/g, " ")
  321. });
  322. var g = {};
  323. b && (_each(b,
  324. function(a, b) {
  325. for(var c = a.split(","), d = 0, e = c.length; e > d; d++) g[c[d]] = _toMap(b)
  326. }), g.script || (a = a.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/gi, "")), g.style || (a = a.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi, "")));
  327. var h = /(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g,
  328. i = [];
  329. return a = a.replace(h,
  330. function(a, h, j, k, l, m, n) {
  331. var o = a,
  332. p = h || "",
  333. q = j || "",
  334. r = k.toLowerCase(),
  335. s = l || "",
  336. t = m ? " " + m : "",
  337. u = n || "";
  338. if(b && !g[r]) return "";
  339. if("" === t && _SINGLE_TAG_MAP[r] && (t = " /"), _INLINE_TAG_MAP[r] && (p && (p = " "), u && (u = " ")), _PRE_TAG_MAP[r] && (q ? u = "\n" : p = "\n"), d && "br" == r && (u = "\n"), _BLOCK_TAG_MAP[r] && !_PRE_TAG_MAP[r])
  340. if(d) {
  341. q && i.length > 0 && i[i.length - 1] === r ? i.pop() : i.push(r),
  342. p = "\n",
  343. u = "\n";
  344. for(var v = 0,
  345. w = q ? i.length : i.length - 1; w > v; v++) p += e,
  346. q || (u += e);
  347. t ? i.pop() : q || (u += e)
  348. } else p = u = "";
  349. if("" !== s) {
  350. var x = _getAttrList(o);
  351. if("font" === r) {
  352. var y = {},
  353. z = "";
  354. _each(x,
  355. function(a, b) {
  356. "color" === a && (y.color = b, delete x[a]),
  357. "size" === a && (y["font-size"] = f[parseInt(b, 10) - 1] || "", delete x[a]),
  358. "face" === a && (y["font-family"] = b, delete x[a]),
  359. "style" === a && (z = b)
  360. }),
  361. z && !/;$/.test(z) && (z += ";"),
  362. _each(y,
  363. function(a, b) {
  364. "" !== b && (/\s/.test(b) && (b = "'" + b + "'"), z += a + ":" + b + ";")
  365. }),
  366. x.style = z
  367. }
  368. _each(x,
  369. function(a, d) {
  370. if(_FILL_ATTR_MAP[a] && (x[a] = a), _inArray(a, ["src", "href"]) >= 0 && (x[a] = _formatUrl(d, c)), (b && "style" !== a && !g[r]["*"] && !g[r][a] || "body" === r && "contenteditable" === a || /^kindeditor_\d+$/.test(a)) && delete x[a], "style" === a && "" !== d) {
  371. var e = _getCssList(d);
  372. _each(e,
  373. function(a) {
  374. !b || g[r].style || g[r]["." + a] || delete e[a]
  375. });
  376. var f = "";
  377. _each(e,
  378. function(a, b) {
  379. f += a + ":" + b + ";"
  380. }),
  381. x.style = f
  382. }
  383. }),
  384. s = "",
  385. _each(x,
  386. function(a, b) {
  387. ("style" !== a || "" !== b) && (b = b.replace(/"/g, "&quot;"), s += " " + a + '="' + b + '"')
  388. })
  389. }
  390. return "font" === r && (r = "span"),
  391. p + "<" + q + r + s + t + ">" + u
  392. }),
  393. a = a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,
  394. function(a, b, c, d) {
  395. return b + c.replace(/\n/g, '<span id="__kindeditor_pre_newline__">\n') + d
  396. }),
  397. a = a.replace(/\n\s*\n/g, "\n"),
  398. a = a.replace(/<span id="__kindeditor_pre_newline__">\n/g, "\n"),
  399. _trim(a)
  400. }
  401. function _clearMsWord(a, b) {
  402. return a = a.replace(/<meta[\s\S]*?>/gi, "").replace(/<![\s\S]*?>/gi, "").replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "").replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<w:[^>]+>[\s\S]*?<\/w:[^>]+>/gi, "").replace(/<o:[^>]+>[\s\S]*?<\/o:[^>]+>/gi, "").replace(/<xml>[\s\S]*?<\/xml>/gi, "").replace(/<(?:table|td)[^>]*>/gi,
  403. function(a) {
  404. return a.replace(/border-bottom:([#\w\s]+)/gi, "border:$1")
  405. }),
  406. _formatHtml(a, b)
  407. }
  408. function _mediaType(a) {
  409. return /\.(rm|rmvb)(\?|$)/i.test(a) ? "audio/x-pn-realaudio-plugin" : /\.(swf|flv)(\?|$)/i.test(a) ? "application/x-shockwave-flash" : "video/x-ms-asf-plugin"
  410. }
  411. function _mediaClass(a) {
  412. return /realaudio/i.test(a) ? "ke-rm" : /flash/i.test(a) ? "ke-flash" : "ke-media"
  413. }
  414. function _mediaAttrs(a) {
  415. return _getAttrList(unescape(a))
  416. }
  417. function _mediaEmbed(a) {
  418. var b = "<embed ";
  419. return _each(a,
  420. function(a, c) {
  421. b += a + '="' + c + '" '
  422. }),
  423. b += "/>"
  424. }
  425. function _mediaImg(a, b) {
  426. var c = b.width,
  427. d = b.height,
  428. e = b.type || _mediaType(b.src),
  429. f = _mediaEmbed(b),
  430. g = "";
  431. /\D/.test(c) ? g += "width:" + c + ";" : c > 0 && (g += "width:" + c + "px;"),
  432. /\D/.test(d) ? g += "height:" + d + ";" : d > 0 && (g += "height:" + d + "px;");
  433. var h = '<img class="' + _mediaClass(e) + '" src="' + a + '" ';
  434. return "" !== g && (h += 'style="' + g + '" '),
  435. h += 'data-ke-tag="' + escape(f) + '" alt="" />'
  436. }
  437. function _tmpl(a, b) {
  438. var c = new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('" + a.replace(/[\r\t\n]/g, " ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%>/g, "',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'") + "');}return p.join('');");
  439. return b ? c(b) : c
  440. }
  441. function _contains(a, b) {
  442. if(9 == a.nodeType && 9 != b.nodeType) return !0;
  443. for(; b = b.parentNode;)
  444. if(b == a) return !0;
  445. return !1
  446. }
  447. function _getAttr(a, b) {
  448. b = b.toLowerCase();
  449. var c = null;
  450. if(_GET_SET_ATTRIBUTE || "script" == a.nodeName.toLowerCase()) try {
  451. c = a.getAttribute(b, 2)
  452. } catch(d) {
  453. c = a.getAttribute(b, 1)
  454. } else {
  455. var e = a.ownerDocument.createElement("div");
  456. e.appendChild(a.cloneNode(!1));
  457. var f = _getAttrList(_unescape(e.innerHTML));
  458. b in f && (c = f[b])
  459. }
  460. return "style" === b && null !== c && (c = _formatCss(c)),
  461. c
  462. }
  463. function _queryAll(a, b) {
  464. function c(a) {
  465. return "string" != typeof a ? a : a.replace(/([^\w\-])/g, "\\$1")
  466. }
  467. function d(a) {
  468. return a.replace(/\\/g, "")
  469. }
  470. function e(a, b) {
  471. return "*" === a || a.toLowerCase() === c(b.toLowerCase())
  472. }
  473. function f(a, b, c) {
  474. var f = [],
  475. g = c.ownerDocument || c,
  476. h = g.getElementById(d(a));
  477. return h && e(b, h.nodeName) && _contains(c, h) && f.push(h),
  478. f
  479. }
  480. function g(a, b, c) {
  481. var f, g, h, i, j = c.ownerDocument || c,
  482. k = [];
  483. if(c.getElementsByClassName)
  484. for(f = c.getElementsByClassName(d(a)), g = 0, h = f.length; h > g; g++) i = f[g],
  485. e(b, i.nodeName) && k.push(i);
  486. else if(j.querySelectorAll)
  487. for(f = j.querySelectorAll(("#document" !== c.nodeName ? c.nodeName + " " : "") + b + "." + a), g = 0, h = f.length; h > g; g++) i = f[g],
  488. _contains(c, i) && k.push(i);
  489. else
  490. for(f = c.getElementsByTagName(b), a = " " + a + " ", g = 0, h = f.length; h > g; g++)
  491. if(i = f[g], 1 == i.nodeType) {
  492. var l = i.className;
  493. l && (" " + l + " ").indexOf(a) > -1 && k.push(i)
  494. }
  495. return k
  496. }
  497. function h(a, b, c) {
  498. for(var f, g = [], h = c.ownerDocument || c, i = h.getElementsByName(d(a)), j = 0, k = i.length; k > j; j++) f = i[j],
  499. e(b, f.nodeName) && _contains(c, f) && null !== f.getAttribute("name") && g.push(f);
  500. return g
  501. }
  502. function i(a, b, d, e) {
  503. for(var f, g = [], h = e.getElementsByTagName(d), i = 0, j = h.length; j > i; i++) f = h[i],
  504. 1 == f.nodeType && (null === b ? null !== _getAttr(f, a) && g.push(f) : b === c(_getAttr(f, a)) && g.push(f));
  505. return g
  506. }
  507. function j(a, b) {
  508. var c, d = [];
  509. c = /^((?:\\.|[^.#\s\[<>])+)/.exec(a);
  510. var e = c ? c[1] : "*";
  511. if(c = /#((?:[\w\-]|\\.)+)$/.exec(a)) d = f(c[1], e, b);
  512. else if(c = /\.((?:[\w\-]|\\.)+)$/.exec(a)) d = g(c[1], e, b);
  513. else if(c = /\[((?:[\w\-]|\\.)+)\]/.exec(a)) d = i(c[1].toLowerCase(), null, e, b);
  514. else if(c = /\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(a)) {
  515. var j = c[1].toLowerCase(),
  516. k = c[2];
  517. d = "id" === j ? f(k, e, b) : "class" === j ? g(k, e, b) : "name" === j ? h(k, e, b) : i(j, k, e, b)
  518. } else
  519. for(var l, m = b.getElementsByTagName(e), n = 0, o = m.length; o > n; n++) l = m[n],
  520. 1 == l.nodeType && d.push(l);
  521. return d
  522. }
  523. var k = a.split(",");
  524. if(k.length > 1) {
  525. var l = [];
  526. return _each(k,
  527. function() {
  528. _each(_queryAll(this, b),
  529. function() {
  530. _inArray(this, l) < 0 && l.push(this)
  531. })
  532. }),
  533. l
  534. }
  535. b = b || document;
  536. for(var m, n = [], o = /((?:\\.|[^\s>])+|[\s>])/g; m = o.exec(a);) " " !== m[1] && n.push(m[1]);
  537. var p = [];
  538. if(1 == n.length) return j(n[0], b);
  539. var q, r, s, t, u, v, w, x, y, z, A = !1;
  540. for(v = 0, lenth = n.length; v < lenth; v++)
  541. if(q = n[v], ">" !== q) {
  542. if(v > 0) {
  543. for(r = [], w = 0, y = p.length; y > w; w++)
  544. for(t = p[w], s = j(q, t), x = 0, z = s.length; z > x; x++) u = s[x],
  545. A ? t === u.parentNode && r.push(u) : r.push(u);
  546. p = r
  547. } else p = j(q, b);
  548. if(0 === p.length) return []
  549. } else A = !0;
  550. return p
  551. }
  552. function _query(a, b) {
  553. var c = _queryAll(a, b);
  554. return c.length > 0 ? c[0] : null
  555. }
  556. function _get(a) {
  557. return K(a)[0]
  558. }
  559. function _getDoc(a) {
  560. return a ? a.ownerDocument || a.document || a : document
  561. }
  562. function _getWin(a) {
  563. if(!a) return window;
  564. var b = _getDoc(a);
  565. return b.parentWindow || b.defaultView
  566. }
  567. function _setHtml(a, b) {
  568. if(1 == a.nodeType) {
  569. var c = _getDoc(a);
  570. try {
  571. a.innerHTML = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + b;
  572. var d = c.getElementById("__kindeditor_temp_tag__");
  573. d.parentNode.removeChild(d)
  574. } catch(e) {
  575. K(a).empty(),
  576. K("@" + b, c).each(function() {
  577. a.appendChild(this)
  578. })
  579. }
  580. }
  581. }
  582. function _hasClass(a, b) {
  583. return _inString(b, a.className, " ")
  584. }
  585. function _setAttr(a, b, c) {
  586. _IE && 8 > _V && "class" == b.toLowerCase() && (b = "className"),
  587. a.setAttribute(b, "" + c)
  588. }
  589. function _removeAttr(a, b) {
  590. _IE && 8 > _V && "class" == b.toLowerCase() && (b = "className"),
  591. _setAttr(a, b, ""),
  592. a.removeAttribute(b)
  593. }
  594. function _getNodeName(a) {
  595. return a && a.nodeName ? a.nodeName.toLowerCase() : ""
  596. }
  597. function _computedCss(a, b) {
  598. var c = _getWin(a),
  599. d = _toCamel(b),
  600. e = "";
  601. if(c.getComputedStyle) {
  602. var f = c.getComputedStyle(a, null);
  603. e = f[d] || f.getPropertyValue(b) || a.style[d]
  604. } else a.currentStyle && (e = a.currentStyle[d] || a.style[d]);
  605. return e
  606. }
  607. function _hasVal(a) {
  608. return !!_VALUE_TAG_MAP[_getNodeName(a)]
  609. }
  610. function _docElement(a) {
  611. return a = a || document,
  612. _QUIRKS ? a.body : a.documentElement
  613. }
  614. function _docHeight(a) {
  615. var b = _docElement(a);
  616. return Math.max(b.scrollHeight, b.clientHeight)
  617. }
  618. function _docWidth(a) {
  619. var b = _docElement(a);
  620. return Math.max(b.scrollWidth, b.clientWidth)
  621. }
  622. function _getScrollPos(a) {
  623. a = a || document;
  624. var b, c;
  625. return _IE || _NEWIE || _OPERA ? (b = _docElement(a).scrollLeft, c = _docElement(a).scrollTop) : (b = _getWin(a).scrollX, c = _getWin(a).scrollY), {
  626. x: b,
  627. y: c
  628. }
  629. }
  630. function KNode(a) {
  631. this.init(a)
  632. }
  633. function _updateCollapsed(a) {
  634. return a.collapsed = a.startContainer === a.endContainer && a.startOffset === a.endOffset,
  635. a
  636. }
  637. function _copyAndDelete(a, b, c) {
  638. function d(d, e, f) {
  639. var g, i = d.nodeValue.length;
  640. if(b) {
  641. var j = d.cloneNode(!0);
  642. g = e > 0 ? j.splitText(e) : j,
  643. i > f && g.splitText(f - e)
  644. }
  645. if(c) {
  646. var k = d;
  647. if(e > 0 && (k = d.splitText(e), a.setStart(d, e)), i > f) {
  648. var l = k.splitText(f - e);
  649. a.setEnd(l, 0)
  650. }
  651. h.push(k)
  652. }
  653. return g
  654. }
  655. function e() {
  656. c && a.up().collapse(!0);
  657. for(var b = 0,
  658. d = h.length; d > b; b++) {
  659. var e = h[b];
  660. e.parentNode && e.parentNode.removeChild(e)
  661. }
  662. }
  663. function f(e, n) {
  664. for(var o, p = e.firstChild; p;) {
  665. var q = new KRange(g).selectNode(p);
  666. if(j = q.compareBoundaryPoints(_START_TO_END, a), j >= 0 && 0 >= k && (k = q.compareBoundaryPoints(_START_TO_START, a)), k >= 0 && 0 >= l && (l = q.compareBoundaryPoints(_END_TO_END, a)), l >= 0 && 0 >= m && (m = q.compareBoundaryPoints(_END_TO_START, a)), m >= 0) return !1;
  667. if(o = p.nextSibling, j > 0)
  668. if(1 == p.nodeType)
  669. if(k >= 0 && 0 >= l) b && n.appendChild(p.cloneNode(!0)),
  670. c && h.push(p);
  671. else {
  672. var r;
  673. if(b && (r = p.cloneNode(!1), n.appendChild(r)), f(p, r) === !1) return !1
  674. }
  675. else if(3 == p.nodeType) {
  676. var s;
  677. if(s = p == i.startContainer ? d(p, i.startOffset, p.nodeValue.length) : p == i.endContainer ? d(p, 0, i.endOffset) : d(p, 0, p.nodeValue.length), b) try {
  678. n.appendChild(s)
  679. } catch(t) {}
  680. }
  681. p = o
  682. }
  683. }
  684. var g = a.doc,
  685. h = [],
  686. i = a.cloneRange().down(),
  687. j = -1,
  688. k = -1,
  689. l = -1,
  690. m = -1,
  691. n = a.commonAncestor(),
  692. o = g.createDocumentFragment();
  693. if(3 == n.nodeType) {
  694. var p = d(n, a.startOffset, a.endOffset);
  695. return b && o.appendChild(p),
  696. e(),
  697. b ? o : a
  698. }
  699. f(n, o),
  700. c && a.up().collapse(!0);
  701. for(var q = 0,
  702. r = h.length; r > q; q++) {
  703. var s = h[q];
  704. s.parentNode && s.parentNode.removeChild(s)
  705. }
  706. return b ? o : a
  707. }
  708. function _moveToElementText(a, b) {
  709. for(var c = b; c;) {
  710. var d = K(c);
  711. if("marquee" == d.name || "select" == d.name) return;
  712. c = c.parentNode
  713. }
  714. try {
  715. a.moveToElementText(b)
  716. } catch(e) {}
  717. }
  718. function _getStartEnd(a, b) {
  719. var c = a.parentElement().ownerDocument,
  720. d = a.duplicate();
  721. d.collapse(b);
  722. var e = d.parentElement(),
  723. f = e.childNodes;
  724. if(0 === f.length) return {
  725. node: e.parentNode,
  726. offset: K(e).index()
  727. };
  728. var g = c,
  729. h = 0,
  730. i = -1,
  731. j = a.duplicate();
  732. _moveToElementText(j, e);
  733. for(var k = 0,
  734. l = f.length; l > k; k++) {
  735. var m = f[k];
  736. if(i = j.compareEndPoints("StartToStart", d), 0 === i) return {
  737. node: m.parentNode,
  738. offset: k
  739. };
  740. if(1 == m.nodeType) {
  741. var n, o = a.duplicate(),
  742. p = K(m),
  743. q = m;
  744. p.isControl() && (n = c.createElement("span"), p.after(n), q = n, h += p.text().replace(/\r\n|\n|\r/g, "").length),
  745. _moveToElementText(o, q),
  746. j.setEndPoint("StartToEnd", o),
  747. i > 0 ? h += o.text.replace(/\r\n|\n|\r/g, "").length : h = 0,
  748. n && K(n).remove()
  749. } else 3 == m.nodeType && (j.moveStart("character", m.nodeValue.length), h += m.nodeValue.length);
  750. 0 > i && (g = m)
  751. }
  752. if(0 > i && 1 == g.nodeType) return {
  753. node: e,
  754. offset: K(e.lastChild).index() + 1
  755. };
  756. if(i > 0)
  757. for(; g.nextSibling && 1 == g.nodeType;) g = g.nextSibling;
  758. if(j = a.duplicate(), _moveToElementText(j, e), j.setEndPoint("StartToEnd", d), h -= j.text.replace(/\r\n|\n|\r/g, "").length, i > 0 && 3 == g.nodeType)
  759. for(var r = g.previousSibling; r && 3 == r.nodeType;) h -= r.nodeValue.length,
  760. r = r.previousSibling;
  761. return {
  762. node: g,
  763. offset: h
  764. }
  765. }
  766. function _getEndRange(a, b) {
  767. var c = a.ownerDocument || a,
  768. d = c.body.createTextRange();
  769. if(c == a) return d.collapse(!0),
  770. d;
  771. if(1 == a.nodeType && a.childNodes.length > 0) {
  772. var e, f, g = a.childNodes;
  773. if(0 === b ? (f = g[0], e = !0) : (f = g[b - 1], e = !1), !f) return d;
  774. if("head" === K(f).name) return 1 === b && (e = !0),
  775. 2 === b && (e = !1),
  776. d.collapse(e),
  777. d;
  778. if(1 == f.nodeType) {
  779. var h, i = K(f);
  780. return i.isControl() && (h = c.createElement("span"), e ? i.before(h) : i.after(h), f = h),
  781. _moveToElementText(d, f),
  782. d.collapse(e),
  783. h && K(h).remove(),
  784. d
  785. }
  786. a = f,
  787. b = e ? 0 : f.nodeValue.length
  788. }
  789. var j = c.createElement("span");
  790. return K(a).before(j),
  791. _moveToElementText(d, j),
  792. d.moveStart("character", b),
  793. K(j).remove(),
  794. d
  795. }
  796. function _toRange(a) {
  797. function b(a) {
  798. "tr" == K(a.node).name && (a.node = a.node.cells[a.offset], a.offset = 0)
  799. }
  800. var c, d;
  801. if(_IERANGE) {
  802. if(a.item) return c = _getDoc(a.item(0)),
  803. d = new KRange(c),
  804. d.selectNode(a.item(0)),
  805. d;
  806. c = a.parentElement().ownerDocument;
  807. var e = _getStartEnd(a, !0),
  808. f = _getStartEnd(a, !1);
  809. return b(e),
  810. b(f),
  811. d = new KRange(c),
  812. d.setStart(e.node, e.offset),
  813. d.setEnd(f.node, f.offset),
  814. d
  815. }
  816. var g = a.startContainer;
  817. return c = g.ownerDocument || g,
  818. d = new KRange(c),
  819. d.setStart(g, a.startOffset),
  820. d.setEnd(a.endContainer, a.endOffset),
  821. d
  822. }
  823. function KRange(a) {
  824. this.init(a)
  825. }
  826. function _range(a) {
  827. return a.nodeName ? new KRange(a) : a.constructor === KRange ? a : _toRange(a)
  828. }
  829. function _nativeCommand(a, b, c) {
  830. try {
  831. a.execCommand(b, !1, c)
  832. } catch(d) {}
  833. }
  834. function _nativeCommandValue(a, b) {
  835. var c = "";
  836. try {
  837. c = a.queryCommandValue(b)
  838. } catch(d) {}
  839. return "string" != typeof c && (c = ""),
  840. c
  841. }
  842. function _getSel(a) {
  843. var b = _getWin(a);
  844. return _IERANGE ? a.selection : b.getSelection()
  845. }
  846. function _getRng(a) {
  847. var b, c = _getSel(a);
  848. try {
  849. b = c.rangeCount > 0 ? c.getRangeAt(0) : c.createRange()
  850. } catch(d) {}
  851. return !_IERANGE || b && (b.item || b.parentElement().ownerDocument === a) ? b : null
  852. }
  853. function _singleKeyMap(a) {
  854. var b, c, d = {};
  855. return _each(a,
  856. function(a, e) {
  857. b = a.split(",");
  858. for(var f = 0,
  859. g = b.length; g > f; f++) c = b[f],
  860. d[c] = e
  861. }),
  862. d
  863. }
  864. function _hasAttrOrCss(a, b) {
  865. return _hasAttrOrCssByKey(a, b, "*") || _hasAttrOrCssByKey(a, b)
  866. }
  867. function _hasAttrOrCssByKey(a, b, c) {
  868. if(c = c || a.name, 1 !== a.type) return !1;
  869. var d = _singleKeyMap(b);
  870. if(!d[c]) return !1;
  871. for(var e = d[c].split(","), f = 0, g = e.length; g > f; f++) {
  872. var h = e[f];
  873. if("*" === h) return !0;
  874. var i = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(h),
  875. j = i[1] ? "css" : "attr";
  876. h = i[2];
  877. var k = i[3] || "";
  878. if("" === k && "" !== a[j](h)) return !0;
  879. if("" !== k && a[j](h) === k) return !0
  880. }
  881. return !1
  882. }
  883. function _removeAttrOrCss(a, b) {
  884. 1 == a.type && (_removeAttrOrCssByKey(a, b, "*"), _removeAttrOrCssByKey(a, b))
  885. }
  886. function _removeAttrOrCssByKey(a, b, c) {
  887. if(c = c || a.name, 1 === a.type) {
  888. var d = _singleKeyMap(b);
  889. if(d[c]) {
  890. for(var e = d[c].split(","), f = !1, g = 0, h = e.length; h > g; g++) {
  891. var i = e[g];
  892. if("*" === i) {
  893. f = !0;
  894. break
  895. }
  896. var j = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(i);
  897. i = j[2],
  898. j[1] ? (i = _toCamel(i), a[0].style[i] && (a[0].style[i] = "")) : a.removeAttr(i)
  899. }
  900. f && a.remove(!0)
  901. }
  902. }
  903. }
  904. function _getInnerNode(a) {
  905. for(var b = a; b.first();) b = b.first();
  906. return b
  907. }
  908. function _isEmptyNode(a) {
  909. return 1 != a.type || a.isSingle() ? !1 : "" === a.html().replace(/<[^>]+>/g, "")
  910. }
  911. function _mergeWrapper(a, b) {
  912. a = a.clone(!0);
  913. for(var c = _getInnerNode(a), d = a, e = !1; b;) {
  914. for(; d;) d.name === b.name && (_mergeAttrs(d, b.attr(), b.css()), e = !0),
  915. d = d.first();
  916. e || c.append(b.clone(!1)),
  917. e = !1,
  918. b = b.first()
  919. }
  920. return a
  921. }
  922. function _wrapNode(a, b) {
  923. if(b = b.clone(!0), 3 == a.type) return _getInnerNode(b).append(a.clone(!1)),
  924. a.replaceWith(b),
  925. b;
  926. for(var c, d = a;
  927. (c = a.first()) && 1 == c.children().length;) a = c;
  928. c = a.first();
  929. for(var e = a.doc.createDocumentFragment(); c;) e.appendChild(c[0]),
  930. c = c.next();
  931. return b = _mergeWrapper(d, b),
  932. e.firstChild && _getInnerNode(b).append(e),
  933. d.replaceWith(b),
  934. b
  935. }
  936. function _mergeAttrs(a, b, c) {
  937. _each(b,
  938. function(b, c) {
  939. "style" !== b && a.attr(b, c)
  940. }),
  941. _each(c,
  942. function(b, c) {
  943. a.css(b, c)
  944. })
  945. }
  946. function _inPreElement(a) {
  947. for(; a && "body" != a.name;) {
  948. if(_PRE_TAG_MAP[a.name] || "div" == a.name && a.hasClass("ke-script")) return !0;
  949. a = a.parent()
  950. }
  951. return !1
  952. }
  953. function KCmd(a) {
  954. this.init(a)
  955. }
  956. function _cmd(a) {
  957. if(a.nodeName) {
  958. var b = _getDoc(a);
  959. a = _range(b).selectNodeContents(b.body).collapse(!1)
  960. }
  961. return new KCmd(a)
  962. }
  963. function _drag(a) {
  964. var b = a.moveEl,
  965. c = a.moveFn,
  966. d = a.clickEl || b,
  967. e = a.beforeDrag,
  968. f = a.iframeFix === undefined ? !0 : a.iframeFix,
  969. g = [document];
  970. f && K("iframe").each(function() {
  971. var a = _formatUrl(this.src || "", "absolute");
  972. if(!/^https?:\/\//.test(a)) {
  973. var b;
  974. try {
  975. b = _iframeDoc(this)
  976. } catch(c) {}
  977. if(b) {
  978. var d = K(this).pos();
  979. K(b).data("pos-x", d.x),
  980. K(b).data("pos-y", d.y),
  981. g.push(b)
  982. }
  983. }
  984. }),
  985. d.mousedown(function(a) {
  986. function f(a) {
  987. a.preventDefault();
  988. var b = K(_getDoc(a.target)),
  989. e = _round((b.data("pos-x") || 0) + a.pageX - o),
  990. f = _round((b.data("pos-y") || 0) + a.pageY - p);
  991. c.call(d, k, l, m, n, e, f)
  992. }
  993. function h(a) {
  994. a.preventDefault()
  995. }
  996. function i(a) {
  997. a.preventDefault(),
  998. K(g).unbind("mousemove", f).unbind("mouseup", i).unbind("selectstart", h),
  999. j.releaseCapture && j.releaseCapture()
  1000. }
  1001. if(0 === a.button || 1 === a.button) {
  1002. a.stopPropagation();
  1003. var j = d.get(),
  1004. k = _removeUnit(b.css("left")),
  1005. l = _removeUnit(b.css("top")),
  1006. m = b.width(),
  1007. n = b.height(),
  1008. o = a.pageX,
  1009. p = a.pageY;
  1010. e && e(),
  1011. K(g).mousemove(f).mouseup(i).bind("selectstart", h),
  1012. j.setCapture && j.setCapture()
  1013. }
  1014. })
  1015. }
  1016. function KWidget(a) {
  1017. this.init(a)
  1018. }
  1019. function _widget(a) {
  1020. return new KWidget(a)
  1021. }
  1022. function _iframeDoc(a) {
  1023. return a = _get(a),
  1024. a.contentDocument || a.contentWindow.document
  1025. }
  1026. function _getInitHtml(a, b, c, d) {
  1027. var e = ["" === _direction ? "<html>" : '<html dir="' + _direction + '">', '<head><meta charset="utf-8" /><title></title>', "<style>", "html {margin:0;padding:0;}", "body {margin:0;padding:5px;}", 'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}', "body, p, div {word-wrap: break-word;}", "p {margin:5px 0;}", "table {border-collapse:collapse;}", "img {border:0;}", "noscript {display:none;}", "table.ke-zeroborder td {border:1px dotted #AAA;}", "img.ke-flash {", " border:1px solid #AAA;", " background-image:url(" + a + "common/flash.gif);", " background-position:center center;", " background-repeat:no-repeat;", " width:100px;", " height:100px;", "}", "img.ke-rm {", " border:1px solid #AAA;", " background-image:url(" + a + "common/rm.gif);", " background-position:center center;", " background-repeat:no-repeat;", " width:100px;", " height:100px;", "}", "img.ke-media {", " border:1px solid #AAA;", " background-image:url(" + a + "common/media.gif);", " background-position:center center;", " background-repeat:no-repeat;", " width:100px;", " height:100px;", "}", "img.ke-anchor {", " border:1px dashed #666;", " width:16px;", " height:16px;", "}", ".ke-script, .ke-noscript, .ke-display-none {", " display:none;", " font-size:0;", " width:0;", " height:0;", "}", ".ke-pagebreak {", " border:1px dotted #AAA;", " font-size:0;", " height:2px;", "}", "</style>"];
  1028. return _isArray(c) || (c = [c]),
  1029. _each(c,
  1030. function(a, b) {
  1031. b && e.push('<link href="' + b + '" rel="stylesheet" />')
  1032. }),
  1033. d && e.push("<style>" + d + "</style>"),
  1034. e.push("</head><body " + (b ? 'class="' + b + '"' : "") + "></body></html>"),
  1035. e.join("\n")
  1036. }
  1037. function _elementVal(a, b) {
  1038. if(a.hasVal()) {
  1039. if(b === undefined) {
  1040. var c = a.val();
  1041. return c = c.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi, "")
  1042. }
  1043. return a.val(b)
  1044. }
  1045. return a.html(b)
  1046. }
  1047. function KEdit(a) {
  1048. this.init(a)
  1049. }
  1050. function _edit(a) {
  1051. return new KEdit(a)
  1052. }
  1053. function _selectToolbar(a, b) {
  1054. var c = this,
  1055. d = c.get(a);
  1056. if(d) {
  1057. if(d.hasClass("ke-disabled")) return;
  1058. b(d)
  1059. }
  1060. }
  1061. function KToolbar(a) {
  1062. this.init(a)
  1063. }
  1064. function _toolbar(a) {
  1065. return new KToolbar(a)
  1066. }
  1067. function KMenu(a) {
  1068. this.init(a)
  1069. }
  1070. function _menu(a) {
  1071. return new KMenu(a)
  1072. }
  1073. function KColorPicker(a) {
  1074. this.init(a)
  1075. }
  1076. function _colorpicker(a) {
  1077. return new KColorPicker(a)
  1078. }
  1079. function KUploadButton(a) {
  1080. this.init(a)
  1081. }
  1082. function _uploadbutton(a) {
  1083. return new KUploadButton(a)
  1084. }
  1085. function _createButton(a) {
  1086. a = a || {};
  1087. var b = a.name || "",
  1088. c = K('<span class="ke-button-common ke-button-outer" title="' + b + '"></span>'),
  1089. d = K('<input class="ke-button-common ke-button" type="button" value="' + b + '" />');
  1090. return a.click && d.click(a.click),
  1091. c.append(d),
  1092. c
  1093. }
  1094. function KDialog(a) {
  1095. this.init(a)
  1096. }
  1097. function _dialog(a) {
  1098. return new KDialog(a)
  1099. }
  1100. function _tabs(a) {
  1101. var b = _widget(a),
  1102. c = b.remove,
  1103. d = a.afterSelect,
  1104. e = b.div,
  1105. f = [];
  1106. e.addClass("ke-tabs").bind("contextmenu,mousedown,mousemove",
  1107. function(a) {
  1108. a.preventDefault()
  1109. });
  1110. var g = K('<ul class="ke-tabs-ul ke-clearfix"></ul>');
  1111. return e.append(g),
  1112. b.add = function(a) {
  1113. var b = K('<li class="ke-tabs-li">' + a.title + "</li>");
  1114. b.data("tab", a),
  1115. f.push(b),
  1116. g.append(b)
  1117. },
  1118. b.selectedIndex = 0,
  1119. b.select = function(a) {
  1120. b.selectedIndex = a,
  1121. _each(f,
  1122. function(c, d) {
  1123. d.unbind(),
  1124. c === a ? (d.addClass("ke-tabs-li-selected"), K(d.data("tab").panel).show("")) : (d.removeClass("ke-tabs-li-selected").removeClass("ke-tabs-li-on").mouseover(function() {
  1125. K(this).addClass("ke-tabs-li-on")
  1126. }).mouseout(function() {
  1127. K(this).removeClass("ke-tabs-li-on")
  1128. }).click(function() {
  1129. b.select(c)
  1130. }), K(d.data("tab").panel).hide())
  1131. }),
  1132. d && d.call(b, a)
  1133. },
  1134. b.remove = function() {
  1135. _each(f,
  1136. function() {
  1137. this.remove()
  1138. }),
  1139. g.remove(),
  1140. c.call(b)
  1141. },
  1142. b
  1143. }
  1144. function _loadScript(a, b) {
  1145. var c = document.getElementsByTagName("head")[0] || (_QUIRKS ? document.body : document.documentElement),
  1146. d = document.createElement("script");
  1147. c.appendChild(d),
  1148. d.src = a,
  1149. d.charset = "utf-8",
  1150. d.onload = d.onreadystatechange = function() {
  1151. this.readyState && "loaded" !== this.readyState || (b && b(), d.onload = d.onreadystatechange = null, c.removeChild(d))
  1152. }
  1153. }
  1154. function _chopQuery(a) {
  1155. var b = a.indexOf("?");
  1156. return b > 0 ? a.substr(0, b) : a
  1157. }
  1158. function _loadStyle(a) {
  1159. for(var b = document.getElementsByTagName("head")[0] || (_QUIRKS ? document.body : document.documentElement), c = document.createElement("link"), d = _chopQuery(_formatUrl(a, "absolute")), e = K('link[rel="stylesheet"]', b), f = 0, g = e.length; g > f; f++)
  1160. if(_chopQuery(_formatUrl(e[f].href, "absolute")) === d) return;
  1161. b.appendChild(c),
  1162. c.href = a,
  1163. c.rel = "stylesheet"
  1164. }
  1165. function _ajax(a, b, c, d, e) {
  1166. c = c || "GET",
  1167. e = e || "json";
  1168. var f = window.XMLHttpRequest ? new window.XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
  1169. if(f.open(c, a, !0), f.onreadystatechange = function() {
  1170. if(4 == f.readyState && 200 == f.status && b) {
  1171. var a = _trim(f.responseText);
  1172. "json" == e && (a = _json(a)),
  1173. b(a)
  1174. }
  1175. },
  1176. "POST" == c) {
  1177. var g = [];
  1178. _each(d,
  1179. function(a, b) {
  1180. g.push(encodeURIComponent(a) + "=" + encodeURIComponent(b))
  1181. });
  1182. try {
  1183. f.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
  1184. } catch(h) {}
  1185. f.send(g.join("&"))
  1186. } else f.send(null)
  1187. }
  1188. function _plugin(a, b) {
  1189. return a === undefined ? _plugins : b ? void(_plugins[a] = b) : _plugins[a]
  1190. }
  1191. function _parseLangKey(a) {
  1192. var b, c = "core";
  1193. return(b = /^(\w+)\.(\w+)$/.exec(a)) && (c = b[1], a = b[2]), {
  1194. ns: c,
  1195. key: a
  1196. }
  1197. }
  1198. function _lang(a, b) {
  1199. if(b = b === undefined ? K.options.langType : b, "string" == typeof a) {
  1200. if(!_language[b]) return "no language";
  1201. var c = a.length - 1;
  1202. if("." === a.substr(c)) return _language[b][a.substr(0, c)];
  1203. var d = _parseLangKey(a);
  1204. return _language[b][d.ns][d.key]
  1205. }
  1206. _each(a,
  1207. function(a, c) {
  1208. var d = _parseLangKey(a);
  1209. _language[b] || (_language[b] = {}),
  1210. _language[b][d.ns] || (_language[b][d.ns] = {}),
  1211. _language[b][d.ns][d.key] = c
  1212. })
  1213. }
  1214. function _getImageFromRange(a, b) {
  1215. if(!a.collapsed) {
  1216. a = a.cloneRange().up();
  1217. var c = a.startContainer,
  1218. d = a.startOffset;
  1219. if(_WEBKIT || a.isControl()) {
  1220. var e = K(c.childNodes[d]);
  1221. if(e && "img" == e.name) return b(e) ? e : void 0
  1222. }
  1223. }
  1224. }
  1225. function _bindContextmenuEvent() {
  1226. var a = this,
  1227. b = a.edit.doc;
  1228. K(b).contextmenu(function(b) {
  1229. if(a.menu && a.hideMenu(), !a.useContextmenu) return void b.preventDefault();
  1230. if(0 !== a._contextmenus.length) {
  1231. var c = 0,
  1232. d = [];
  1233. for(_each(a._contextmenus,
  1234. function() {
  1235. return "-" == this.title ? void d.push(this) : void(this.cond && this.cond() && (d.push(this), this.width && this.width > c && (c = this.width)))
  1236. }); d.length > 0 && "-" == d[0].title;) d.shift();
  1237. for(; d.length > 0 && "-" == d[d.length - 1].title;) d.pop();
  1238. var e = null;
  1239. if(_each(d,
  1240. function(a) {
  1241. "-" == this.title && "-" == e.title && delete d[a],
  1242. e = this
  1243. }), d.length > 0) {
  1244. b.preventDefault();
  1245. var f = K(a.edit.iframe).pos(),
  1246. g = _menu({
  1247. x: f.x + b.clientX,
  1248. y: f.y + b.clientY,
  1249. width: c,
  1250. css: {
  1251. visibility: "hidden"
  1252. },
  1253. shadowMode: a.shadowMode
  1254. });
  1255. _each(d,
  1256. function() {
  1257. this.title && g.addItem(this)
  1258. });
  1259. var h = _docElement(g.doc),
  1260. i = g.div.height();
  1261. b.clientY + i >= h.clientHeight - 100 && g.pos(g.x, _removeUnit(g.y) - i),
  1262. g.div.css("visibility", "visible"),
  1263. a.menu = g
  1264. }
  1265. }
  1266. })
  1267. }
  1268. function _bindNewlineEvent() {
  1269. function a(a) {
  1270. for(var b = K(a.commonAncestor()); b && (1 != b.type || b.isStyle());) b = b.parent();
  1271. return b.name
  1272. }
  1273. var b = this,
  1274. c = b.edit.doc,
  1275. d = b.newlineTag;
  1276. if(!(_IE && "br" !== d || _GECKO && 3 > _V && "p" !== d || _OPERA && 9 > _V)) {
  1277. var e = _toMap("h1,h2,h3,h4,h5,h6,pre,li"),
  1278. f = _toMap("p,h1,h2,h3,h4,h5,h6,pre,li,blockquote");
  1279. K(c).keydown(function(g) {
  1280. if(!(13 != g.which || g.shiftKey || g.ctrlKey || g.altKey)) {
  1281. b.cmd.selection();
  1282. var h = a(b.cmd.range);
  1283. if("marquee" != h && "select" != h) return "br" !== d || e[h] ? void(f[h] || _nativeCommand(c, "formatblock", "<p>")) : (g.preventDefault(), void b.insertHtml("<br />" + (_IE && 9 > _V ? "" : "​")))
  1284. }
  1285. }),
  1286. K(c).keyup(function(e) {
  1287. if(!(13 != e.which || e.shiftKey || e.ctrlKey || e.altKey) && "br" != d) {
  1288. if(_GECKO) {
  1289. var g = b.cmd.commonAncestor("p"),
  1290. h = b.cmd.commonAncestor("a");
  1291. return void(h && "" == h.text() && (h.remove(!0), b.cmd.range.selectNodeContents(g[0]).collapse(!0), b.cmd.select()))
  1292. }
  1293. b.cmd.selection();
  1294. var i = a(b.cmd.range);
  1295. if("marquee" != i && "select" != i) {
  1296. f[i] || _nativeCommand(c, "formatblock", "<p>");
  1297. var j = b.cmd.commonAncestor("div");
  1298. if(j) {
  1299. for(var k = K("<p></p>"), l = j[0].firstChild; l;) {
  1300. var m = l.nextSibling;
  1301. k.append(l),
  1302. l = m
  1303. }
  1304. j.before(k),
  1305. j.remove(),
  1306. b.cmd.range.selectNodeContents(k[0]),
  1307. b.cmd.select()
  1308. }
  1309. }
  1310. }
  1311. })
  1312. }
  1313. }
  1314. function _bindTabEvent() {
  1315. var a = this,
  1316. b = a.edit.doc;
  1317. K(b).keydown(function(c) {
  1318. if(9 == c.which) {
  1319. if(c.preventDefault(), a.afterTab) return void a.afterTab.call(a, c);
  1320. var d = a.cmd,
  1321. e = d.range;
  1322. e.shrink(),
  1323. e.collapsed && 1 == e.startContainer.nodeType && (e.insertNode(K("@&nbsp;", b)[0]), d.select()),
  1324. a.insertHtml("&nbsp;&nbsp;&nbsp;&nbsp;")
  1325. }
  1326. })
  1327. }
  1328. function _bindFocusEvent() {
  1329. var a = this;
  1330. K(a.edit.textarea[0], a.edit.win).focus(function(b) {
  1331. a.afterFocus && a.afterFocus.call(a, b)
  1332. }).blur(function(b) {
  1333. a.afterBlur && a.afterBlur.call(a, b)
  1334. })
  1335. }
  1336. function _removeBookmarkTag(a) {
  1337. return _trim(a.replace(/<span [^>]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/gi, ""))
  1338. }
  1339. function _removeTempTag(a) {
  1340. return a.replace(/<div[^>]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/gi, "")
  1341. }
  1342. function _addBookmarkToStack(a, b) {
  1343. if(0 === a.length) return void a.push(b);
  1344. var c = a[a.length - 1];
  1345. _removeBookmarkTag(b.html) !== _removeBookmarkTag(c.html) && a.push(b)
  1346. }
  1347. function _undoToRedo(a, b) {
  1348. var c, d, e = this,
  1349. f = e.edit,
  1350. g = f.doc.body;
  1351. if(0 === a.length) return e;
  1352. f.designMode ? (c = e.cmd.range, d = c.createBookmark(!0), d.html = g.innerHTML) : d = {
  1353. html: g.innerHTML
  1354. },
  1355. _addBookmarkToStack(b, d);
  1356. var h = a.pop();
  1357. return _removeBookmarkTag(d.html) === _removeBookmarkTag(h.html) && a.length > 0 && (h = a.pop()),
  1358. f.designMode ? (f.html(h.html), h.start && (c.moveToBookmark(h), e.select())) : K(g).html(_removeBookmarkTag(h.html)),
  1359. e
  1360. }
  1361. function KEditor(a) {
  1362. function b(a, b) {
  1363. KEditor.prototype[a] === undefined && (c[a] = b),
  1364. c.options[a] = b
  1365. }
  1366. var c = this;
  1367. c.options = {},
  1368. _each(a,
  1369. function(c) {
  1370. b(c, a[c])
  1371. }),
  1372. _each(K.options,
  1373. function(a, d) {
  1374. c[a] === undefined && b(a, d)
  1375. });
  1376. var d = K(c.srcElement || "<textarea/>");
  1377. c.width || (c.width = d[0].style.width || d.width()),
  1378. c.height || (c.height = d[0].style.height || d.height()),
  1379. b("width", _undef(c.width, c.minWidth)),
  1380. b("height", _undef(c.height, c.minHeight)),
  1381. b("width", _addUnit(c.width)),
  1382. b("height", _addUnit(c.height)),
  1383. _MOBILE && (!_IOS || 534 > _V) && (c.designMode = !1),
  1384. c.srcElement = d,
  1385. c.initContent = "",
  1386. c.plugin = {},
  1387. c.isCreated = !1,
  1388. c._handlers = {},
  1389. c._contextmenus = [],
  1390. c._undoStack = [],
  1391. c._redoStack = [],
  1392. c._firstAddBookmark = !0,
  1393. c.menu = c.contextmenu = null,
  1394. c.dialogs = []
  1395. }
  1396. function _editor(a) {
  1397. return new KEditor(a)
  1398. }
  1399. function _create(a, b) {
  1400. function c(a) {
  1401. return _each(_plugins,
  1402. function(b, c) {
  1403. _isFunction(c) && (c.call(a, KindEditor), a._pluginStatus || (a._pluginStatus = {}), a._pluginStatus[b] = "inited")
  1404. }),
  1405. a.create()
  1406. }
  1407. if(b = b || {},
  1408. b.basePath = _undef(b.basePath, K.basePath), b.themesPath = _undef(b.themesPath, b.basePath + "themes/"), b.langPath = _undef(b.langPath, b.basePath + "lang/"), b.pluginsPath = _undef(b.pluginsPath, b.basePath + "plugins/"), _undef(b.loadStyleMode, K.options.loadStyleMode)) {
  1409. var d = _undef(b.themeType, K.options.themeType);
  1410. _loadStyle(b.themesPath + "default/default.css"),
  1411. _loadStyle(b.themesPath + d + "/" + d + ".css")
  1412. }
  1413. var e = K(a);
  1414. if(e && 0 !== e.length) {
  1415. if(e.length > 1) return e.each(function() {
  1416. _create(this, b)
  1417. }),
  1418. _instances[0];
  1419. b.srcElement = e[0];
  1420. var f = new KEditor(b);
  1421. return _instances.push(f),
  1422. _language[f.langType] ? c(f) : (_loadScript(f.langPath + f.langType + ".js?ver=" + encodeURIComponent(K.DEBUG ? _TIME : _VERSION),
  1423. function() {
  1424. c(f)
  1425. }), f)
  1426. }
  1427. }
  1428. function _eachEditor(a, b) {
  1429. K(a).each(function(a, c) {
  1430. K.each(_instances,
  1431. function(a, d) {
  1432. return d && d.srcElement[0] == c ? (b.call(d, a), !1) : void 0
  1433. })
  1434. })
  1435. }
  1436. if(!window.KindEditor) {
  1437. window.console || (window.console = {}),
  1438. console.log || (console.log = function() {});
  1439. var _VERSION = "4.1.11 (2016-03-31)",
  1440. _ua = navigator.userAgent.toLowerCase(),
  1441. _IE = _ua.indexOf("msie") > -1 && -1 == _ua.indexOf("opera"),
  1442. _NEWIE = -1 == _ua.indexOf("msie") && _ua.indexOf("trident") > -1,
  1443. _GECKO = _ua.indexOf("gecko") > -1 && -1 == _ua.indexOf("khtml"),
  1444. _WEBKIT = _ua.indexOf("applewebkit") > -1,
  1445. _OPERA = _ua.indexOf("opera") > -1,
  1446. _MOBILE = _ua.indexOf("mobile") > -1,
  1447. _IOS = /ipad|iphone|ipod/.test(_ua),
  1448. _QUIRKS = "CSS1Compat" != document.compatMode,
  1449. _IERANGE = !window.getSelection,
  1450. _matches = /(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua),
  1451. _V = _matches ? _matches[1] : "0",
  1452. _TIME = (new Date).getTime(),
  1453. _round = Math.round,
  1454. K = {
  1455. DEBUG: !1,
  1456. VERSION: _VERSION,
  1457. IE: _IE,
  1458. GECKO: _GECKO,
  1459. WEBKIT: _WEBKIT,
  1460. OPERA: _OPERA,
  1461. V: _V,
  1462. TIME: _TIME,
  1463. each: _each,
  1464. isArray: _isArray,
  1465. isFunction: _isFunction,
  1466. inArray: _inArray,
  1467. inString: _inString,
  1468. trim: _trim,
  1469. addUnit: _addUnit,
  1470. removeUnit: _removeUnit,
  1471. escape: _escape,
  1472. unescape: _unescape,
  1473. toCamel: _toCamel,
  1474. toHex: _toHex,
  1475. toMap: _toMap,
  1476. toArray: _toArray,
  1477. undef: _undef,
  1478. invalidUrl: _invalidUrl,
  1479. addParam: _addParam,
  1480. extend: _extend,
  1481. json: _json
  1482. },
  1483. _INLINE_TAG_MAP = _toMap("a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),
  1484. _BLOCK_TAG_MAP = _toMap("address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul"),
  1485. _SINGLE_TAG_MAP = _toMap("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"),
  1486. _STYLE_TAG_MAP = _toMap("b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u"),
  1487. _CONTROL_TAG_MAP = _toMap("img,table,input,textarea,button"),
  1488. _PRE_TAG_MAP = _toMap("pre,style,script"),
  1489. _NOSPLIT_TAG_MAP = _toMap("html,head,body,td,tr,table,ol,ul,li"),
  1490. _AUTOCLOSE_TAG_MAP = _toMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"),
  1491. _FILL_ATTR_MAP = _toMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),
  1492. _VALUE_TAG_MAP = _toMap("input,button,textarea,select");
  1493. K.basePath = _getBasePath(),
  1494. K.options = {
  1495. designMode: !0,
  1496. fullscreenMode: !1,
  1497. filterMode: !0,
  1498. wellFormatMode: !0,
  1499. shadowMode: !0,
  1500. loadStyleMode: !0,
  1501. basePath: K.basePath,
  1502. themesPath: K.basePath + "themes/",
  1503. langPath: K.basePath + "lang/",
  1504. pluginsPath: K.basePath + "plugins/",
  1505. themeType: "default",
  1506. langType: "zh-CN",
  1507. urlType: "",
  1508. newlineTag: "p",
  1509. resizeType: 2,
  1510. syncType: "form",
  1511. pasteType: 2,
  1512. dialogAlignType: "page",
  1513. useContextmenu: !0,
  1514. fullscreenShortcut: !1,
  1515. bodyClass: "ke-content",
  1516. indentChar: " ",
  1517. cssPath: "",
  1518. cssData: "",
  1519. minWidth: 650,
  1520. minHeight: 100,
  1521. minChangeSize: 50,
  1522. zIndex: 811213,
  1523. items: ["source", "|", "undo", "redo", "|", "preview", "print", "template", "code", "cut", "copy", "paste", "plainpaste", "wordpaste", "|", "justifyleft", "justifycenter", "justifyright", "justifyfull", "insertorderedlist", "insertunorderedlist", "indent", "outdent", "subscript", "superscript", "clearhtml", "quickformat", "selectall", "|", "fullscreen", "/", "formatblock", "fontname", "fontsize", "|", "forecolor", "hilitecolor", "bold", "italic", "underline", "strikethrough", "lineheight", "removeformat", "|", "image", "multiimage", "flash", "media", "insertfile", "table", "hr", "emoticons", "baidumap", "pagebreak", "anchor", "link", "unlink", "|", "about"],
  1524. noDisableItems: ["source", "fullscreen"],
  1525. colorTable: [
  1526. ["#E53333", "#E56600", "#FF9900", "#64451D", "#DFC5A4", "#FFE500"],
  1527. ["#009900", "#006600", "#99BB00", "#B8D100", "#60D978", "#00D5FF"],
  1528. ["#337FE5", "#003399", "#4C33E5", "#9933E5", "#CC33E5", "#EE33EE"],
  1529. ["#FFFFFF", "#CCCCCC", "#999999", "#666666", "#333333", "#000000"]
  1530. ],
  1531. fontSizeTable: ["9px", "10px", "12px", "14px", "16px", "18px", "24px", "32px"],
  1532. htmlTags: {
  1533. font: ["id", "class", "color", "size", "face", ".background-color"],
  1534. span: ["id", "class", ".color", ".background-color", ".font-size", ".font-family", ".background", ".font-weight", ".font-style", ".text-decoration", ".vertical-align", ".line-height"],
  1535. div: ["id", "class", "align", ".border", ".margin", ".padding", ".text-align", ".color", ".background-color", ".font-size", ".font-family", ".font-weight", ".background", ".font-style", ".text-decoration", ".vertical-align", ".margin-left"],
  1536. table: ["id", "class", "border", "cellspacing", "cellpadding", "width", "height", "align", "bordercolor", ".padding", ".margin", ".border", "bgcolor", ".text-align", ".color", ".background-color", ".font-size", ".font-family", ".font-weight", ".font-style", ".text-decoration", ".background", ".width", ".height", ".border-collapse"],
  1537. "td,th": ["id", "class", "align", "valign", "width", "height", "colspan", "rowspan", "bgcolor", ".text-align", ".color", ".background-color", ".font-size", ".font-family", ".font-weight", ".font-style", ".text-decoration", ".vertical-align", ".background", ".border"],
  1538. a: ["id", "class", "href", "target", "name"],
  1539. embed: ["id", "class", "src", "width", "height", "type", "loop", "autostart", "quality", ".width", ".height", "align", "allowscriptaccess", "wmode"],
  1540. img: ["id", "class", "src", "width", "height", "border", "alt", "title", "align", ".width", ".height", ".border"],
  1541. "p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6": ["id", "class", "align", ".text-align", ".color", ".background-color", ".font-size", ".font-family", ".background", ".font-weight", ".font-style", ".text-decoration", ".vertical-align", ".text-indent", ".margin-left"],
  1542. pre: ["id", "class"],
  1543. hr: ["id", "class", ".page-break-after"],
  1544. "br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del": ["id", "class"],
  1545. iframe: ["id", "class", "src", "frameborder", "width", "height", ".width", ".height"]
  1546. },
  1547. layout: '<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>'
  1548. };
  1549. var _useCapture = !1,
  1550. _INPUT_KEY_MAP = _toMap("8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222"),
  1551. _CURSORMOVE_KEY_MAP = _toMap("33..40"),
  1552. _CHANGE_KEY_MAP = {};
  1553. _each(_INPUT_KEY_MAP,
  1554. function(a, b) {
  1555. _CHANGE_KEY_MAP[a] = b
  1556. }),
  1557. _each(_CURSORMOVE_KEY_MAP,
  1558. function(a, b) {
  1559. _CHANGE_KEY_MAP[a] = b
  1560. });
  1561. var _EVENT_PROPS = "altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which".split(",");
  1562. _extend(KEvent, {
  1563. init: function(a, b) {
  1564. var c = this,
  1565. d = a.ownerDocument || a.document || a;
  1566. if(c.event = b, _each(_EVENT_PROPS,
  1567. function(a, d) {
  1568. c[d] = b[d]
  1569. }), c.target || (c.target = c.srcElement || d), 3 === c.target.nodeType && (c.target = c.target.parentNode), !c.relatedTarget && c.fromElement && (c.relatedTarget = c.fromElement === c.target ? c.toElement : c.fromElement), null == c.pageX && null != c.clientX) {
  1570. var e = d.documentElement,
  1571. f = d.body;
  1572. c.pageX = c.clientX + (e && e.scrollLeft || f && f.scrollLeft || 0) - (e && e.clientLeft || f && f.clientLeft || 0),
  1573. c.pageY = c.clientY + (e && e.scrollTop || f && f.scrollTop || 0) - (e && e.clientTop || f && f.clientTop || 0)
  1574. }
  1575. switch(!c.which && (c.charCode || 0 === c.charCode ? c.charCode : c.keyCode) && (c.which = c.charCode || c.keyCode), !c.metaKey && c.ctrlKey && (c.metaKey = c.ctrlKey), c.which || c.button === undefined || (c.which = 1 & c.button ? 1 : 2 & c.button ? 3 : 4 & c.button ? 2 : 0), c.which) {
  1576. case 186:
  1577. c.which = 59;
  1578. break;
  1579. case 187:
  1580. case 107:
  1581. case 43:
  1582. c.which = 61;
  1583. break;
  1584. case 189:
  1585. case 45:
  1586. c.which = 109;
  1587. break;
  1588. case 42:
  1589. c.which = 106;
  1590. break;
  1591. case 47:
  1592. c.which = 111;
  1593. break;
  1594. case 78:
  1595. c.which = 110
  1596. }
  1597. c.which >= 96 && c.which <= 105 && (c.which -= 48)
  1598. },
  1599. preventDefault: function() {
  1600. var a = this.event;
  1601. a.preventDefault ? a.preventDefault() : a.returnValue = !1
  1602. },
  1603. stopPropagation: function() {
  1604. var a = this.event;
  1605. a.stopPropagation ? a.stopPropagation() : a.cancelBubble = !0
  1606. },
  1607. stop: function() {
  1608. this.preventDefault(),
  1609. this.stopPropagation()
  1610. }
  1611. });
  1612. var _eventExpendo = "kindeditor_" + _TIME,
  1613. _eventId = 0,
  1614. _eventData = {},
  1615. _readyFinished = !1;
  1616. window.attachEvent && window.attachEvent("onunload",
  1617. function() {
  1618. _each(_eventData,
  1619. function(a, b) {
  1620. b.el && _unbind(b.el)
  1621. })
  1622. }),
  1623. K.ctrl = _ctrl,
  1624. K.ready = _ready,
  1625. K.formatUrl = _formatUrl,
  1626. K.formatHtml = _formatHtml,
  1627. K.getCssList = _getCssList,
  1628. K.getAttrList = _getAttrList,
  1629. K.mediaType = _mediaType,
  1630. K.mediaAttrs = _mediaAttrs,
  1631. K.mediaEmbed = _mediaEmbed,
  1632. K.mediaImg = _mediaImg,
  1633. K.clearMsWord = _clearMsWord,
  1634. K.tmpl = _tmpl;
  1635. var _getSetAttrDiv = document.createElement("div");
  1636. _getSetAttrDiv.setAttribute("className", "t");
  1637. var _GET_SET_ATTRIBUTE = "t" !== _getSetAttrDiv.className;
  1638. K.query = _query,
  1639. K.queryAll = _queryAll,
  1640. _extend(KNode, {
  1641. init: function(a) {
  1642. var b = this;
  1643. a = _isArray(a) ? a : [a];
  1644. for(var c = 0,
  1645. d = 0,
  1646. e = a.length; e > d; d++) a[d] && (b[d] = a[d].constructor === KNode ? a[d][0] : a[d], c++);
  1647. b.length = c,
  1648. b.doc = _getDoc(b[0]),
  1649. b.name = _getNodeName(b[0]),
  1650. b.type = b.length > 0 ? b[0].nodeType : null,
  1651. b.win = _getWin(b[0])
  1652. },
  1653. each: function(a) {
  1654. for(var b = this,
  1655. c = 0; c < b.length; c++)
  1656. if(a.call(b[c], c, b[c]) === !1) return b;
  1657. return b
  1658. },
  1659. bind: function(a, b) {
  1660. return this.each(function() {
  1661. _bind(this, a, b)
  1662. }),
  1663. this
  1664. },
  1665. unbind: function(a, b) {
  1666. return this.each(function() {
  1667. _unbind(this, a, b)
  1668. }),
  1669. this
  1670. },
  1671. fire: function(a) {
  1672. return this.length < 1 ? this : (_fire(this[0], a), this)
  1673. },
  1674. hasAttr: function(a) {
  1675. return this.length < 1 ? !1 : !!_getAttr(this[0], a)
  1676. },
  1677. attr: function(a, b) {
  1678. var c = this;
  1679. return a === undefined ? _getAttrList(c.outer()) : "object" == typeof a ? (_each(a,
  1680. function(a, b) {
  1681. c.attr(a, b)
  1682. }), c) : b === undefined ? (b = c.length < 1 ? null : _getAttr(c[0], a), null === b ? "" : b) : (c.each(function() {
  1683. _setAttr(this, a, b)
  1684. }), c)
  1685. },
  1686. removeAttr: function(a) {
  1687. return this.each(function() {
  1688. _removeAttr(this, a)
  1689. }),
  1690. this
  1691. },
  1692. get: function(a) {
  1693. return this.length < 1 ? null : this[a || 0]
  1694. },
  1695. eq: function(a) {
  1696. return this.length < 1 ? null : this[a] ? new KNode(this[a]) : null
  1697. },
  1698. hasClass: function(a) {
  1699. return this.length < 1 ? !1 : _hasClass(this[0], a)
  1700. },
  1701. addClass: function(a) {
  1702. return this.each(function() {
  1703. _hasClass(this, a) || (this.className = _trim(this.className + " " + a))
  1704. }),
  1705. this
  1706. },
  1707. removeClass: function(a) {
  1708. return this.each(function() {
  1709. _hasClass(this, a) && (this.className = _trim(this.className.replace(new RegExp("(^|\\s)" + a + "(\\s|$)"), " ")))
  1710. }),
  1711. this
  1712. },
  1713. html: function(a) {
  1714. var b = this;
  1715. return a === undefined ? b.length < 1 || 1 != b.type ? "" : _formatHtml(b[0].innerHTML) : (b.each(function() {
  1716. _setHtml(this, a)
  1717. }), b)
  1718. },
  1719. text: function() {
  1720. var a = this;
  1721. return a.length < 1 ? "" : _IE ? a[0].innerText : a[0].textContent
  1722. },
  1723. hasVal: function() {
  1724. return this.length < 1 ? !1 : _hasVal(this[0])
  1725. },
  1726. val: function(a) {
  1727. var b = this;
  1728. return a === undefined ? b.length < 1 ? "" : b.hasVal() ? b[0].value : b.attr("value") : (b.each(function() {
  1729. _hasVal(this) ? this.value = a : _setAttr(this, "value", a)
  1730. }), b)
  1731. },
  1732. css: function(a, b) {
  1733. var c = this;
  1734. return a === undefined ? _getCssList(c.attr("style")) : "object" == typeof a ? (_each(a,
  1735. function(a, b) {
  1736. c.css(a, b)
  1737. }), c) : b === undefined ? c.length < 1 ? "" : c[0].style[_toCamel(a)] || _computedCss(c[0], a) || "" : (c.each(function() {
  1738. this.style[_toCamel(a)] = b
  1739. }), c)
  1740. },
  1741. width: function(a) {
  1742. var b = this;
  1743. return a === undefined ? b.length < 1 ? 0 : b[0].offsetWidth : b.css("width", _addUnit(a))
  1744. },
  1745. height: function(a) {
  1746. var b = this;
  1747. return a === undefined ? b.length < 1 ? 0 : b[0].offsetHeight : b.css("height", _addUnit(a))
  1748. },
  1749. opacity: function(a) {
  1750. return this.each(function() {
  1751. this.style.opacity === undefined ? this.style.filter = 1 == a ? "" : "alpha(opacity=" + 100 * a + ")" : this.style.opacity = 1 == a ? "" : a
  1752. }),
  1753. this
  1754. },
  1755. data: function(a, b) {
  1756. var c = this;
  1757. return a = "kindeditor_data_" + a,
  1758. b === undefined ? c.length < 1 ? null : c[0][a] : (this.each(function() {
  1759. this[a] = b
  1760. }), c)
  1761. },
  1762. pos: function() {
  1763. var a = this,
  1764. b = a[0],
  1765. c = 0,
  1766. d = 0;
  1767. if(b)
  1768. if(b.getBoundingClientRect) {
  1769. var e = b.getBoundingClientRect(),
  1770. f = _getScrollPos(a.doc);
  1771. c = e.left + f.x,
  1772. d = e.top + f.y
  1773. } else
  1774. for(; b;) c += b.offsetLeft,
  1775. d += b.offsetTop,
  1776. b = b.offsetParent;
  1777. return {
  1778. x: _round(c),
  1779. y: _round(d)
  1780. }
  1781. },
  1782. clone: function(a) {
  1783. return new KNode(this.length < 1 ? [] : this[0].cloneNode(a))
  1784. },
  1785. append: function(a) {
  1786. return this.each(function() {
  1787. this.appendChild && this.appendChild(_get(a))
  1788. }),
  1789. this
  1790. },
  1791. appendTo: function(a) {
  1792. return this.each(function() {
  1793. _get(a).appendChild(this)
  1794. }),
  1795. this
  1796. },
  1797. before: function(a) {
  1798. return this.each(function() {
  1799. this.parentNode.insertBefore(_get(a), this)
  1800. }),
  1801. this
  1802. },
  1803. after: function(a) {
  1804. return this.each(function() {
  1805. this.nextSibling ? this.parentNode.insertBefore(_get(a), this.nextSibling) : this.parentNode.appendChild(_get(a))
  1806. }),
  1807. this
  1808. },
  1809. replaceWith: function(a) {
  1810. var b = [];
  1811. return this.each(function(c, d) {
  1812. _unbind(d);
  1813. var e = _get(a);
  1814. d.parentNode.replaceChild(e, d),
  1815. b.push(e)
  1816. }),
  1817. K(b)
  1818. },
  1819. empty: function() {
  1820. var a = this;
  1821. return a.each(function(a, b) {
  1822. for(var c = b.firstChild; c;) {
  1823. if(!b.parentNode) return;
  1824. var d = c.nextSibling;
  1825. c.parentNode.removeChild(c),
  1826. c = d
  1827. }
  1828. }),
  1829. a
  1830. },
  1831. remove: function(a) {
  1832. var b = this;
  1833. return b.each(function(c, d) {
  1834. if(d.parentNode) {
  1835. if(_unbind(d), a)
  1836. for(var e = d.firstChild; e;) {
  1837. var f = e.nextSibling;
  1838. d.parentNode.insertBefore(e, d),
  1839. e = f
  1840. }
  1841. d.parentNode.removeChild(d),
  1842. delete b[c]
  1843. }
  1844. }),
  1845. b.length = 0,
  1846. b
  1847. },
  1848. show: function(a) {
  1849. var b = this;
  1850. return a === undefined && (a = b._originDisplay || ""),
  1851. "none" != b.css("display") ? b : b.css("display", a)
  1852. },
  1853. hide: function() {
  1854. var a = this;
  1855. return a.length < 1 ? a : (a._originDisplay = a[0].style.display, a.css("display", "none"))
  1856. },
  1857. outer: function() {
  1858. var a = this;
  1859. if(a.length < 1) return "";
  1860. var b, c = a.doc.createElement("div");
  1861. return c.appendChild(a[0].cloneNode(!0)),
  1862. b = _formatHtml(c.innerHTML),
  1863. c = null,
  1864. b
  1865. },
  1866. isSingle: function() {
  1867. return !!_SINGLE_TAG_MAP[this.name]
  1868. },
  1869. isInline: function() {
  1870. return !!_INLINE_TAG_MAP[this.name]
  1871. },
  1872. isBlock: function() {
  1873. return !!_BLOCK_TAG_MAP[this.name]
  1874. },
  1875. isStyle: function() {
  1876. return !!_STYLE_TAG_MAP[this.name]
  1877. },
  1878. isControl: function() {
  1879. return !!_CONTROL_TAG_MAP[this.name]
  1880. },
  1881. contains: function(a) {
  1882. return this.length < 1 ? !1 : _contains(this[0], _get(a))
  1883. },
  1884. parent: function() {
  1885. if(this.length < 1) return null;
  1886. var a = this[0].parentNode;
  1887. return a ? new KNode(a) : null
  1888. },
  1889. children: function() {
  1890. if(this.length < 1) return new KNode([]);
  1891. for(var a = [], b = this[0].firstChild; b;)(3 != b.nodeType || "" !== _trim(b.nodeValue)) && a.push(b),
  1892. b = b.nextSibling;
  1893. return new KNode(a)
  1894. },
  1895. first: function() {
  1896. var a = this.children();
  1897. return a.length > 0 ? a.eq(0) : null
  1898. },
  1899. last: function() {
  1900. var a = this.children();
  1901. return a.length > 0 ? a.eq(a.length - 1) : null
  1902. },
  1903. index: function() {
  1904. if(this.length < 1) return -1;
  1905. for(var a = -1,
  1906. b = this[0]; b;) a++,
  1907. b = b.previousSibling;
  1908. return a
  1909. },
  1910. prev: function() {
  1911. if(this.length < 1) return null;
  1912. var a = this[0].previousSibling;
  1913. return a ? new KNode(a) : null
  1914. },
  1915. next: function() {
  1916. if(this.length < 1) return null;
  1917. var a = this[0].nextSibling;
  1918. return a ? new KNode(a) : null
  1919. },
  1920. scan: function(a, b) {
  1921. function c(d) {
  1922. for(var e = b ? d.firstChild : d.lastChild; e;) {
  1923. var f = b ? e.nextSibling : e.previousSibling;
  1924. if(a(e) === !1) return !1;
  1925. if(c(e) === !1) return !1;
  1926. e = f
  1927. }
  1928. }
  1929. if(!(this.length < 1)) return b = b === undefined ? !0 : b,
  1930. c(this[0]),
  1931. this
  1932. }
  1933. }),
  1934. _each("blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error,contextmenu".split(","),
  1935. function(a, b) {
  1936. KNode.prototype[b] = function(a) {
  1937. return a ? this.bind(b, a) : this.fire(b)
  1938. }
  1939. });
  1940. var _K = K;
  1941. K = function(a, b) {
  1942. function c(a) {
  1943. return a[0] || (a = []),
  1944. new KNode(a)
  1945. }
  1946. if(a !== undefined && null !== a) {
  1947. if("string" == typeof a) {
  1948. b && (b = _get(b));
  1949. var d = a.length;
  1950. if("@" === a.charAt(0) && (a = a.substr(1)), a.length !== d || /<.+>/.test(a)) {
  1951. var e = b ? b.ownerDocument || b : document,
  1952. f = e.createElement("div"),
  1953. g = [];
  1954. f.innerHTML = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + a;
  1955. for(var h = 0,
  1956. i = f.childNodes.length; i > h; h++) {
  1957. var j = f.childNodes[h];
  1958. "__kindeditor_temp_tag__" != j.id && g.push(j)
  1959. }
  1960. return c(g)
  1961. }
  1962. return c(_queryAll(a, b))
  1963. }
  1964. return a && a.constructor === KNode ? a : (a.toArray && (a = a.toArray()), c(_isArray(a) ? a : _toArray(arguments)))
  1965. }
  1966. },
  1967. _each(_K,
  1968. function(a, b) {
  1969. K[a] = b
  1970. }),
  1971. K.NodeClass = KNode,
  1972. window.KindEditor = K;
  1973. var _START_TO_START = 0,
  1974. _START_TO_END = 1,
  1975. _END_TO_END = 2,
  1976. _END_TO_START = 3,
  1977. _BOOKMARK_ID = 0;
  1978. _extend(KRange, {
  1979. init: function(a) {
  1980. var b = this;
  1981. b.startContainer = a,
  1982. b.startOffset = 0,
  1983. b.endContainer = a,
  1984. b.endOffset = 0,
  1985. b.collapsed = !0,
  1986. b.doc = a
  1987. },
  1988. commonAncestor: function() {
  1989. function a(a) {
  1990. for(var b = []; a;) b.push(a),
  1991. a = a.parentNode;
  1992. return b
  1993. }
  1994. for(var b, c, d = a(this.startContainer), e = a(this.endContainer), f = 0, g = d.length, h = e.length; ++f && (b = d[g - f], c = e[h - f], b && c && b === c););
  1995. return d[g - f + 1]
  1996. },
  1997. setStart: function(a, b) {
  1998. var c = this,
  1999. d = c.doc;
  2000. return c.startContainer = a,
  2001. c.startOffset = b,
  2002. c.endContainer === d && (c.endContainer = a, c.endOffset = b),
  2003. _updateCollapsed(this)
  2004. },
  2005. setEnd: function(a, b) {
  2006. var c = this,
  2007. d = c.doc;
  2008. return c.endContainer = a,
  2009. c.endOffset = b,
  2010. c.startContainer === d && (c.startContainer = a, c.startOffset = b),
  2011. _updateCollapsed(this)
  2012. },
  2013. setStartBefore: function(a) {
  2014. return this.setStart(a.parentNode || this.doc, K(a).index())
  2015. },
  2016. setStartAfter: function(a) {
  2017. return this.setStart(a.parentNode || this.doc, K(a).index() + 1)
  2018. },
  2019. setEndBefore: function(a) {
  2020. return this.setEnd(a.parentNode || this.doc, K(a).index())
  2021. },
  2022. setEndAfter: function(a) {
  2023. return this.setEnd(a.parentNode || this.doc, K(a).index() + 1)
  2024. },
  2025. selectNode: function(a) {
  2026. return this.setStartBefore(a).setEndAfter(a)
  2027. },
  2028. selectNodeContents: function(a) {
  2029. var b = K(a);
  2030. if(3 == b.type || b.isSingle()) return this.selectNode(a);
  2031. var c = b.children();
  2032. return c.length > 0 ? this.setStartBefore(c[0]).setEndAfter(c[c.length - 1]) : this.setStart(a, 0).setEnd(a, 0)
  2033. },
  2034. collapse: function(a) {
  2035. return a ? this.setEnd(this.startContainer, this.startOffset) : this.setStart(this.endContainer, this.endOffset)
  2036. },
  2037. compareBoundaryPoints: function(a, b) {
  2038. var c = this.get(),
  2039. d = b.get();
  2040. if(!_IERANGE) return c.compareBoundaryPoints(a, d);
  2041. var e = {};
  2042. e[_START_TO_START] = "StartToStart",
  2043. e[_START_TO_END] = "EndToStart",
  2044. e[_END_TO_END] = "EndToEnd",
  2045. e[_END_TO_START] = "StartToEnd";
  2046. var f = c.compareEndPoints(e[a], d);
  2047. if(0 !== f) return f;
  2048. var g, h, i, j, k;
  2049. if((a === _START_TO_START || a === _END_TO_START) && (g = this.startContainer, j = this.startOffset), (a === _START_TO_END || a === _END_TO_END) && (g = this.endContainer, j = this.endOffset), (a === _START_TO_START || a === _START_TO_END) && (h = b.startContainer, k = b.startOffset), (a === _END_TO_END || a === _END_TO_START) && (h = b.endContainer, k = b.endOffset), g === h) {
  2050. var l = j - k;
  2051. return l > 0 ? 1 : 0 > l ? -1 : 0
  2052. }
  2053. for(i = h; i && i.parentNode !== g;) i = i.parentNode;
  2054. if(i) return K(i).index() >= j ? -1 : 1;
  2055. for(i = g; i && i.parentNode !== h;) i = i.parentNode;
  2056. return i ? K(i).index() >= k ? 1 : -1 : (i = K(h).next(), i && i.contains(g) ? 1 : (i = K(g).next(), i && i.contains(h) ? -1 : void 0))
  2057. },
  2058. cloneRange: function() {
  2059. return new KRange(this.doc).setStart(this.startContainer, this.startOffset).setEnd(this.endContainer, this.endOffset)
  2060. },
  2061. toString: function() {
  2062. var a = this.get(),
  2063. b = _IERANGE ? a.text : a.toString();
  2064. return b.replace(/\r\n|\n|\r/g, "")
  2065. },
  2066. cloneContents: function() {
  2067. return _copyAndDelete(this, !0, !1)
  2068. },
  2069. deleteContents: function() {
  2070. return _copyAndDelete(this, !1, !0)
  2071. },
  2072. extractContents: function() {
  2073. return _copyAndDelete(this, !0, !0)
  2074. },
  2075. insertNode: function(a) {
  2076. var b, c, d, e = this,
  2077. f = e.startContainer,
  2078. g = e.startOffset,
  2079. h = e.endContainer,
  2080. i = e.endOffset,
  2081. j = 1;
  2082. return "#document-fragment" === a.nodeName.toLowerCase() && (b = a.firstChild, c = a.lastChild, j = a.childNodes.length),
  2083. 1 == f.nodeType ? (d = f.childNodes[g], d ? (f.insertBefore(a, d), f === h && (i += j)) : f.appendChild(a)) : 3 == f.nodeType && (0 === g ? (f.parentNode.insertBefore(a, f), f.parentNode === h && (i += j)) : g >= f.nodeValue.length ? f.nextSibling ? f.parentNode.insertBefore(a, f.nextSibling) : f.parentNode.appendChild(a) : (d = g > 0 ? f.splitText(g) : f, f.parentNode.insertBefore(a, d), f === h && (h = d, i -= g))),
  2084. b ? e.setStartBefore(b).setEndAfter(c) : e.selectNode(a),
  2085. e.compareBoundaryPoints(_END_TO_END, e.cloneRange().setEnd(h, i)) >= 1 ? e : e.setEnd(h, i)
  2086. },
  2087. surroundContents: function(a) {
  2088. return a.appendChild(this.extractContents()),
  2089. this.insertNode(a).selectNode(a)
  2090. },
  2091. isControl: function() {
  2092. var a = this,
  2093. b = a.startContainer,
  2094. c = a.startOffset,
  2095. d = a.endContainer,
  2096. e = a.endOffset;
  2097. return 1 == b.nodeType && b === d && c + 1 === e && K(b.childNodes[c]).isControl()
  2098. },
  2099. get: function(a) {
  2100. var b, c = this,
  2101. d = c.doc;
  2102. if(!_IERANGE) {
  2103. b = d.createRange();
  2104. try {
  2105. b.setStart(c.startContainer, c.startOffset),
  2106. b.setEnd(c.endContainer, c.endOffset)
  2107. } catch(e) {}
  2108. return b
  2109. }
  2110. if(a && c.isControl()) return b = d.body.createControlRange(),
  2111. b.addElement(c.startContainer.childNodes[c.startOffset]),
  2112. b;
  2113. var f = c.cloneRange().down();
  2114. return b = d.body.createTextRange(),
  2115. b.setEndPoint("StartToStart", _getEndRange(f.startContainer, f.startOffset)),
  2116. b.setEndPoint("EndToStart", _getEndRange(f.endContainer, f.endOffset)),
  2117. b
  2118. },
  2119. html: function() {
  2120. return K(this.cloneContents()).outer()
  2121. },
  2122. down: function() {
  2123. function a(a, c, d) {
  2124. if(1 == a.nodeType) {
  2125. var e = K(a).children();
  2126. if(0 !== e.length) {
  2127. var f, g, h, i;
  2128. c > 0 && (f = e.eq(c - 1)),
  2129. c < e.length && (g = e.eq(c)),
  2130. f && 3 == f.type && (h = f[0], i = h.nodeValue.length),
  2131. g && 3 == g.type && (h = g[0], i = 0),
  2132. h && (d ? b.setStart(h, i) : b.setEnd(h, i))
  2133. }
  2134. }
  2135. }
  2136. var b = this;
  2137. return a(b.startContainer, b.startOffset, !0),
  2138. a(b.endContainer, b.endOffset, !1),
  2139. b
  2140. },
  2141. up: function() {
  2142. function a(a, c, d) {
  2143. 3 == a.nodeType && (0 === c ? d ? b.setStartBefore(a) : b.setEndBefore(a) : c == a.nodeValue.length && (d ? b.setStartAfter(a) : b.setEndAfter(a)))
  2144. }
  2145. var b = this;
  2146. return a(b.startContainer, b.startOffset, !0),
  2147. a(b.endContainer, b.endOffset, !1),
  2148. b
  2149. },
  2150. enlarge: function(a) {
  2151. function b(b, d, e) {
  2152. var f, g = K(b);
  2153. if(!(3 == g.type || _NOSPLIT_TAG_MAP[g.name] || !a && g.isBlock()))
  2154. if(0 === d) {
  2155. for(; !g.prev() && (f = g.parent(), f && !_NOSPLIT_TAG_MAP[f.name] && (a || !f.isBlock()));) g = f;
  2156. e ? c.setStartBefore(g[0]) : c.setEndBefore(g[0])
  2157. } else if(d == g.children().length) {
  2158. for(; !g.next() && (f = g.parent(), f && !_NOSPLIT_TAG_MAP[f.name] && (a || !f.isBlock()));) g = f;
  2159. e ? c.setStartAfter(g[0]) : c.setEndAfter(g[0])
  2160. }
  2161. }
  2162. var c = this;
  2163. return c.up(),
  2164. b(c.startContainer, c.startOffset, !0),
  2165. b(c.endContainer, c.endOffset, !1),
  2166. c
  2167. },
  2168. shrink: function() {
  2169. for(var a, b = this,
  2170. c = b.collapsed; 1 == b.startContainer.nodeType && (a = b.startContainer.childNodes[b.startOffset]) && 1 == a.nodeType && !K(a).isSingle();) b.setStart(a, 0);
  2171. if(c) return b.collapse(c);
  2172. for(; 1 == b.endContainer.nodeType && b.endOffset > 0 && (a = b.endContainer.childNodes[b.endOffset - 1]) && 1 == a.nodeType && !K(a).isSingle();) b.setEnd(a, a.childNodes.length);
  2173. return b
  2174. },
  2175. createBookmark: function(a) {
  2176. var b, c = this,
  2177. d = c.doc,
  2178. e = K('<span style="display:none;"></span>', d)[0];
  2179. return e.id = "__kindeditor_bookmark_start_" + _BOOKMARK_ID++ + "__",
  2180. c.collapsed || (b = e.cloneNode(!0), b.id = "__kindeditor_bookmark_end_" + _BOOKMARK_ID++ + "__"),
  2181. b && c.cloneRange().collapse(!1).insertNode(b).setEndBefore(b),
  2182. c.insertNode(e).setStartAfter(e), {
  2183. start: a ? "#" + e.id : e,
  2184. end: b ? a ? "#" + b.id : b : null
  2185. }
  2186. },
  2187. moveToBookmark: function(a) {
  2188. var b = this,
  2189. c = b.doc,
  2190. d = K(a.start, c),
  2191. e = a.end ? K(a.end, c) : null;
  2192. return !d || d.length < 1 ? b : (b.setStartBefore(d[0]), d.remove(), e && e.length > 0 ? (b.setEndBefore(e[0]), e.remove()) : b.collapse(!0), b)
  2193. },
  2194. dump: function() {
  2195. console.log("--------------------"),
  2196. console.log(3 == this.startContainer.nodeType ? this.startContainer.nodeValue : this.startContainer, this.startOffset),
  2197. console.log(3 == this.endContainer.nodeType ? this.endContainer.nodeValue : this.endContainer, this.endOffset)
  2198. }
  2199. }),
  2200. K.RangeClass = KRange,
  2201. K.range = _range,
  2202. K.START_TO_START = _START_TO_START,
  2203. K.START_TO_END = _START_TO_END,
  2204. K.END_TO_END = _END_TO_END,
  2205. K.END_TO_START = _END_TO_START,
  2206. _extend(KCmd, {
  2207. init: function(a) {
  2208. var b = this,
  2209. c = a.doc;
  2210. b.doc = c,
  2211. b.win = _getWin(c),
  2212. b.sel = _getSel(c),
  2213. b.range = a
  2214. },
  2215. selection: function(a) {
  2216. var b = this,
  2217. c = b.doc,
  2218. d = _getRng(c);
  2219. return b.sel = _getSel(c),
  2220. d ? (b.range = _range(d), "html" == K(b.range.startContainer).name && b.range.selectNodeContents(c.body).collapse(!1), b) : (a && b.range.selectNodeContents(c.body).collapse(!1), b)
  2221. },
  2222. select: function(a) {
  2223. a = _undef(a, !0);
  2224. var b, c = this,
  2225. d = c.sel,
  2226. e = c.range.cloneRange().shrink(),
  2227. f = e.startContainer,
  2228. g = e.startOffset,
  2229. h = (e.endContainer, e.endOffset, _getDoc(f)),
  2230. i = c.win,
  2231. j = !1;
  2232. if(a && 1 == f.nodeType && e.collapsed) {
  2233. if(_IERANGE) {
  2234. var k = K("<span>&nbsp;</span>", h);
  2235. e.insertNode(k[0]),
  2236. b = h.body.createTextRange();
  2237. try {
  2238. b.moveToElementText(k[0])
  2239. } catch(l) {}
  2240. return b.collapse(!1),
  2241. b.select(),
  2242. k.remove(),
  2243. i.focus(),
  2244. c
  2245. }
  2246. if(_WEBKIT) {
  2247. var m = f.childNodes;
  2248. (K(f).isInline() || g > 0 && K(m[g - 1]).isInline() || m[g] && K(m[g]).isInline()) && (e.insertNode(h.createTextNode("​")), j = !0)
  2249. }
  2250. }
  2251. if(_IERANGE) try {
  2252. b = e.get(!0),
  2253. b.select()
  2254. } catch(n) {} else if(j && e.collapse(!1), b = e.get(!0), d.removeAllRanges(), d.addRange(b), h !== document) {
  2255. var o = K(b.endContainer).pos();
  2256. i.scrollTo(o.x, o.y)
  2257. }
  2258. return i.focus(),
  2259. c
  2260. },
  2261. wrap: function(a) {
  2262. var b, c = this,
  2263. d = c.doc,
  2264. e = c.range;
  2265. if(b = K(a, d), e.collapsed) return e.shrink(),
  2266. e.insertNode(b[0]).selectNodeContents(b[0]),
  2267. c;
  2268. if(b.isBlock()) {
  2269. for(var f = b.clone(!0), g = f; g.first();) g = g.first();
  2270. return g.append(e.extractContents()),
  2271. e.insertNode(f[0]).selectNode(f[0]),
  2272. c
  2273. }
  2274. e.enlarge();
  2275. var h = e.createBookmark(),
  2276. i = e.commonAncestor(),
  2277. j = !1;
  2278. return K(i).scan(function(a) {
  2279. if(!j && a == h.start) return void(j = !0);
  2280. if(j) {
  2281. if(a == h.end) return !1;
  2282. var c = K(a);
  2283. if(_inPreElement(c)) return;
  2284. if(3 == c.type && _trim(a.nodeValue).length > 0) {
  2285. for(var d;
  2286. (d = c.parent()) && d.isStyle() && 1 == d.children().length;) c = d;
  2287. _wrapNode(c, b)
  2288. }
  2289. }
  2290. }),
  2291. e.moveToBookmark(h),
  2292. c
  2293. },
  2294. split: function(a, b) {
  2295. for(var c, d = this.range,
  2296. e = d.doc,
  2297. f = d.cloneRange().collapse(a), g = f.startContainer, h = f.startOffset, i = 3 == g.nodeType ? g.parentNode : g, j = !1; i && i.parentNode;) {
  2298. if(c = K(i), b) {
  2299. if(!c.isStyle()) break;
  2300. if(!_hasAttrOrCss(c, b)) break
  2301. } else if(_NOSPLIT_TAG_MAP[c.name]) break;
  2302. j = !0,
  2303. i = i.parentNode
  2304. }
  2305. if(j) {
  2306. var k = e.createElement("span");
  2307. d.cloneRange().collapse(!a).insertNode(k),
  2308. a ? f.setStartBefore(i.firstChild).setEnd(g, h) : f.setStart(g, h).setEndAfter(i.lastChild);
  2309. var l = f.extractContents(),
  2310. m = l.firstChild,
  2311. n = l.lastChild;
  2312. a ? (f.insertNode(l), d.setStartAfter(n).setEndBefore(k)) : (i.appendChild(l), d.setStartBefore(k).setEndBefore(m));
  2313. var o = k.parentNode;
  2314. if(o == d.endContainer) {
  2315. var p = K(k).prev(),
  2316. q = K(k).next();
  2317. p && q && 3 == p.type && 3 == q.type ? d.setEnd(p[0], p[0].nodeValue.length) : a || d.setEnd(d.endContainer, d.endOffset - 1)
  2318. }
  2319. o.removeChild(k)
  2320. }
  2321. return this
  2322. },
  2323. remove: function(a) {
  2324. var b = this,
  2325. c = b.doc,
  2326. d = b.range;
  2327. if(d.enlarge(), 0 === d.startOffset) {
  2328. for(var e, f = K(d.startContainer);
  2329. (e = f.parent()) && e.isStyle() && 1 == e.children().length;) f = e;
  2330. d.setStart(f[0], 0),
  2331. f = K(d.startContainer),
  2332. f.isBlock() && _removeAttrOrCss(f, a);
  2333. var g = f.parent();
  2334. g && g.isBlock() && _removeAttrOrCss(g, a)
  2335. }
  2336. var h, i;
  2337. if(d.collapsed) {
  2338. if(b.split(!0, a), h = d.startContainer, i = d.startOffset, i > 0) {
  2339. var j = K(h.childNodes[i - 1]);
  2340. j && _isEmptyNode(j) && (j.remove(), d.setStart(h, i - 1))
  2341. }
  2342. var k = K(h.childNodes[i]);
  2343. return k && _isEmptyNode(k) && k.remove(),
  2344. _isEmptyNode(h) && (d.startBefore(h), h.remove()),
  2345. d.collapse(!0),
  2346. b
  2347. }
  2348. b.split(!0, a),
  2349. b.split(!1, a);
  2350. var l = c.createElement("span"),
  2351. m = c.createElement("span");
  2352. d.cloneRange().collapse(!1).insertNode(m),
  2353. d.cloneRange().collapse(!0).insertNode(l);
  2354. var n = [],
  2355. o = !1;
  2356. K(d.commonAncestor()).scan(function(a) {
  2357. return o || a != l ? a == m ? !1 : void(o && n.push(a)) : void(o = !0)
  2358. }),
  2359. K(l).remove(),
  2360. K(m).remove(),
  2361. h = d.startContainer,
  2362. i = d.startOffset;
  2363. var p = d.endContainer,
  2364. q = d.endOffset;
  2365. if(i > 0) {
  2366. var r = K(h.childNodes[i - 1]);
  2367. r && _isEmptyNode(r) && (r.remove(), d.setStart(h, i - 1), h == p && d.setEnd(p, q - 1));
  2368. var s = K(h.childNodes[i]);
  2369. s && _isEmptyNode(s) && (s.remove(), h == p && d.setEnd(p, q - 1))
  2370. }
  2371. var t = K(p.childNodes[d.endOffset]);
  2372. t && _isEmptyNode(t) && t.remove();
  2373. var u = d.createBookmark(!0);
  2374. return _each(n,
  2375. function(b, c) {
  2376. _removeAttrOrCss(K(c), a)
  2377. }),
  2378. d.moveToBookmark(u),
  2379. b
  2380. },
  2381. commonNode: function(a) {
  2382. function b(b) {
  2383. for(var c = b,
  2384. d = b; d;) {
  2385. if(_hasAttrOrCss(K(d), a)) return K(d);
  2386. d = d.parentNode
  2387. }
  2388. for(; c && (c = c.lastChild);)
  2389. if(_hasAttrOrCss(K(c), a)) return K(c);
  2390. return null
  2391. }
  2392. var c = this.range,
  2393. d = c.endContainer,
  2394. e = c.endOffset,
  2395. f = 3 == d.nodeType || 0 === e ? d : d.childNodes[e - 1],
  2396. g = b(f);
  2397. if(g) return g;
  2398. if(1 == f.nodeType || 3 == d.nodeType && 0 === e) {
  2399. var h = K(f).prev();
  2400. if(h) return b(h)
  2401. }
  2402. return null
  2403. },
  2404. commonAncestor: function(a) {
  2405. function b(b) {
  2406. for(; b;) {
  2407. if(1 == b.nodeType && b.tagName.toLowerCase() === a) return b;
  2408. b = b.parentNode
  2409. }
  2410. return null
  2411. }
  2412. var c = this.range,
  2413. d = c.startContainer,
  2414. e = c.startOffset,
  2415. f = c.endContainer,
  2416. g = c.endOffset,
  2417. h = 3 == d.nodeType || 0 === e ? d : d.childNodes[e - 1],
  2418. i = 3 == f.nodeType || 0 === g ? f : f.childNodes[g - 1],
  2419. j = b(h),
  2420. k = b(i);
  2421. return j && k && j === k ? K(j) : null
  2422. },
  2423. state: function(a) {
  2424. var b = this,
  2425. c = b.doc,
  2426. d = !1;
  2427. try {
  2428. d = c.queryCommandState(a)
  2429. } catch(e) {}
  2430. return d
  2431. },
  2432. val: function(a) {
  2433. function b(a) {
  2434. return a.toLowerCase()
  2435. } {
  2436. var c = this,
  2437. d = c.doc;
  2438. c.range
  2439. }
  2440. a = b(a);
  2441. var e, f = "";
  2442. return "fontfamily" === a || "fontname" === a ? (f = _nativeCommandValue(d, "fontname"), f = f.replace(/['"]/g, ""), b(f)) : "formatblock" === a ? (f = _nativeCommandValue(d, a), "" === f && (e = c.commonNode({
  2443. "h1,h2,h3,h4,h5,h6,p,div,pre,address": "*"
  2444. }), e && (f = e.name)), "Normal" === f && (f = "p"), b(f)) : "fontsize" === a ? (e = c.commonNode({
  2445. "*": ".font-size"
  2446. }), e && (f = e.css("font-size")), b(f)) : "forecolor" === a ? (e = c.commonNode({
  2447. "*": ".color"
  2448. }), e && (f = e.css("color")), f = _toHex(f), "" === f && (f = "default"), b(f)) : "hilitecolor" === a ? (e = c.commonNode({
  2449. "*": ".background-color"
  2450. }), e && (f = e.css("background-color")), f = _toHex(f), "" === f && (f = "default"), b(f)) : f
  2451. },
  2452. toggle: function(a, b) {
  2453. var c = this;
  2454. return c.commonNode(b) ? c.remove(b) : c.wrap(a),
  2455. c.select()
  2456. },
  2457. bold: function() {
  2458. return this.toggle("<strong></strong>", {
  2459. span: ".font-weight=bold",
  2460. strong: "*",
  2461. b: "*"
  2462. })
  2463. },
  2464. italic: function() {
  2465. return this.toggle("<em></em>", {
  2466. span: ".font-style=italic",
  2467. em: "*",
  2468. i: "*"
  2469. })
  2470. },
  2471. underline: function() {
  2472. return this.toggle("<u></u>", {
  2473. span: ".text-decoration=underline",
  2474. u: "*"
  2475. })
  2476. },
  2477. strikethrough: function() {
  2478. return this.toggle("<s></s>", {
  2479. span: ".text-decoration=line-through",
  2480. s: "*"
  2481. })
  2482. },
  2483. forecolor: function(a) {
  2484. return this.wrap('<span style="color:' + a + ';"></span>').select()
  2485. },
  2486. hilitecolor: function(a) {
  2487. return this.wrap('<span style="background-color:' + a + ';"></span>').select()
  2488. },
  2489. fontsize: function(a) {
  2490. return this.wrap('<span style="font-size:' + a + ';"></span>').select()
  2491. },
  2492. fontname: function(a) {
  2493. return this.fontfamily(a)
  2494. },
  2495. fontfamily: function(a) {
  2496. return this.wrap('<span style="font-family:' + a + ';"></span>').select()
  2497. },
  2498. removeformat: function() {
  2499. var a = {
  2500. "*": ".font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent"
  2501. },
  2502. b = _STYLE_TAG_MAP;
  2503. return _each(b,
  2504. function(b) {
  2505. a[b] = "*"
  2506. }),
  2507. this.remove(a),
  2508. this.select()
  2509. },
  2510. inserthtml: function(a, b) {
  2511. function c(a, b) {
  2512. b = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + b;
  2513. var c = a.get();
  2514. c.item ? c.item(0).outerHTML = b : c.pasteHTML(b);
  2515. var d = a.doc.getElementById("__kindeditor_temp_tag__");
  2516. d.parentNode.removeChild(d);
  2517. var f = _toRange(c);
  2518. a.setEnd(f.endContainer, f.endOffset),
  2519. a.collapse(!1),
  2520. e.select(!1)
  2521. }
  2522. function d(a, b) {
  2523. var c = a.doc,
  2524. d = c.createDocumentFragment();
  2525. K("@" + b, c).each(function() {
  2526. d.appendChild(this)
  2527. }),
  2528. a.deleteContents(),
  2529. a.insertNode(d),
  2530. a.collapse(!1),
  2531. e.select(!1)
  2532. }
  2533. var e = this,
  2534. f = e.range;
  2535. if("" === a) return e;
  2536. if(_IERANGE && b) {
  2537. try {
  2538. c(f, a)
  2539. } catch(g) {
  2540. d(f, a)
  2541. }
  2542. return e
  2543. }
  2544. return d(f, a),
  2545. e
  2546. },
  2547. hr: function() {
  2548. return this.inserthtml("<hr />")
  2549. },
  2550. print: function() {
  2551. return this.win.print(),
  2552. this
  2553. },
  2554. insertimage: function(a, b, c, d, e, f) {
  2555. b = _undef(b, ""),
  2556. e = _undef(e, 0);
  2557. var g = '<img src="' + _escape(a) + '" data-ke-src="' + _escape(a) + '" ';
  2558. return c && (g += 'width="' + _escape(c) + '" '),
  2559. d && (g += 'height="' + _escape(d) + '" '),
  2560. b && (g += 'title="' + _escape(b) + '" '),
  2561. f && (g += 'align="' + _escape(f) + '" '),
  2562. g += 'alt="' + _escape(b) + '" ',
  2563. g += "/>",
  2564. this.inserthtml(g)
  2565. },
  2566. createlink: function(a, b) {
  2567. function c(a, b, c) {
  2568. K(a).attr("href", b).attr("data-ke-src", b),
  2569. c ? K(a).attr("target", c) : K(a).removeAttr("target")
  2570. }
  2571. var d = this,
  2572. e = d.doc,
  2573. f = d.range;
  2574. d.select();
  2575. var g = d.commonNode({
  2576. a: "*"
  2577. });
  2578. g && !f.isControl() && (f.selectNode(g.get()), d.select());
  2579. var h = '<a href="' + _escape(a) + '" data-ke-src="' + _escape(a) + '" ';
  2580. if(b && (h += ' target="' + _escape(b) + '"'), f.collapsed) return h += ">" + _escape(a) + "</a>",
  2581. d.inserthtml(h);
  2582. if(f.isControl()) {
  2583. var i = K(f.startContainer.childNodes[f.startOffset]);
  2584. return h += "></a>",
  2585. i.after(K(h, e)),
  2586. i.next().append(i),
  2587. f.selectNode(i[0]),
  2588. d.select()
  2589. }
  2590. var j = f.startContainer,
  2591. k = f.startOffset,
  2592. l = f.endContainer,
  2593. m = f.endOffset;
  2594. if(1 == j.nodeType && j === l && k + 1 === m) {
  2595. var n = j.childNodes[k];
  2596. if("a" == n.nodeName.toLowerCase()) return c(n, a, b),
  2597. d
  2598. }
  2599. return _nativeCommand(e, "createlink", "__kindeditor_temp_url__"),
  2600. K('a[href="__kindeditor_temp_url__"]', e).each(function() {
  2601. c(this, a, b)
  2602. }),
  2603. d
  2604. },
  2605. unlink: function() {
  2606. var a = this,
  2607. b = a.doc,
  2608. c = a.range;
  2609. if(a.select(), c.collapsed) {
  2610. var d = a.commonNode({
  2611. a: "*"
  2612. });
  2613. if(d && (c.selectNode(d.get()), a.select()), _nativeCommand(b, "unlink", null), _WEBKIT && "img" === K(c.startContainer).name) {
  2614. var e = K(c.startContainer).parent();
  2615. "a" === e.name && e.remove(!0)
  2616. }
  2617. } else _nativeCommand(b, "unlink", null);
  2618. return a
  2619. }
  2620. }),
  2621. _each("formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript".split(","),
  2622. function(a, b) {
  2623. KCmd.prototype[b] = function(a) {
  2624. var c = this;
  2625. return c.select(),
  2626. _nativeCommand(c.doc, b, a),
  2627. _IERANGE && _inArray(b, "justifyleft,justifycenter,justifyright,justifyfull".split(",")) >= 0 && c.selection(),
  2628. (!_IERANGE || _inArray(b, "formatblock,selectall,insertorderedlist,insertunorderedlist".split(",")) >= 0) && c.selection(),
  2629. c
  2630. }
  2631. }),
  2632. _each("cut,copy,paste".split(","),
  2633. function(a, b) {
  2634. KCmd.prototype[b] = function() {
  2635. var a = this;
  2636. if(!a.doc.queryCommandSupported(b)) throw "not supported";
  2637. return a.select(),
  2638. _nativeCommand(a.doc, b, null),
  2639. a
  2640. }
  2641. }),
  2642. K.CmdClass = KCmd,
  2643. K.cmd = _cmd,
  2644. _extend(KWidget, {
  2645. init: function(a) {
  2646. var b = this;
  2647. if(b.name = a.name || "", b.doc = a.doc || document, b.win = _getWin(b.doc), b.x = _addUnit(a.x), b.y = _addUnit(a.y), b.z = a.z, b.width = _addUnit(a.width), b.height = _addUnit(a.height), b.div = K('<div style="display:block;"></div>'), b.options = a, b._alignEl = a.alignEl, b.width && b.div.css("width", b.width), b.height && b.div.css("height", b.height), b.z && b.div.css({
  2648. position: "absolute",
  2649. left: b.x,
  2650. top: b.y,
  2651. "z-index": b.z
  2652. }), !b.z || b.x !== undefined && b.y !== undefined || b.autoPos(b.width, b.height), a.cls && b.div.addClass(a.cls), a.shadowMode && b.div.addClass("ke-shadow"), a.css && b.div.css(a.css), a.src ? K(a.src).replaceWith(b.div) : K(b.doc.body).append(b.div), a.html && b.div.html(a.html), a.autoScroll)
  2653. if(_IE && 7 > _V || _QUIRKS) {
  2654. var c = _getScrollPos();
  2655. K(b.win).bind("scroll",
  2656. function() {
  2657. var a = _getScrollPos(),
  2658. d = a.x - c.x,
  2659. e = a.y - c.y;
  2660. b.pos(_removeUnit(b.x) + d, _removeUnit(b.y) + e, !1)
  2661. })
  2662. } else b.div.css("position", "fixed")
  2663. },
  2664. pos: function(a, b, c) {
  2665. var d = this;
  2666. return c = _undef(c, !0),
  2667. null !== a && (a = 0 > a ? 0 : _addUnit(a), d.div.css("left", a), c && (d.x = a)),
  2668. null !== b && (b = 0 > b ? 0 : _addUnit(b), d.div.css("top", b), c && (d.y = b)),
  2669. d
  2670. },
  2671. autoPos: function(a, b) {
  2672. var c = this,
  2673. d = _removeUnit(a) || 0,
  2674. e = _removeUnit(b) || 0,
  2675. f = _getScrollPos();
  2676. if(c._alignEl) {
  2677. var g = K(c._alignEl),
  2678. h = g.pos(),
  2679. i = _round(g[0].clientWidth / 2 - d / 2),
  2680. j = _round(g[0].clientHeight / 2 - e / 2);
  2681. x = 0 > i ? h.x : h.x + i,
  2682. y = 0 > j ? h.y : h.y + j
  2683. } else {
  2684. var k = _docElement(c.doc);
  2685. x = _round(f.x + (k.clientWidth - d) / 2),
  2686. y = _round(f.y + (k.clientHeight - e) / 2)
  2687. }
  2688. return _IE && 7 > _V || _QUIRKS || (x -= f.x, y -= f.y),
  2689. c.pos(x, y)
  2690. },
  2691. remove: function() {
  2692. var a = this;
  2693. return(_IE && 7 > _V || _QUIRKS) && K(a.win).unbind("scroll"),
  2694. a.div.remove(),
  2695. _each(a,
  2696. function(b) {
  2697. a[b] = null
  2698. }),
  2699. this
  2700. },
  2701. show: function() {
  2702. return this.div.show(),
  2703. this
  2704. },
  2705. hide: function() {
  2706. return this.div.hide(),
  2707. this
  2708. },
  2709. draggable: function(a) {
  2710. var b = this;
  2711. return a = a || {},
  2712. a.moveEl = b.div,
  2713. a.moveFn = function(a, c, d, e, f, g) {
  2714. (a += f) < 0 && (a = 0),
  2715. (c += g) < 0 && (c = 0),
  2716. b.pos(a, c)
  2717. },
  2718. _drag(a),
  2719. b
  2720. }
  2721. }),
  2722. K.WidgetClass = KWidget,
  2723. K.widget = _widget;
  2724. var html, _direction = "";
  2725. (html = document.getElementsByTagName("html")) && (_direction = html[0].dir),
  2726. _extend(KEdit, KWidget, {
  2727. init: function(a) {
  2728. function b() {
  2729. var b = _iframeDoc(c.iframe);
  2730. b.open(),
  2731. h && (b.domain = document.domain),
  2732. b.write(_getInitHtml(d, e, f, g)),
  2733. b.close(),
  2734. c.win = c.iframe[0].contentWindow,
  2735. c.doc = b;
  2736. var i = _cmd(b);
  2737. c.afterChange(function() {
  2738. i.selection()
  2739. }),
  2740. _WEBKIT && K(b).click(function(a) {
  2741. "img" === K(a.target).name && (i.selection(!0), i.range.selectNode(a.target), i.select())
  2742. }),
  2743. _IE && (c._mousedownHandler = function() {
  2744. var a = i.range.cloneRange();
  2745. a.shrink(),
  2746. a.isControl() && c.blur()
  2747. },
  2748. K(document).mousedown(c._mousedownHandler), K(b).keydown(function(a) {
  2749. if(8 == a.which) {
  2750. i.selection();
  2751. var b = i.range;
  2752. b.isControl() && (b.collapse(!0), K(b.startContainer.childNodes[b.startOffset]).remove(), a.preventDefault())
  2753. }
  2754. })),
  2755. c.cmd = i,
  2756. c.html(_elementVal(c.srcElement)),
  2757. _IE ? (b.body.disabled = !0, b.body.contentEditable = !0, b.body.removeAttribute("disabled")) : b.designMode = "on",
  2758. a.afterCreate && a.afterCreate.call(c)
  2759. }
  2760. var c = this;
  2761. KEdit.parent.init.call(c, a),
  2762. c.srcElement = K(a.srcElement),
  2763. c.div.addClass("ke-edit"),
  2764. c.designMode = _undef(a.designMode, !0),
  2765. c.beforeGetHtml = a.beforeGetHtml,
  2766. c.beforeSetHtml = a.beforeSetHtml,
  2767. c.afterSetHtml = a.afterSetHtml;
  2768. var d = _undef(a.themesPath, ""),
  2769. e = a.bodyClass,
  2770. f = a.cssPath,
  2771. g = a.cssData,
  2772. h = "res:" != location.protocol && location.host.replace(/:\d+/, "") !== document.domain,
  2773. i = "document.open();" + (h ? 'document.domain="' + document.domain + '";' : "") + "document.close();",
  2774. j = _IE ? ' src="javascript:void(function(){' + encodeURIComponent(i) + '}())"' : "";
  2775. c.iframe = K('<iframe class="ke-edit-iframe" hidefocus="true" frameborder="0"' + j + "></iframe>").css("width", "100%"),
  2776. c.textarea = K('<textarea class="ke-edit-textarea" hidefocus="true"></textarea>').css("width", "100%"),
  2777. c.tabIndex = isNaN(parseInt(a.tabIndex, 10)) ? c.srcElement.attr("tabindex") : parseInt(a.tabIndex, 10),
  2778. c.iframe.attr("tabindex", c.tabIndex),
  2779. c.textarea.attr("tabindex", c.tabIndex),
  2780. c.width && c.setWidth(c.width),
  2781. c.height && c.setHeight(c.height),
  2782. c.designMode ? c.textarea.hide() : c.iframe.hide(),
  2783. h && c.iframe.bind("load",
  2784. function() {
  2785. c.iframe.unbind("load"),
  2786. _IE ? b() : setTimeout(b, 0)
  2787. }),
  2788. c.div.append(c.iframe),
  2789. c.div.append(c.textarea),
  2790. c.srcElement.hide(), !h && b()
  2791. },
  2792. setWidth: function(a) {
  2793. var b = this;
  2794. return a = _addUnit(a),
  2795. b.width = a,
  2796. b.div.css("width", a),
  2797. b
  2798. },
  2799. setHeight: function(a) {
  2800. var b = this;
  2801. return a = _addUnit(a),
  2802. b.height = a,
  2803. b.div.css("height", a),
  2804. b.iframe.css("height", a),
  2805. (_IE && 8 > _V || _QUIRKS) && (a = _addUnit(_removeUnit(a) - 2)),
  2806. b.textarea.css("height", a),
  2807. b
  2808. },
  2809. remove: function() {
  2810. var a = this,
  2811. b = a.doc;
  2812. K(b.body).unbind(),
  2813. K(b).unbind(),
  2814. K(a.win).unbind(),
  2815. a._mousedownHandler && K(document).unbind("mousedown", a._mousedownHandler),
  2816. _elementVal(a.srcElement, a.html()),
  2817. a.srcElement.show(),
  2818. a.iframe.unbind(),
  2819. a.textarea.unbind(),
  2820. KEdit.parent.remove.call(a)
  2821. },
  2822. html: function(a, b) {
  2823. var c = this,
  2824. d = c.doc;
  2825. if(c.designMode) {
  2826. var e = d.body;
  2827. return a === undefined ? (a = b ? "<!doctype html><html>" + e.parentNode.innerHTML + "</html>" : e.innerHTML, c.beforeGetHtml && (a = c.beforeGetHtml(a)), _GECKO && "<br />" == a && (a = ""), a) : (c.beforeSetHtml && (a = c.beforeSetHtml(a)), _IE && _V >= 9 && (a = a.replace(/(<.*?checked=")checked(".*>)/gi, "$1$2")), K(e).html(a), c.afterSetHtml && c.afterSetHtml(), c)
  2828. }
  2829. return a === undefined ? c.textarea.val() : (c.textarea.val(a), c)
  2830. },
  2831. design: function(a) {
  2832. var b, c = this;
  2833. if(a === undefined ? !c.designMode : a) {
  2834. if(!c.designMode) {
  2835. b = c.html(),
  2836. c.designMode = !0,
  2837. c.textarea.hide(),
  2838. c.html(b);
  2839. var d = c.iframe,
  2840. e = _removeUnit(c.height);
  2841. d.height(e - 2),
  2842. d.show(),
  2843. setTimeout(function() {
  2844. d.height(e)
  2845. },
  2846. 0)
  2847. }
  2848. } else c.designMode && (b = c.html(), c.designMode = !1, c.html(b), c.iframe.hide(), c.textarea.show());
  2849. return c.focus()
  2850. },
  2851. focus: function() {
  2852. var a = this;
  2853. return a.designMode ? a.win.focus() : a.textarea[0].focus(),
  2854. a
  2855. },
  2856. blur: function() {
  2857. var a = this;
  2858. if(_IE) {
  2859. var b = K('<input type="text" style="float:left;width:0;height:0;padding:0;margin:0;border:0;" value="" />', a.div);
  2860. a.div.append(b),
  2861. b[0].focus(),
  2862. b.remove()
  2863. } else a.designMode ? a.win.blur() : a.textarea[0].blur();
  2864. return a
  2865. },
  2866. afterChange: function(a) {
  2867. function b(b) {
  2868. setTimeout(function() {
  2869. a(b)
  2870. },
  2871. 1)
  2872. }
  2873. var c = this,
  2874. d = c.doc,
  2875. e = d.body;
  2876. return K(d).keyup(function(b) {
  2877. b.ctrlKey || b.altKey || !_CHANGE_KEY_MAP[b.which] || a(b)
  2878. }),
  2879. K(d).mouseup(a).contextmenu(a),
  2880. K(c.win).blur(a),
  2881. K(e).bind("paste", b),
  2882. K(e).bind("cut", b),
  2883. c
  2884. }
  2885. }),
  2886. K.EditClass = KEdit,
  2887. K.edit = _edit,
  2888. K.iframeDoc = _iframeDoc,
  2889. _extend(KToolbar, KWidget, {
  2890. init: function(a) {
  2891. function b(a) {
  2892. var b = K(a);
  2893. return b.hasClass("ke-outline") ? b : b.hasClass("ke-toolbar-icon") ? b.parent() : void 0
  2894. }
  2895. function c(a, c) {
  2896. var d = b(a.target);
  2897. if(d) {
  2898. if(d.hasClass("ke-disabled")) return;
  2899. if(d.hasClass("ke-selected")) return;
  2900. d[c]("ke-on")
  2901. }
  2902. }
  2903. var d = this;
  2904. KToolbar.parent.init.call(d, a),
  2905. d.disableMode = _undef(a.disableMode, !1),
  2906. d.noDisableItemMap = _toMap(_undef(a.noDisableItems, [])),
  2907. d._itemMap = {},
  2908. d.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",
  2909. function(a) {
  2910. a.preventDefault()
  2911. }).attr("unselectable", "on"),
  2912. d.div.mouseover(function(a) {
  2913. c(a, "addClass")
  2914. }).mouseout(function(a) {
  2915. c(a, "removeClass")
  2916. }).click(function(a) {
  2917. var c = b(a.target);
  2918. if(c) {
  2919. if(c.hasClass("ke-disabled")) return;
  2920. d.options.click.call(this, a, c.attr("data-name"))
  2921. }
  2922. })
  2923. },
  2924. get: function(a) {
  2925. return this._itemMap[a] ? this._itemMap[a] : this._itemMap[a] = K("span.ke-icon-" + a, this.div).parent()
  2926. },
  2927. select: function(a) {
  2928. return _selectToolbar.call(this, a,
  2929. function(a) {
  2930. a.addClass("ke-selected")
  2931. }),
  2932. self
  2933. },
  2934. unselect: function(a) {
  2935. return _selectToolbar.call(this, a,
  2936. function(a) {
  2937. a.removeClass("ke-selected").removeClass("ke-on")
  2938. }),
  2939. self
  2940. },
  2941. enable: function(a) {
  2942. var b = this,
  2943. c = a.get ? a : b.get(a);
  2944. return c && (c.removeClass("ke-disabled"), c.opacity(1)),
  2945. b
  2946. },
  2947. disable: function(a) {
  2948. var b = this,
  2949. c = a.get ? a : b.get(a);
  2950. return c && (c.removeClass("ke-selected").addClass("ke-disabled"), c.opacity(.5)),
  2951. b
  2952. },
  2953. disableAll: function(a, b) {
  2954. var c = this,
  2955. d = c.noDisableItemMap;
  2956. return b && (d = _toMap(b)),
  2957. (a === undefined ? !c.disableMode : a) ? (K("span.ke-outline", c.div).each(function() {
  2958. var a = K(this),
  2959. b = a[0].getAttribute("data-name", 2);
  2960. d[b] || c.disable(a)
  2961. }), c.disableMode = !0) : (K("span.ke-outline", c.div).each(function() {
  2962. var a = K(this),
  2963. b = a[0].getAttribute("data-name", 2);
  2964. d[b] || c.enable(a)
  2965. }), c.disableMode = !1),
  2966. c
  2967. }
  2968. }),
  2969. K.ToolbarClass = KToolbar,
  2970. K.toolbar = _toolbar,
  2971. _extend(KMenu, KWidget, {
  2972. init: function(a) {
  2973. var b = this;
  2974. a.z = a.z || 811213,
  2975. KMenu.parent.init.call(b, a),
  2976. b.centerLineMode = _undef(a.centerLineMode, !0),
  2977. b.div.addClass("ke-menu").bind("click,mousedown",
  2978. function(a) {
  2979. a.stopPropagation()
  2980. }).attr("unselectable", "on")
  2981. },
  2982. addItem: function(a) {
  2983. var b = this;
  2984. if("-" === a.title) return void b.div.append(K('<div class="ke-menu-separator"></div>'));
  2985. var c = K('<div class="ke-menu-item" unselectable="on"></div>'),
  2986. d = K('<div class="ke-inline-block ke-menu-item-left"></div>'),
  2987. e = K('<div class="ke-inline-block ke-menu-item-right"></div>'),
  2988. f = _addUnit(a.height),
  2989. g = _undef(a.iconClass, "");
  2990. b.div.append(c),
  2991. f && (c.css("height", f), e.css("line-height", f));
  2992. var h;
  2993. return b.centerLineMode && (h = K('<div class="ke-inline-block ke-menu-item-center"></div>'), f && h.css("height", f)),
  2994. c.mouseover(function() {
  2995. K(this).addClass("ke-menu-item-on"),
  2996. h && h.addClass("ke-menu-item-center-on")
  2997. }).mouseout(function() {
  2998. K(this).removeClass("ke-menu-item-on"),
  2999. h && h.removeClass("ke-menu-item-center-on")
  3000. }).click(function(b) {
  3001. a.click.call(K(this)),
  3002. b.stopPropagation()
  3003. }).append(d),
  3004. h && c.append(h),
  3005. c.append(e),
  3006. a.checked && (g = "ke-icon-checked"),
  3007. "" !== g && d.html('<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url ' + g + '"></span>'),
  3008. e.html(a.title),
  3009. b
  3010. },
  3011. remove: function() {
  3012. var a = this;
  3013. return a.options.beforeRemove && a.options.beforeRemove.call(a),
  3014. K(".ke-menu-item", a.div[0]).unbind(),
  3015. KMenu.parent.remove.call(a),
  3016. a
  3017. }
  3018. }),
  3019. K.MenuClass = KMenu,
  3020. K.menu = _menu,
  3021. _extend(KColorPicker, KWidget, {
  3022. init: function(a) {
  3023. var b = this;
  3024. a.z = a.z || 811213,
  3025. KColorPicker.parent.init.call(b, a);
  3026. var c = a.colors || [
  3027. ["#E53333", "#E56600", "#FF9900", "#64451D", "#DFC5A4", "#FFE500"],
  3028. ["#009900", "#006600", "#99BB00", "#B8D100", "#60D978", "#00D5FF"],
  3029. ["#337FE5", "#003399", "#4C33E5", "#9933E5", "#CC33E5", "#EE33EE"],
  3030. ["#FFFFFF", "#CCCCCC", "#999999", "#666666", "#333333", "#000000"]
  3031. ];
  3032. b.selectedColor = (a.selectedColor || "").toLowerCase(),
  3033. b._cells = [],
  3034. b.div.addClass("ke-colorpicker").bind("click,mousedown",
  3035. function(a) {
  3036. a.stopPropagation()
  3037. }).attr("unselectable", "on");
  3038. var d = b.doc.createElement("table");
  3039. b.div.append(d),
  3040. d.className = "ke-colorpicker-table",
  3041. d.cellPadding = 0,
  3042. d.cellSpacing = 0,
  3043. d.border = 0;
  3044. var e = d.insertRow(0),
  3045. f = e.insertCell(0);
  3046. f.colSpan = c[0].length,
  3047. b._addAttr(f, "", "ke-colorpicker-cell-top");
  3048. for(var g = 0; g < c.length; g++) {
  3049. e = d.insertRow(g + 1);
  3050. for(var h = 0; h < c[g].length; h++) f = e.insertCell(h),
  3051. b._addAttr(f, c[g][h], "ke-colorpicker-cell")
  3052. }
  3053. },
  3054. _addAttr: function(a, b, c) {
  3055. var d = this;
  3056. a = K(a).addClass(c),
  3057. d.selectedColor === b.toLowerCase() && a.addClass("ke-colorpicker-cell-selected"),
  3058. a.attr("title", b || d.options.noColor),
  3059. a.mouseover(function() {
  3060. K(this).addClass("ke-colorpicker-cell-on")
  3061. }),
  3062. a.mouseout(function() {
  3063. K(this).removeClass("ke-colorpicker-cell-on")
  3064. }),
  3065. a.click(function(a) {
  3066. a.stop(),
  3067. d.options.click.call(K(this), b)
  3068. }),
  3069. b ? a.append(K('<div class="ke-colorpicker-cell-color" unselectable="on"></div>').css("background-color", b)) : a.html(d.options.noColor),
  3070. K(a).attr("unselectable", "on"),
  3071. d._cells.push(a)
  3072. },
  3073. remove: function() {
  3074. var a = this;
  3075. return _each(a._cells,
  3076. function() {
  3077. this.unbind()
  3078. }),
  3079. KColorPicker.parent.remove.call(a),
  3080. a
  3081. }
  3082. }),
  3083. K.ColorPickerClass = KColorPicker,
  3084. K.colorpicker = _colorpicker,
  3085. _extend(KUploadButton, {
  3086. init: function(a) {
  3087. var b = this,
  3088. c = K(a.button),
  3089. d = a.fieldName || "file",
  3090. e = a.url || "",
  3091. f = c.val(),
  3092. g = a.extraParams || {},
  3093. h = c[0].className || "",
  3094. i = a.target || "kindeditor_upload_iframe_" + (new Date).getTime();
  3095. a.afterError = a.afterError ||
  3096. function(a) {
  3097. alert(a)
  3098. };
  3099. var j = [];
  3100. for(var k in g) j.push('<input type="hidden" name="' + k + '" value="' + g[k] + '" />');
  3101. var l = ['<div class="ke-inline-block ' + h + '">', a.target ? "" : '<iframe name="' + i + '" style="display:none;"></iframe>', a.form ? '<div class="ke-upload-area">' : '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + i + '" action="' + e + '">', '<span class="ke-button-common">', j.join(""), '<input type="button" class="ke-button-common ke-button" value="' + f + '" />', "</span>", '<input type="file" class="ke-upload-file" name="' + d + '" tabindex="-1" />', a.form ? "</div>" : "</form>", "</div>"].join(""),
  3102. m = K(l, c.doc);
  3103. c.hide(),
  3104. c.before(m),
  3105. b.div = m,
  3106. b.button = c,
  3107. b.iframe = a.target ? K('iframe[name="' + i + '"]') : K("iframe", m),
  3108. b.form = a.form ? K(a.form) : K("form", m),
  3109. b.fileBox = K(".ke-upload-file", m);
  3110. var n = a.width || K(".ke-button-common", m).width();
  3111. K(".ke-upload-area", m).width(n),
  3112. b.options = a
  3113. },
  3114. submit: function() {
  3115. var a = this,
  3116. b = a.iframe;
  3117. return b.bind("load",
  3118. function() {
  3119. b.unbind();
  3120. var c = document.createElement("form");
  3121. a.fileBox.before(c),
  3122. K(c).append(a.fileBox),
  3123. c.reset(),
  3124. K(c).remove(!0);
  3125. var d, e = K.iframeDoc(b),
  3126. f = e.getElementsByTagName("pre")[0],
  3127. g = "";
  3128. g = f ? f.innerHTML : e.body.innerHTML,
  3129. g = _unescape(g),
  3130. b[0].src = "javascript:false";
  3131. try {
  3132. var rtjson = K.json(g);
  3133. if(rtjson.error) {
  3134. d = rtjson;
  3135. } else {
  3136. d = {};
  3137. if(rtjson.state == 'success') {
  3138. d.error = 0;
  3139. d.url = rtjson.data[0].fileurl;
  3140. } else {
  3141. d.error = 1;
  3142. d.message = '上传失败';
  3143. }
  3144. }
  3145. } catch(h) {
  3146. a.options.afterError.call(a, "<!doctype html><html>" + e.body.parentNode.innerHTML + "</html>")
  3147. }
  3148. d && a.options.afterUpload.call(a, d)
  3149. }),
  3150. a.form[0].submit(),
  3151. a
  3152. },
  3153. remove: function() {
  3154. var a = this;
  3155. return a.fileBox && a.fileBox.unbind(),
  3156. a.iframe.remove(),
  3157. a.div.remove(),
  3158. a.button.show(),
  3159. a
  3160. }
  3161. }),
  3162. K.UploadButtonClass = KUploadButton,
  3163. K.uploadbutton = _uploadbutton,
  3164. _extend(KDialog, KWidget, {
  3165. init: function(a) {
  3166. var b = this,
  3167. c = _undef(a.shadowMode, !0);
  3168. a.z = a.z || 811213,
  3169. a.shadowMode = !1,
  3170. a.autoScroll = _undef(a.autoScroll, !0),
  3171. KDialog.parent.init.call(b, a);
  3172. var d = a.title,
  3173. e = K(a.body, b.doc),
  3174. f = a.previewBtn,
  3175. g = a.yesBtn,
  3176. h = a.noBtn,
  3177. i = a.closeBtn,
  3178. j = _undef(a.showMask, !0);
  3179. b.div.addClass("ke-dialog").bind("click,mousedown",
  3180. function(a) {
  3181. a.stopPropagation()
  3182. });
  3183. var k = K('<div class="ke-dialog-content"></div>').appendTo(b.div);
  3184. _IE && 7 > _V ? b.iframeMask = K('<iframe src="about:blank" class="ke-dialog-shadow"></iframe>').appendTo(b.div) : c && K('<div class="ke-dialog-shadow"></div>').appendTo(b.div);
  3185. var l = K('<div class="ke-dialog-header"></div>');
  3186. k.append(l),
  3187. l.html(d),
  3188. b.closeIcon = K('<span class="ke-dialog-icon-close" title="' + i.name + '"></span>').click(i.click),
  3189. l.append(b.closeIcon),
  3190. b.draggable({
  3191. clickEl: l,
  3192. beforeDrag: a.beforeDrag
  3193. });
  3194. var m = K('<div class="ke-dialog-body"></div>');
  3195. k.append(m),
  3196. m.append(e);
  3197. var n = K('<div class="ke-dialog-footer"></div>');
  3198. if((f || g || h) && k.append(n), _each([{
  3199. btn: f,
  3200. name: "preview"
  3201. },
  3202. {
  3203. btn: g,
  3204. name: "yes"
  3205. },
  3206. {
  3207. btn: h,
  3208. name: "no"
  3209. }
  3210. ],
  3211. function() {
  3212. if(this.btn) {
  3213. var a = _createButton(this.btn);
  3214. a.addClass("ke-dialog-" + this.name),
  3215. n.append(a)
  3216. }
  3217. }), b.height && m.height(_removeUnit(b.height) - l.height() - n.height()), b.div.width(b.div.width()), b.div.height(b.div.height()), b.mask = null, j) {
  3218. var o = _docElement(b.doc),
  3219. p = Math.max(o.scrollWidth, o.clientWidth),
  3220. q = Math.max(o.scrollHeight, o.clientHeight);
  3221. b.mask = _widget({
  3222. x: 0,
  3223. y: 0,
  3224. z: b.z - 1,
  3225. cls: "ke-dialog-mask",
  3226. width: p,
  3227. height: q
  3228. })
  3229. }
  3230. b.autoPos(b.div.width(), b.div.height()),
  3231. b.footerDiv = n,
  3232. b.bodyDiv = m,
  3233. b.headerDiv = l,
  3234. b.isLoading = !1
  3235. },
  3236. setMaskIndex: function(a) {
  3237. var b = this;
  3238. b.mask.div.css("z-index", a)
  3239. },
  3240. showLoading: function(a) {
  3241. a = _undef(a, "");
  3242. var b = this,
  3243. c = b.bodyDiv;
  3244. return b.loading = K('<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:' + Math.round(c.height() / 3) + 'px;">' + a + "</div></div>").width(c.width()).height(c.height()).css("top", b.headerDiv.height() + "px"),
  3245. c.css("visibility", "hidden").after(b.loading),
  3246. b.isLoading = !0,
  3247. b
  3248. },
  3249. hideLoading: function() {
  3250. return this.loading && this.loading.remove(),
  3251. this.bodyDiv.css("visibility", "visible"),
  3252. this.isLoading = !1,
  3253. this
  3254. },
  3255. remove: function() {
  3256. var a = this;
  3257. return a.options.beforeRemove && a.options.beforeRemove.call(a),
  3258. a.mask && a.mask.remove(),
  3259. a.iframeMask && a.iframeMask.remove(),
  3260. a.closeIcon.unbind(),
  3261. K("input", a.div).unbind(),
  3262. K("button", a.div).unbind(),
  3263. a.footerDiv.unbind(),
  3264. a.bodyDiv.unbind(),
  3265. a.headerDiv.unbind(),
  3266. K("iframe", a.div).each(function() {
  3267. K(this).remove()
  3268. }),
  3269. KDialog.parent.remove.call(a),
  3270. a
  3271. }
  3272. }),
  3273. K.DialogClass = KDialog,
  3274. K.dialog = _dialog,
  3275. K.tabs = _tabs,
  3276. K.loadScript = _loadScript,
  3277. K.loadStyle = _loadStyle,
  3278. K.ajax = _ajax;
  3279. var _plugins = {},
  3280. _language = {};
  3281. KEditor.prototype = {
  3282. lang: function(a) {
  3283. return _lang(a, this.langType)
  3284. },
  3285. loadPlugin: function(a, b) {
  3286. var c = this,
  3287. d = this._pluginStatus;
  3288. return d || (d = this._pluginStatus = {}),
  3289. _plugins[a] ? _isFunction(_plugins[a]) ? (d[a] || (_plugins[a].call(c, KindEditor), d[a] = "inited"), b && b.call(c), c) : (setTimeout(function() {
  3290. c.loadPlugin(a, b)
  3291. },
  3292. 100), c) : (_plugins[a] = "loading", _loadScript(c.pluginsPath + a + "/" + a + ".js?ver=" + encodeURIComponent(K.DEBUG ? _TIME : _VERSION),
  3293. function() {
  3294. setTimeout(function() {
  3295. _plugins[a] && c.loadPlugin(a, b)
  3296. },
  3297. 0)
  3298. }), c)
  3299. },
  3300. handler: function(a, b) {
  3301. var c = this;
  3302. return c._handlers[a] || (c._handlers[a] = []),
  3303. _isFunction(b) ? (c._handlers[a].push(b), c) : (_each(c._handlers[a],
  3304. function() {
  3305. b = this.call(c, b)
  3306. }), b)
  3307. },
  3308. clickToolbar: function(a, b) {
  3309. var c = this,
  3310. d = "clickToolbar" + a;
  3311. return b === undefined ? c._handlers[d] ? c.handler(d) : (c.loadPlugin(a,
  3312. function() {
  3313. c.handler(d)
  3314. }), c) : c.handler(d, b)
  3315. },
  3316. updateState: function() {
  3317. var a = this;
  3318. return _each("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,subscript,superscript,bold,italic,underline,strikethrough".split(","),
  3319. function(b, c) {
  3320. a.cmd.state(c) ? a.toolbar.select(c) : a.toolbar.unselect(c)
  3321. }),
  3322. a
  3323. },
  3324. addContextmenu: function(a) {
  3325. return this._contextmenus.push(a),
  3326. this
  3327. },
  3328. afterCreate: function(a) {
  3329. return this.handler("afterCreate", a)
  3330. },
  3331. beforeRemove: function(a) {
  3332. return this.handler("beforeRemove", a)
  3333. },
  3334. beforeGetHtml: function(a) {
  3335. return this.handler("beforeGetHtml", a)
  3336. },
  3337. beforeSetHtml: function(a) {
  3338. return this.handler("beforeSetHtml", a)
  3339. },
  3340. afterSetHtml: function(a) {
  3341. return this.handler("afterSetHtml", a)
  3342. },
  3343. create: function() {
  3344. function a() {
  3345. return 0 === i.height() ? void setTimeout(a, 100) : void b.resize(d, e, !1)
  3346. }
  3347. var b = this,
  3348. c = b.fullscreenMode;
  3349. if(b.isCreated) return b;
  3350. if(b.srcElement.data("kindeditor")) return b;
  3351. b.srcElement.data("kindeditor", "true"),
  3352. _docElement().style.overflow = c ? "hidden" : "";
  3353. var d = c ? _docElement().clientWidth + "px" : b.width,
  3354. e = c ? _docElement().clientHeight + "px" : b.height;
  3355. (_IE && 8 > _V || _QUIRKS) && (e = _addUnit(_removeUnit(e) + 2));
  3356. var f = b.container = K(b.layout);
  3357. c ? K(document.body).append(f) : b.srcElement.before(f);
  3358. var g = K(".toolbar", f),
  3359. h = K(".edit", f),
  3360. i = b.statusbar = K(".statusbar", f);
  3361. f.removeClass("container").addClass("ke-container ke-container-" + b.themeType).css("width", d),
  3362. c ? (f.css({
  3363. position: "absolute",
  3364. left: 0,
  3365. top: 0,
  3366. "z-index": 811211
  3367. }), _GECKO || (b._scrollPos = _getScrollPos()), window.scrollTo(0, 0), K(document.body).css({
  3368. height: "1px",
  3369. overflow: "hidden"
  3370. }), K(document.body.parentNode).css("overflow", "hidden"), b._fullscreenExecuted = !0) : (b._fullscreenExecuted && (K(document.body).css({
  3371. height: "",
  3372. overflow: ""
  3373. }), K(document.body.parentNode).css("overflow", "")), b._scrollPos && window.scrollTo(b._scrollPos.x, b._scrollPos.y));
  3374. var j = [];
  3375. K.each(b.items,
  3376. function(a, c) {
  3377. "|" == c ? j.push('<span class="ke-inline-block ke-separator"></span>') : "/" == c ? j.push('<div class="ke-hr"></div>') : (j.push('<span class="ke-outline" data-name="' + c + '" title="' + b.lang(c) + '" unselectable="on">'), j.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-' + c + '" unselectable="on"></span></span>'))
  3378. });
  3379. var k = b.toolbar = _toolbar({
  3380. src: g,
  3381. html: j.join(""),
  3382. noDisableItems: b.noDisableItems,
  3383. click: function(a, c) {
  3384. if(a.stop(), b.menu) {
  3385. var d = b.menu.name;
  3386. if(b.hideMenu(), d === c) return
  3387. }
  3388. b.clickToolbar(c)
  3389. }
  3390. }),
  3391. l = _removeUnit(e) - k.div.height(),
  3392. m = b.edit = _edit({
  3393. height: l > 0 && _removeUnit(e) > b.minHeight ? l : b.minHeight,
  3394. src: h,
  3395. srcElement: b.srcElement,
  3396. designMode: b.designMode,
  3397. themesPath: b.themesPath,
  3398. bodyClass: b.bodyClass,
  3399. cssPath: b.cssPath,
  3400. cssData: b.cssData,
  3401. beforeGetHtml: function(a) {
  3402. return a = b.beforeGetHtml(a),
  3403. a = _removeBookmarkTag(_removeTempTag(a)),
  3404. _formatHtml(a, b.filterMode ? b.htmlTags : null, b.urlType, b.wellFormatMode, b.indentChar)
  3405. },
  3406. beforeSetHtml: function(a) {
  3407. return a = _formatHtml(a, b.filterMode ? b.htmlTags : null, "", !1),
  3408. b.beforeSetHtml(a)
  3409. },
  3410. afterSetHtml: function() {
  3411. b.edit = m = this,
  3412. b.afterSetHtml()
  3413. },
  3414. afterCreate: function() {
  3415. if(b.edit = m = this, b.cmd = m.cmd, b._docMousedownFn = function() {
  3416. b.menu && b.hideMenu()
  3417. },
  3418. K(m.doc, document).mousedown(b._docMousedownFn), _bindContextmenuEvent.call(b), _bindNewlineEvent.call(b), _bindTabEvent.call(b), _bindFocusEvent.call(b), m.afterChange(function() {
  3419. m.designMode && (b.updateState(), b.addBookmark(), b.options.afterChange && b.options.afterChange.call(b))
  3420. }), m.textarea.keyup(function(a) {
  3421. a.ctrlKey || a.altKey || !_INPUT_KEY_MAP[a.which] || b.options.afterChange && b.options.afterChange.call(b)
  3422. }), b.readonlyMode && b.readonly(), b.isCreated = !0, "" === b.initContent && (b.initContent = b.html()), b._undoStack.length > 0) {
  3423. var a = b._undoStack.pop();
  3424. a.start && (b.html(a.html), m.cmd.range.moveToBookmark(a), b.select())
  3425. }
  3426. b.afterCreate(),
  3427. b.options.afterCreate && b.options.afterCreate.call(b)
  3428. }
  3429. });
  3430. return i.removeClass("statusbar").addClass("ke-statusbar").append('<span class="ke-inline-block ke-statusbar-center-icon"></span>').append('<span class="ke-inline-block ke-statusbar-right-icon"></span>'),
  3431. b._fullscreenResizeHandler && (K(window).unbind("resize", b._fullscreenResizeHandler), b._fullscreenResizeHandler = null),
  3432. a(),
  3433. c ? (b._fullscreenResizeHandler = function() {
  3434. b.isCreated && b.resize(_docElement().clientWidth, _docElement().clientHeight, !1)
  3435. },
  3436. K(window).bind("resize", b._fullscreenResizeHandler), k.select("fullscreen"), i.first().css("visibility", "hidden"), i.last().css("visibility", "hidden")) : (_GECKO && K(window).bind("scroll",
  3437. function() {
  3438. b._scrollPos = _getScrollPos()
  3439. }), b.resizeType > 0 ? _drag({
  3440. moveEl: f,
  3441. clickEl: i,
  3442. moveFn: function(a, c, d, e, f, g) {
  3443. e += g,
  3444. b.resize(null, e)
  3445. }
  3446. }) : i.first().css("visibility", "hidden"), 2 === b.resizeType ? _drag({
  3447. moveEl: f,
  3448. clickEl: i.last(),
  3449. moveFn: function(a, c, d, e, f, g) {
  3450. d += f,
  3451. e += g,
  3452. b.resize(d, e)
  3453. }
  3454. }) : i.last().css("visibility", "hidden")),
  3455. b
  3456. },
  3457. remove: function() {
  3458. var a = this;
  3459. return a.isCreated ? (a.beforeRemove(), a.srcElement.data("kindeditor", ""), a.menu && a.hideMenu(), _each(a.dialogs,
  3460. function() {
  3461. a.hideDialog()
  3462. }), K(document).unbind("mousedown", a._docMousedownFn), a.toolbar.remove(), a.edit.remove(), a.statusbar.last().unbind(), a.statusbar.unbind(), a.container.remove(), a.container = a.toolbar = a.edit = a.menu = null, a.dialogs = [], a.isCreated = !1, a) : a
  3463. },
  3464. resize: function(a, b, c) {
  3465. var d = this;
  3466. return c = _undef(c, !0),
  3467. a && (/%/.test(a) || (a = _removeUnit(a), a = a < d.minWidth ? d.minWidth : a), d.container.css("width", _addUnit(a)), c && (d.width = _addUnit(a))),
  3468. b && (b = _removeUnit(b), editHeight = _removeUnit(b) - d.toolbar.div.height() - d.statusbar.height(), editHeight = editHeight < d.minHeight ? d.minHeight : editHeight, d.edit.setHeight(editHeight), c && (d.height = _addUnit(b))),
  3469. d
  3470. },
  3471. select: function() {
  3472. return this.isCreated && this.cmd.select(),
  3473. this
  3474. },
  3475. html: function(a) {
  3476. var b = this;
  3477. return a === undefined ? b.isCreated ? b.edit.html() : _elementVal(b.srcElement) : (b.isCreated ? b.edit.html(a) : _elementVal(b.srcElement, a), b.isCreated && b.cmd.selection(), b)
  3478. },
  3479. fullHtml: function() {
  3480. return this.isCreated ? this.edit.html(undefined, !0) : ""
  3481. },
  3482. text: function(a) {
  3483. var b = this;
  3484. return a === undefined ? _trim(b.html().replace(/<(?!img|embed).*?>/gi, "").replace(/&nbsp;/gi, " ")) : b.html(_escape(a))
  3485. },
  3486. isEmpty: function() {
  3487. return "" === _trim(this.text().replace(/\r\n|\n|\r/, ""))
  3488. },
  3489. isDirty: function() {
  3490. return _trim(this.initContent.replace(/\r\n|\n|\r|t/g, "")) !== _trim(this.html().replace(/\r\n|\n|\r|t/g, ""))
  3491. },
  3492. selectedHtml: function() {
  3493. var a = this.isCreated ? this.cmd.range.html() : "";
  3494. return a = _removeBookmarkTag(_removeTempTag(a))
  3495. },
  3496. count: function(a) {
  3497. var b = this;
  3498. return a = (a || "html").toLowerCase(),
  3499. "html" === a ? b.html().length : "text" === a ? b.text().replace(/<(?:img|embed).*?>/gi, "K").replace(/\r\n|\n|\r/g, "").length : 0
  3500. },
  3501. exec: function(a) {
  3502. a = a.toLowerCase();
  3503. var b = this,
  3504. c = b.cmd,
  3505. d = _inArray(a, "selectall,copy,paste,print".split(",")) < 0;
  3506. return d && b.addBookmark(!1),
  3507. c[a].apply(c, _toArray(arguments, 1)),
  3508. d && (b.updateState(), b.addBookmark(!1), b.options.afterChange && b.options.afterChange.call(b)),
  3509. b
  3510. },
  3511. insertHtml: function(a, b) {
  3512. return this.isCreated ? (a = this.beforeSetHtml(a), this.exec("inserthtml", a, b), this) : this
  3513. },
  3514. appendHtml: function(a) {
  3515. if(this.html(this.html() + a), this.isCreated) {
  3516. var b = this.cmd;
  3517. b.range.selectNodeContents(b.doc.body).collapse(!1),
  3518. b.select()
  3519. }
  3520. return this
  3521. },
  3522. sync: function() {
  3523. return _elementVal(this.srcElement, this.html()),
  3524. this
  3525. },
  3526. focus: function() {
  3527. return this.isCreated ? this.edit.focus() : this.srcElement[0].focus(),
  3528. this
  3529. },
  3530. blur: function() {
  3531. return this.isCreated ? this.edit.blur() : this.srcElement[0].blur(),
  3532. this
  3533. },
  3534. addBookmark: function(a) {
  3535. a = _undef(a, !0);
  3536. var b, c = this,
  3537. d = c.edit,
  3538. e = d.doc.body,
  3539. f = _removeTempTag(e.innerHTML);
  3540. if(a && c._undoStack.length > 0) {
  3541. var g = c._undoStack[c._undoStack.length - 1];
  3542. if(Math.abs(f.length - _removeBookmarkTag(g.html).length) < c.minChangeSize) return c
  3543. }
  3544. if(d.designMode && !c._firstAddBookmark) {
  3545. var h = c.cmd.range;
  3546. b = h.createBookmark(!0),
  3547. b.html = _removeTempTag(e.innerHTML),
  3548. h.moveToBookmark(b)
  3549. } else b = {
  3550. html: f
  3551. };
  3552. return c._firstAddBookmark = !1,
  3553. _addBookmarkToStack(c._undoStack, b),
  3554. c
  3555. },
  3556. undo: function() {
  3557. return _undoToRedo.call(this, this._undoStack, this._redoStack)
  3558. },
  3559. redo: function() {
  3560. return _undoToRedo.call(this, this._redoStack, this._undoStack)
  3561. },
  3562. fullscreen: function(a) {
  3563. return this.fullscreenMode = a === undefined ? !this.fullscreenMode : a,
  3564. this.addBookmark(!1),
  3565. this.remove().create()
  3566. },
  3567. readonly: function(a) {
  3568. a = _undef(a, !0);
  3569. var b = this,
  3570. c = b.edit,
  3571. d = c.doc;
  3572. b.designMode ? b.toolbar.disableAll(a, []) : _each(b.noDisableItems,
  3573. function() {
  3574. b.toolbar[a ? "disable" : "enable"](this)
  3575. }),
  3576. _IE ? d.body.contentEditable = !a : d.designMode = a ? "off" : "on",
  3577. c.textarea[0].disabled = a
  3578. },
  3579. createMenu: function(a) {
  3580. var b = this,
  3581. c = a.name,
  3582. d = b.toolbar.get(c),
  3583. e = d.pos();
  3584. return a.x = e.x,
  3585. a.y = e.y + d.height(),
  3586. a.z = b.options.zIndex,
  3587. a.shadowMode = _undef(a.shadowMode, b.shadowMode),
  3588. a.selectedColor !== undefined ? (a.cls = "ke-colorpicker-" + b.themeType, a.noColor = b.lang("noColor"), b.menu = _colorpicker(a)) : (a.cls = "ke-menu-" + b.themeType, a.centerLineMode = !1, b.menu = _menu(a)),
  3589. b.menu
  3590. },
  3591. hideMenu: function() {
  3592. return this.menu.remove(),
  3593. this.menu = null,
  3594. this
  3595. },
  3596. hideContextmenu: function() {
  3597. return this.contextmenu.remove(),
  3598. this.contextmenu = null,
  3599. this
  3600. },
  3601. createDialog: function(a) {
  3602. {
  3603. var b = this;
  3604. a.name
  3605. }
  3606. if(a.z = b.options.zIndex, a.shadowMode = _undef(a.shadowMode, b.shadowMode), a.closeBtn = _undef(a.closeBtn, {
  3607. name: b.lang("close"),
  3608. click: function() {
  3609. b.hideDialog(),
  3610. _IE && b.cmd && b.cmd.select()
  3611. }
  3612. }), a.noBtn = _undef(a.noBtn, {
  3613. name: b.lang(a.yesBtn ? "no" : "close"),
  3614. click: function() {
  3615. b.hideDialog(),
  3616. _IE && b.cmd && b.cmd.select()
  3617. }
  3618. }), "page" != b.dialogAlignType && (a.alignEl = b.container), a.cls = "ke-dialog-" + b.themeType, b.dialogs.length > 0) {
  3619. var c = b.dialogs[0],
  3620. d = b.dialogs[b.dialogs.length - 1];
  3621. c.setMaskIndex(d.z + 2),
  3622. a.z = d.z + 3,
  3623. a.showMask = !1
  3624. }
  3625. var e = _dialog(a);
  3626. return b.dialogs.push(e),
  3627. e
  3628. },
  3629. hideDialog: function() {
  3630. var a = this;
  3631. if(a.dialogs.length > 0 && a.dialogs.pop().remove(), a.dialogs.length > 0) {
  3632. var b = a.dialogs[0],
  3633. c = a.dialogs[a.dialogs.length - 1];
  3634. b.setMaskIndex(c.z - 1)
  3635. }
  3636. return a
  3637. },
  3638. errorDialog: function(a) {
  3639. var b = this,
  3640. c = b.createDialog({
  3641. width: 750,
  3642. title: b.lang("uploadError"),
  3643. body: '<div style="padding:10px 20px;"><iframe frameborder="0" style="width:708px;height:400px;"></iframe></div>'
  3644. }),
  3645. d = K("iframe", c.div),
  3646. e = K.iframeDoc(d);
  3647. return e.open(),
  3648. e.write(a),
  3649. e.close(),
  3650. K(e.body).css("background-color", "#FFF"),
  3651. d[0].contentWindow.focus(),
  3652. b
  3653. }
  3654. },
  3655. _instances = [],
  3656. K.remove = function(a) {
  3657. _eachEditor(a,
  3658. function(a) {
  3659. this.remove(),
  3660. _instances.splice(a, 1)
  3661. })
  3662. },
  3663. K.sync = function(a) {
  3664. _eachEditor(a,
  3665. function() {
  3666. this.sync()
  3667. })
  3668. },
  3669. K.html = function(a, b) {
  3670. _eachEditor(a,
  3671. function() {
  3672. this.html(b)
  3673. })
  3674. },
  3675. K.insertHtml = function(a, b) {
  3676. _eachEditor(a,
  3677. function() {
  3678. this.insertHtml(b)
  3679. })
  3680. },
  3681. K.appendHtml = function(a, b) {
  3682. _eachEditor(a,
  3683. function() {
  3684. this.appendHtml(b)
  3685. })
  3686. },
  3687. _IE && 7 > _V && _nativeCommand(document, "BackgroundImageCache", !0),
  3688. K.EditorClass = KEditor,
  3689. K.editor = _editor,
  3690. K.create = _create,
  3691. K.instances = _instances,
  3692. K.plugin = _plugin,
  3693. K.lang = _lang,
  3694. _plugin("core",
  3695. function(a) {
  3696. var b = this,
  3697. c = {
  3698. undo: "Z",
  3699. redo: "Y",
  3700. bold: "B",
  3701. italic: "I",
  3702. underline: "U",
  3703. print: "P",
  3704. selectall: "A"
  3705. };
  3706. if(b.afterSetHtml(function() {
  3707. b.options.afterChange && b.options.afterChange.call(b)
  3708. }), b.afterCreate(function() {
  3709. if("form" == b.syncType) {
  3710. for(var c = a(b.srcElement), d = !1; c = c.parent();)
  3711. if("form" == c.name) {
  3712. d = !0;
  3713. break
  3714. }
  3715. if(d) {
  3716. c.bind("submit",
  3717. function() {
  3718. b.sync(),
  3719. a(window).bind("unload",
  3720. function() {
  3721. b.edit.textarea.remove()
  3722. })
  3723. });
  3724. var e = a('[type="reset"]', c);
  3725. e.click(function() {
  3726. b.html(b.initContent),
  3727. b.cmd.selection()
  3728. }),
  3729. b.beforeRemove(function() {
  3730. c.unbind(),
  3731. e.unbind()
  3732. })
  3733. }
  3734. }
  3735. }), b.clickToolbar("source",
  3736. function() {
  3737. b.edit.designMode ? (b.toolbar.disableAll(!0), b.edit.design(!1), b.toolbar.select("source")) : (b.toolbar.disableAll(!1), b.edit.design(!0), b.toolbar.unselect("source"), _GECKO ? setTimeout(function() {
  3738. b.cmd.selection()
  3739. },
  3740. 0) : b.cmd.selection()),
  3741. b.designMode = b.edit.designMode
  3742. }), b.afterCreate(function() {
  3743. b.designMode || b.toolbar.disableAll(!0).select("source")
  3744. }), b.clickToolbar("fullscreen",
  3745. function() {
  3746. b.fullscreen()
  3747. }), b.fullscreenShortcut) {
  3748. var d = !1;
  3749. b.afterCreate(function() {
  3750. if(a(b.edit.doc, b.edit.textarea).keyup(function(a) {
  3751. 27 == a.which && setTimeout(function() {
  3752. b.fullscreen()
  3753. },
  3754. 0)
  3755. }), d) {
  3756. if(_IE && !b.designMode) return;
  3757. b.focus()
  3758. }
  3759. d || (d = !0)
  3760. })
  3761. }
  3762. _each("undo,redo".split(","),
  3763. function(a, d) {
  3764. c[d] && b.afterCreate(function() {
  3765. _ctrl(this.edit.doc, c[d],
  3766. function() {
  3767. b.clickToolbar(d)
  3768. })
  3769. }),
  3770. b.clickToolbar(d,
  3771. function() {
  3772. b[d]()
  3773. })
  3774. }),
  3775. b.clickToolbar("formatblock",
  3776. function() {
  3777. var a = b.lang("formatblock.formatBlock"),
  3778. c = {
  3779. h1: 28,
  3780. h2: 24,
  3781. h3: 18,
  3782. H4: 14,
  3783. p: 12
  3784. },
  3785. d = b.cmd.val("formatblock"),
  3786. e = b.createMenu({
  3787. name: "formatblock",
  3788. width: "en" == b.langType ? 200 : 150
  3789. });
  3790. _each(a,
  3791. function(a, f) {
  3792. var g = "font-size:" + c[a] + "px;";
  3793. "h" === a.charAt(0) && (g += "font-weight:bold;"),
  3794. e.addItem({
  3795. title: '<span style="' + g + '" unselectable="on">' + f + "</span>",
  3796. height: c[a] + 12,
  3797. checked: d === a || d === f,
  3798. click: function() {
  3799. b.select().exec("formatblock", "<" + a + ">").hideMenu()
  3800. }
  3801. })
  3802. })
  3803. }),
  3804. b.clickToolbar("fontname",
  3805. function() {
  3806. var a = b.cmd.val("fontname"),
  3807. c = b.createMenu({
  3808. name: "fontname",
  3809. width: 150
  3810. });
  3811. _each(b.lang("fontname.fontName"),
  3812. function(d, e) {
  3813. c.addItem({
  3814. title: '<span style="font-family: ' + d + ';" unselectable="on">' + e + "</span>",
  3815. checked: a === d.toLowerCase() || a === e.toLowerCase(),
  3816. click: function() {
  3817. b.exec("fontname", d).hideMenu()
  3818. }
  3819. })
  3820. })
  3821. }),
  3822. b.clickToolbar("fontsize",
  3823. function() {
  3824. var a = b.cmd.val("fontsize"),
  3825. c = b.createMenu({
  3826. name: "fontsize",
  3827. width: 150
  3828. });
  3829. _each(b.fontSizeTable,
  3830. function(d, e) {
  3831. c.addItem({
  3832. title: '<span style="font-size:' + e + ';" unselectable="on">' + e + "</span>",
  3833. height: _removeUnit(e) + 12,
  3834. checked: a === e,
  3835. click: function() {
  3836. b.exec("fontsize", e).hideMenu()
  3837. }
  3838. })
  3839. })
  3840. }),
  3841. _each("forecolor,hilitecolor".split(","),
  3842. function(a, c) {
  3843. b.clickToolbar(c,
  3844. function() {
  3845. b.createMenu({
  3846. name: c,
  3847. selectedColor: b.cmd.val(c) || "default",
  3848. colors: b.colorTable,
  3849. click: function(a) {
  3850. b.exec(c, a).hideMenu()
  3851. }
  3852. })
  3853. })
  3854. }),
  3855. _each("cut,copy,paste".split(","),
  3856. function(a, c) {
  3857. b.clickToolbar(c,
  3858. function() {
  3859. b.focus();
  3860. try {
  3861. b.exec(c, null)
  3862. } catch(a) {
  3863. alert(b.lang(c + "Error"))
  3864. }
  3865. })
  3866. }),
  3867. b.clickToolbar("about",
  3868. function() {
  3869. var a = '<div style="margin:20px;"><div>KindEditor ' + _VERSION + '</div><div>Copyright &copy; <a href="http://www.kindsoft.net/" target="_blank">kindsoft.net</a> All rights reserved.</div></div>';
  3870. b.createDialog({
  3871. name: "about",
  3872. width: 350,
  3873. title: b.lang("about"),
  3874. body: a
  3875. })
  3876. }),
  3877. b.plugin.getSelectedLink = function() {
  3878. return b.cmd.commonAncestor("a")
  3879. },
  3880. b.plugin.getSelectedImage = function() {
  3881. return _getImageFromRange(b.edit.cmd.range,
  3882. function(a) {
  3883. return !/^ke-\w+$/i.test(a[0].className)
  3884. })
  3885. },
  3886. b.plugin.getSelectedFlash = function() {
  3887. return _getImageFromRange(b.edit.cmd.range,
  3888. function(a) {
  3889. return "ke-flash" == a[0].className
  3890. })
  3891. },
  3892. b.plugin.getSelectedMedia = function() {
  3893. return _getImageFromRange(b.edit.cmd.range,
  3894. function(a) {
  3895. return "ke-media" == a[0].className || "ke-rm" == a[0].className
  3896. })
  3897. },
  3898. b.plugin.getSelectedAnchor = function() {
  3899. return _getImageFromRange(b.edit.cmd.range,
  3900. function(a) {
  3901. return "ke-anchor" == a[0].className
  3902. })
  3903. },
  3904. _each("link,image,flash,media,anchor".split(","),
  3905. function(a, c) {
  3906. var d = c.charAt(0).toUpperCase() + c.substr(1);
  3907. _each("edit,delete".split(","),
  3908. function(a, e) {
  3909. b.addContextmenu({
  3910. title: b.lang(e + d),
  3911. click: function() {
  3912. b.loadPlugin(c,
  3913. function() {
  3914. b.plugin[c][e](),
  3915. b.hideMenu()
  3916. })
  3917. },
  3918. cond: b.plugin["getSelected" + d],
  3919. width: 150,
  3920. iconClass: "edit" == e ? "ke-icon-" + c : undefined
  3921. })
  3922. }),
  3923. b.addContextmenu({
  3924. title: "-"
  3925. })
  3926. }),
  3927. b.plugin.getSelectedTable = function() {
  3928. return b.cmd.commonAncestor("table")
  3929. },
  3930. b.plugin.getSelectedRow = function() {
  3931. return b.cmd.commonAncestor("tr")
  3932. },
  3933. b.plugin.getSelectedCell = function() {
  3934. return b.cmd.commonAncestor("td")
  3935. },
  3936. _each("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,insert,delete".split(","),
  3937. function(a, c) {
  3938. var d = _inArray(c, ["prop", "delete"]) < 0 ? b.plugin.getSelectedCell : b.plugin.getSelectedTable;
  3939. b.addContextmenu({
  3940. title: b.lang("table" + c),
  3941. click: function() {
  3942. b.loadPlugin("table",
  3943. function() {
  3944. b.plugin.table[c](),
  3945. b.hideMenu()
  3946. })
  3947. },
  3948. cond: d,
  3949. width: 170,
  3950. iconClass: "ke-icon-table" + c
  3951. })
  3952. }),
  3953. b.addContextmenu({
  3954. title: "-"
  3955. }),
  3956. _each("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript,hr,print,bold,italic,underline,strikethrough,removeformat,unlink".split(","),
  3957. function(a, d) {
  3958. c[d] && b.afterCreate(function() {
  3959. _ctrl(this.edit.doc, c[d],
  3960. function() {
  3961. b.cmd.selection(),
  3962. b.clickToolbar(d)
  3963. })
  3964. }),
  3965. b.clickToolbar(d,
  3966. function() {
  3967. b.focus().exec(d, null)
  3968. })
  3969. }),
  3970. b.afterCreate(function() {
  3971. function c() {
  3972. d.range.moveToBookmark(e),
  3973. d.select(),
  3974. _WEBKIT && (a("div." + h, f).each(function() {
  3975. a(this).after("<br />").remove(!0)
  3976. }), a("span.Apple-style-span", f).remove(!0), a("span.Apple-tab-span", f).remove(!0), a("span[style]", f).each(function() {
  3977. "nowrap" == a(this).css("white-space") && a(this).remove(!0)
  3978. }), a("meta", f).remove());
  3979. var c = f[0].innerHTML;
  3980. f.remove(),
  3981. "" !== c && (_WEBKIT && (c = c.replace(/(<br>)\1/gi, "$1")), 2 === b.pasteType && (c = c.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi, ""), /schemas-microsoft-com|worddocument|mso-\w+/i.test(c) ? c = _clearMsWord(c, b.filterMode ? b.htmlTags : a.options.htmlTags) : (c = _formatHtml(c, b.filterMode ? b.htmlTags : null), c = b.beforeSetHtml(c))), 1 === b.pasteType && (c = c.replace(/&nbsp;/gi, " "), c = c.replace(/\n\s*\n/g, "\n"), c = c.replace(/<br[^>]*>/gi, "\n"), c = c.replace(/<\/p><p[^>]*>/gi, "\n"), c = c.replace(/<[^>]+>/g, ""), c = c.replace(/ {2}/g, " &nbsp;"), "p" == b.newlineTag ? /\n/.test(c) && (c = c.replace(/^/, "<p>").replace(/$/, "<br /></p>").replace(/\n/g, "<br /></p><p>")) : c = c.replace(/\n/g, "<br />$&")), b.insertHtml(c, !0))
  3982. }
  3983. var d, e, f, g = b.edit.doc,
  3984. h = "__kindeditor_paste__",
  3985. i = !1;
  3986. a(g.body).bind("paste",
  3987. function(j) {
  3988. if(0 === b.pasteType) return void j.stop();
  3989. if(!i) {
  3990. if(i = !0, a("div." + h, g).remove(), d = b.cmd.selection(), e = d.range.createBookmark(), f = a('<div class="' + h + '"></div>', g).css({
  3991. position: "absolute",
  3992. width: "1px",
  3993. height: "1px",
  3994. overflow: "hidden",
  3995. left: "-1981px",
  3996. top: a(e.start).pos().y + "px",
  3997. "white-space": "nowrap"
  3998. }), a(g.body).append(f), _IE) {
  3999. var k = d.range.get(!0);
  4000. k.moveToElementText(f[0]),
  4001. k.select(),
  4002. k.execCommand("paste"),
  4003. j.preventDefault()
  4004. } else d.range.selectNodeContents(f[0]),
  4005. d.select(),
  4006. f[0].tabIndex = -1,
  4007. f[0].focus();
  4008. setTimeout(function() {
  4009. c(),
  4010. i = !1
  4011. },
  4012. 0)
  4013. }
  4014. })
  4015. }),
  4016. b.beforeGetHtml(function(a) {
  4017. return _IE && 8 >= _V && (a = a.replace(/<div\s+[^>]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,
  4018. function(a, b) {
  4019. return unescape(b)
  4020. }), a = a.replace(/(<input)((?:\s+[^>]*)?>)/gi,
  4021. function(a, b, c) {
  4022. return /\s+type="[^"]+"/i.test(a) ? a : b + ' type="text"' + c
  4023. })),
  4024. a.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/gi,
  4025. function(a, b, c, d) {
  4026. return b + _unescape(c).replace(/\s+/g, " ") + d
  4027. }).replace(/<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/gi,
  4028. function(a) {
  4029. var b = _getAttrList(a),
  4030. c = _getCssList(b.style || ""),
  4031. d = _mediaAttrs(b["data-ke-tag"]),
  4032. e = _undef(c.width, ""),
  4033. f = _undef(c.height, "");
  4034. return /px/i.test(e) && (e = _removeUnit(e)),
  4035. /px/i.test(f) && (f = _removeUnit(f)),
  4036. d.width = _undef(b.width, e),
  4037. d.height = _undef(b.height, f),
  4038. _mediaEmbed(d)
  4039. }).replace(/<img[^>]*class="?ke-anchor"?[^>]*>/gi,
  4040. function(a) {
  4041. var b = _getAttrList(a);
  4042. return '<a name="' + unescape(b["data-ke-name"]) + '"></a>'
  4043. }).replace(/<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,
  4044. function(a, b, c) {
  4045. return "<script" + unescape(b) + ">" + unescape(c) + "</script>"
  4046. }).replace(/<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,
  4047. function(a, b, c) {
  4048. return "<noscript" + unescape(b) + ">" + unescape(c) + "</noscript>"
  4049. }).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/gi,
  4050. function(a, b, c) {
  4051. return a = a.replace(/(\s+(?:href|src)=")[^"]*(")/i,
  4052. function(a, b, d) {
  4053. return b + _unescape(c) + d
  4054. }),
  4055. a = a.replace(/\s+data-ke-src="[^"]*"/i, "")
  4056. }).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/gi,
  4057. function(a, b, c) {
  4058. return b + c
  4059. })
  4060. }),
  4061. b.beforeSetHtml(function(a) {
  4062. return _IE && 8 >= _V && (a = a.replace(/<input[^>]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/gi,
  4063. function(a) {
  4064. var b = _getAttrList(a),
  4065. c = _getCssList(b.style || "");
  4066. return "none" == c.display ? '<div class="ke-display-none" data-ke-input-tag="' + escape(a) + '"></div>' : a
  4067. })),
  4068. a.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/gi,
  4069. function(a) {
  4070. var c = _getAttrList(a);
  4071. return c.src = _undef(c.src, ""),
  4072. c.width = _undef(c.width, 0),
  4073. c.height = _undef(c.height, 0),
  4074. _mediaImg(b.themesPath + "common/blank.gif", c)
  4075. }).replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/gi,
  4076. function(a) {
  4077. var c = _getAttrList(a);
  4078. return c.href !== undefined ? a : '<img class="ke-anchor" src="' + b.themesPath + 'common/anchor.gif" data-ke-name="' + escape(c.name) + '" />'
  4079. }).replace(/<script([^>]*)>([\s\S]*?)<\/script>/gi,
  4080. function(a, b, c) {
  4081. return '<div class="ke-script" data-ke-script-attr="' + escape(b) + '">' + escape(c) + "</div>"
  4082. }).replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/gi,
  4083. function(a, b, c) {
  4084. return '<div class="ke-noscript" data-ke-noscript-attr="' + escape(b) + '">' + escape(c) + "</div>"
  4085. }).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/gi,
  4086. function(a, b, c, d, e) {
  4087. return a.match(/\sdata-ke-src="[^"]*"/i) ? a : a = b + c + '="' + d + '" data-ke-src="' + _escape(d) + '"' + e
  4088. }).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/gi,
  4089. function(a, b, c) {
  4090. return b + "data-ke-" + c
  4091. }).replace(/<table[^>]*\s+border="0"[^>]*>/gi,
  4092. function(a) {
  4093. return a.indexOf("ke-zeroborder") >= 0 ? a : _addClassToTag(a, "ke-zeroborder")
  4094. })
  4095. })
  4096. })
  4097. }
  4098. }(window),
  4099. KindEditor.lang({
  4100. source: "HTML代码",
  4101. preview: "预览",
  4102. undo: "后退(Ctrl+Z)",
  4103. redo: "前进(Ctrl+Y)",
  4104. cut: "剪切(Ctrl+X)",
  4105. copy: "复制(Ctrl+C)",
  4106. paste: "粘贴(Ctrl+V)",
  4107. plainpaste: "粘贴为无格式文本",
  4108. wordpaste: "从Word粘贴",
  4109. selectall: "全选(Ctrl+A)",
  4110. justifyleft: "左对齐",
  4111. justifycenter: "居中",
  4112. justifyright: "右对齐",
  4113. justifyfull: "两端对齐",
  4114. insertorderedlist: "编号",
  4115. insertunorderedlist: "项目符号",
  4116. indent: "增加缩进",
  4117. outdent: "减少缩进",
  4118. subscript: "下标",
  4119. superscript: "上标",
  4120. formatblock: "段落",
  4121. fontname: "字体",
  4122. fontsize: "文字大小",
  4123. forecolor: "文字颜色",
  4124. hilitecolor: "文字背景",
  4125. bold: "粗体(Ctrl+B)",
  4126. italic: "斜体(Ctrl+I)",
  4127. underline: "下划线(Ctrl+U)",
  4128. strikethrough: "删除线",
  4129. removeformat: "删除格式",
  4130. image: "图片",
  4131. multiimage: "批量图片上传",
  4132. flash: "Flash",
  4133. media: "视音频",
  4134. table: "表格",
  4135. tablecell: "单元格",
  4136. hr: "插入横线",
  4137. emoticons: "插入表情",
  4138. link: "超级链接",
  4139. unlink: "取消超级链接",
  4140. fullscreen: "全屏显示",
  4141. about: "关于",
  4142. print: "打印(Ctrl+P)",
  4143. filemanager: "文件空间",
  4144. code: "插入程序代码",
  4145. map: "Google地图",
  4146. baidumap: "百度地图",
  4147. lineheight: "行距",
  4148. clearhtml: "清理HTML代码",
  4149. pagebreak: "插入分页符",
  4150. quickformat: "一键排版",
  4151. insertfile: "插入文件",
  4152. template: "插入模板",
  4153. anchor: "锚点",
  4154. yes: "确定",
  4155. no: "取消",
  4156. close: "关闭",
  4157. editImage: "图片属性",
  4158. deleteImage: "删除图片",
  4159. editFlash: "Flash属性",
  4160. deleteFlash: "删除Flash",
  4161. editMedia: "视音频属性",
  4162. deleteMedia: "删除视音频",
  4163. editLink: "超级链接属性",
  4164. deleteLink: "取消超级链接",
  4165. editAnchor: "锚点属性",
  4166. deleteAnchor: "删除锚点",
  4167. tableprop: "表格属性",
  4168. tablecellprop: "单元格属性",
  4169. tableinsert: "插入表格",
  4170. tabledelete: "删除表格",
  4171. tablecolinsertleft: "左侧插入列",
  4172. tablecolinsertright: "右侧插入列",
  4173. tablerowinsertabove: "上方插入行",
  4174. tablerowinsertbelow: "下方插入行",
  4175. tablerowmerge: "向下合并单元格",
  4176. tablecolmerge: "向右合并单元格",
  4177. tablerowsplit: "拆分行",
  4178. tablecolsplit: "拆分列",
  4179. tablecoldelete: "删除列",
  4180. tablerowdelete: "删除行",
  4181. noColor: "无颜色",
  4182. pleaseSelectFile: "请选择文件。",
  4183. invalidImg: "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",
  4184. invalidMedia: "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",
  4185. invalidWidth: "宽度必须为数字。",
  4186. invalidHeight: "高度必须为数字。",
  4187. invalidBorder: "边框必须为数字。",
  4188. invalidUrl: "请输入有效的URL地址。",
  4189. invalidRows: "行数为必选项,只允许输入大于0的数字。",
  4190. invalidCols: "列数为必选项,只允许输入大于0的数字。",
  4191. invalidPadding: "边距必须为数字。",
  4192. invalidSpacing: "间距必须为数字。",
  4193. invalidJson: "服务器发生故障。",
  4194. uploadSuccess: "上传成功。",
  4195. cutError: "您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。",
  4196. copyError: "您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。",
  4197. pasteError: "您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。",
  4198. ajaxLoading: "加载中,请稍候 ...",
  4199. uploadLoading: "上传中,请稍候 ...",
  4200. uploadError: "上传错误",
  4201. "plainpaste.comment": "请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。",
  4202. "wordpaste.comment": "请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。",
  4203. "code.pleaseInput": "请输入程序代码。",
  4204. "link.url": "URL",
  4205. "link.linkType": "打开类型",
  4206. "link.newWindow": "新窗口",
  4207. "link.selfWindow": "当前窗口",
  4208. "flash.url": "URL",
  4209. "flash.width": "宽度",
  4210. "flash.height": "高度",
  4211. "flash.upload": "上传",
  4212. "flash.viewServer": "文件空间",
  4213. "media.url": "URL",
  4214. "media.width": "宽度",
  4215. "media.height": "高度",
  4216. "media.autostart": "自动播放",
  4217. "media.upload": "上传",
  4218. "media.viewServer": "文件空间",
  4219. "image.remoteImage": "网络图片",
  4220. "image.localImage": "本地上传",
  4221. "image.remoteUrl": "图片地址",
  4222. "image.localUrl": "上传文件",
  4223. "image.size": "图片大小",
  4224. "image.width": "宽",
  4225. "image.height": "高",
  4226. "image.resetSize": "重置大小",
  4227. "image.align": "对齐方式",
  4228. "image.defaultAlign": "默认方式",
  4229. "image.leftAlign": "左对齐",
  4230. "image.rightAlign": "右对齐",
  4231. "image.imgTitle": "图片说明",
  4232. "image.upload": "浏览...",
  4233. "image.viewServer": "图片空间",
  4234. "multiimage.uploadDesc": "允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>",
  4235. "multiimage.startUpload": "开始上传",
  4236. "multiimage.clearAll": "全部清空",
  4237. "multiimage.insertAll": "全部插入",
  4238. "multiimage.queueLimitExceeded": "文件数量超过限制。",
  4239. "multiimage.fileExceedsSizeLimit": "文件大小超过限制。",
  4240. "multiimage.zeroByteFile": "无法上传空文件。",
  4241. "multiimage.invalidFiletype": "文件类型不正确。",
  4242. "multiimage.unknownError": "发生异常,无法上传。",
  4243. "multiimage.pending": "等待上传",
  4244. "multiimage.uploadError": "上传失败",
  4245. "filemanager.emptyFolder": "空文件夹",
  4246. "filemanager.moveup": "移到上一级文件夹",
  4247. "filemanager.viewType": "显示方式:",
  4248. "filemanager.viewImage": "缩略图",
  4249. "filemanager.listImage": "详细信息",
  4250. "filemanager.orderType": "排序方式:",
  4251. "filemanager.fileName": "名称",
  4252. "filemanager.fileSize": "大小",
  4253. "filemanager.fileType": "类型",
  4254. "insertfile.url": "URL",
  4255. "insertfile.title": "文件说明",
  4256. "insertfile.upload": "上传",
  4257. "insertfile.viewServer": "文件空间",
  4258. "table.cells": "单元格数",
  4259. "table.rows": "行数",
  4260. "table.cols": "列数",
  4261. "table.size": "大小",
  4262. "table.width": "宽度",
  4263. "table.height": "高度",
  4264. "table.percent": "%",
  4265. "table.px": "px",
  4266. "table.space": "边距间距",
  4267. "table.padding": "边距",
  4268. "table.spacing": "间距",
  4269. "table.align": "对齐方式",
  4270. "table.textAlign": "水平对齐",
  4271. "table.verticalAlign": "垂直对齐",
  4272. "table.alignDefault": "默认",
  4273. "table.alignLeft": "左对齐",
  4274. "table.alignCenter": "居中",
  4275. "table.alignRight": "右对齐",
  4276. "table.alignTop": "顶部",
  4277. "table.alignMiddle": "中部",
  4278. "table.alignBottom": "底部",
  4279. "table.alignBaseline": "基线",
  4280. "table.border": "边框",
  4281. "table.borderWidth": "边框",
  4282. "table.borderColor": "颜色",
  4283. "table.backgroundColor": "背景颜色",
  4284. "map.address": "地址: ",
  4285. "map.search": "搜索",
  4286. "baidumap.address": "地址: ",
  4287. "baidumap.search": "搜索",
  4288. "baidumap.insertDynamicMap": "插入动态地图",
  4289. "anchor.name": "锚点名称",
  4290. "formatblock.formatBlock": {
  4291. h1: "标题 1",
  4292. h2: "标题 2",
  4293. h3: "标题 3",
  4294. h4: "标题 4",
  4295. p: "正 文"
  4296. },
  4297. "fontname.fontName": {
  4298. SimSun: "宋体",
  4299. NSimSun: "新宋体",
  4300. FangSong_GB2312: "仿宋_GB2312",
  4301. KaiTi_GB2312: "楷体_GB2312",
  4302. SimHei: "黑体",
  4303. "Microsoft YaHei": "微软雅黑",
  4304. Arial: "Arial",
  4305. "Arial Black": "Arial Black",
  4306. "Times New Roman": "Times New Roman",
  4307. "Courier New": "Courier New",
  4308. Tahoma: "Tahoma",
  4309. Verdana: "Verdana"
  4310. },
  4311. "lineheight.lineHeight": [{
  4312. 1: "单倍行距"
  4313. },
  4314. {
  4315. 1.5: "1.5倍行距"
  4316. },
  4317. {
  4318. 2: "2倍行距"
  4319. },
  4320. {
  4321. 2.5: "2.5倍行距"
  4322. },
  4323. {
  4324. 3: "3倍行距"
  4325. }
  4326. ],
  4327. "template.selectTemplate": "可选模板",
  4328. "template.replaceContent": "替换当前内容",
  4329. "template.fileList": {
  4330. "1.html": "图片和文字",
  4331. "2.html": "表格",
  4332. "3.html": "项目编号"
  4333. }
  4334. },
  4335. "zh-CN"),
  4336. KindEditor.options.langType = "zh-CN",
  4337. KindEditor.plugin("anchor",
  4338. function(a) {
  4339. var b = this,
  4340. c = "anchor",
  4341. d = b.lang(c + ".");
  4342. b.plugin.anchor = {
  4343. edit: function() {
  4344. var e = ['<div style="padding:20px;">', '<div class="ke-dialog-row">', '<label for="keName">' + d.name + "</label>", '<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />', "</div>", "</div>"].join(""),
  4345. f = b.createDialog({
  4346. name: c,
  4347. width: 300,
  4348. title: b.lang(c),
  4349. body: e,
  4350. yesBtn: {
  4351. name: b.lang("yes"),
  4352. click: function() {
  4353. b.insertHtml('<a name="' + h.val() + '">').hideDialog().focus()
  4354. }
  4355. }
  4356. }),
  4357. g = f.div,
  4358. h = a('input[name="name"]', g),
  4359. i = b.plugin.getSelectedAnchor();
  4360. i && h.val(unescape(i.attr("data-ke-name"))),
  4361. h[0].focus(),
  4362. h[0].select()
  4363. },
  4364. "delete": function() {
  4365. b.plugin.getSelectedAnchor().remove()
  4366. }
  4367. },
  4368. b.clickToolbar(c, b.plugin.anchor.edit)
  4369. }),
  4370. KindEditor.plugin("autoheight",
  4371. function(a) {
  4372. function b() {
  4373. var a = e.edit,
  4374. b = a.doc.body;
  4375. a.iframe[0].scroll = "no",
  4376. b.style.overflowY = "hidden"
  4377. }
  4378. function c() {
  4379. var b = e.edit,
  4380. c = b.doc.body;
  4381. b.iframe.height(f),
  4382. e.resize(null, Math.max((a.IE ? c.scrollHeight : c.offsetHeight) + 76, f))
  4383. }
  4384. function d() {
  4385. f = a.removeUnit(e.height),
  4386. e.edit.afterChange(c),
  4387. b(),
  4388. c()
  4389. }
  4390. var e = this;
  4391. if(e.autoHeightMode) {
  4392. var f;
  4393. e.isCreated ? d() : e.afterCreate(d)
  4394. }
  4395. }),
  4396. KindEditor.plugin("baidumap",
  4397. function(a) {
  4398. var b = this,
  4399. c = "baidumap",
  4400. d = b.lang(c + "."),
  4401. e = a.undef(b.mapWidth, 558),
  4402. f = a.undef(b.mapHeight, 360);
  4403. b.clickToolbar(c,
  4404. function() {
  4405. function g() {
  4406. h = p[0].contentWindow,
  4407. i = a.iframeDoc(p)
  4408. }
  4409. var h, i, j = ['<div style="padding:10px 20px;">', '<div class="ke-header">', '<div class="ke-left">', d.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', '<span class="ke-button-common ke-button-outer">', '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + d.search + '" />', "</span>", "</div>", '<div class="ke-right">', '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">' + d.insertDynamicMap + "</label>", "</div>", '<div class="ke-clearfix"></div>', "</div>", '<div class="ke-map" style="width:' + e + "px;height:" + f + 'px;"></div>', "</div>"].join(""),
  4410. k = b.createDialog({
  4411. name: c,
  4412. width: e + 42,
  4413. title: b.lang(c),
  4414. body: j,
  4415. yesBtn: {
  4416. name: b.lang("yes"),
  4417. click: function() {
  4418. var a = h.map,
  4419. c = a.getCenter(),
  4420. d = c.lng + "," + c.lat,
  4421. g = a.getZoom(),
  4422. i = [o[0].checked ? b.pluginsPath + "baidumap/index.html" : "http://api.map.baidu.com/staticimage", "?center=" + encodeURIComponent(d), "&zoom=" + encodeURIComponent(g), "&width=" + e, "&height=" + f, "&markers=" + encodeURIComponent(d), "&markerStyles=" + encodeURIComponent("l,A")].join("");
  4423. o[0].checked ? b.insertHtml('<iframe src="' + i + '" frameborder="0" style="width:' + (e + 2) + "px;height:" + (f + 2) + 'px;"></iframe>') : b.exec("insertimage", i),
  4424. b.hideDialog().focus()
  4425. }
  4426. },
  4427. beforeRemove: function() {
  4428. n.remove(),
  4429. i && i.write(""),
  4430. p.remove()
  4431. }
  4432. }),
  4433. l = k.div,
  4434. m = a('[name="address"]', l),
  4435. n = a('[name="searchBtn"]', l),
  4436. o = a('[name="insertDynamicMap"]', k.div),
  4437. p = a('<iframe class="ke-textarea" frameborder="0" src="' + b.pluginsPath + 'baidumap/map.html" style="width:' + e + "px;height:" + f + 'px;"></iframe>');
  4438. p.bind("load",
  4439. function() {
  4440. p.unbind("load"),
  4441. a.IE ? g() : setTimeout(g, 0)
  4442. }),
  4443. a(".ke-map", l).replaceWith(p),
  4444. n.click(function() {
  4445. h.search(m.val())
  4446. })
  4447. })
  4448. }),
  4449. KindEditor.plugin("map",
  4450. function(a) {
  4451. var b = this,
  4452. c = "map",
  4453. d = b.lang(c + ".");
  4454. b.clickToolbar(c,
  4455. function() {
  4456. function e() {
  4457. f = m[0].contentWindow,
  4458. g = a.iframeDoc(m)
  4459. }
  4460. var f, g, h = ['<div style="padding:10px 20px;">', '<div class="ke-dialog-row">', d.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', '<span class="ke-button-common ke-button-outer">', '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + d.search + '" />', "</span>", "</div>", '<div class="ke-map" style="width:558px;height:360px;"></div>', "</div>"].join(""),
  4461. i = b.createDialog({
  4462. name: c,
  4463. width: 600,
  4464. title: b.lang(c),
  4465. body: h,
  4466. yesBtn: {
  4467. name: b.lang("yes"),
  4468. click: function() {
  4469. var a = (f.geocoder, f.map),
  4470. c = a.getCenter().lat() + "," + a.getCenter().lng(),
  4471. d = a.getZoom(),
  4472. e = a.getMapTypeId(),
  4473. g = "http://maps.googleapis.com/maps/api/staticmap";
  4474. g += "?center=" + encodeURIComponent(c),
  4475. g += "&zoom=" + encodeURIComponent(d),
  4476. g += "&size=558x360",
  4477. g += "&maptype=" + encodeURIComponent(e),
  4478. g += "&markers=" + encodeURIComponent(c),
  4479. g += "&language=" + b.langType,
  4480. g += "&sensor=false",
  4481. b.exec("insertimage", g).hideDialog().focus()
  4482. }
  4483. },
  4484. beforeRemove: function() {
  4485. l.remove(),
  4486. g && g.write(""),
  4487. m.remove()
  4488. }
  4489. }),
  4490. j = i.div,
  4491. k = a('[name="address"]', j),
  4492. l = a('[name="searchBtn"]', j),
  4493. m = (["<!doctype html><html><head>", '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />', "<style>", " html { height: 100% }", " body { height: 100%; margin: 0; padding: 0; background-color: #FFF }", " #map_canvas { height: 100% }", "</style>", '<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=' + b.langType + '"></script>', "<script>", "var map, geocoder;", "function initialize() {", " var latlng = new google.maps.LatLng(31.230393, 121.473704);", " var options = {", " zoom: 11,", " center: latlng,", " disableDefaultUI: true,", " panControl: true,", " zoomControl: true,", " mapTypeControl: true,", " scaleControl: true,", " streetViewControl: false,", " overviewMapControl: true,", " mapTypeId: google.maps.MapTypeId.ROADMAP", " };", ' map = new google.maps.Map(document.getElementById("map_canvas"), options);', " geocoder = new google.maps.Geocoder();", " geocoder.geocode({latLng: latlng}, function(results, status) {", " if (status == google.maps.GeocoderStatus.OK) {", " if (results[3]) {", ' parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;', " }", " }", " });", "}", "function search(address) {", " if (!map) return;", " geocoder.geocode({address : address}, function(results, status) {", " if (status == google.maps.GeocoderStatus.OK) {", " map.setZoom(11);", " map.setCenter(results[0].geometry.location);", " var marker = new google.maps.Marker({", " map: map,", " position: results[0].geometry.location", " });", " } else {", ' alert("Invalid address: " + address);', " }", " });", "}", "</script>", "</head>", '<body onload="initialize();">', '<div id="map_canvas" style="width:100%; height:100%"></div>', "</body></html>"].join("\n"), a('<iframe class="ke-textarea" frameborder="0" src="' + b.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>'));
  4494. m.bind("load",
  4495. function() {
  4496. m.unbind("load"),
  4497. a.IE ? e() : setTimeout(e, 0)
  4498. }),
  4499. a(".ke-map", j).replaceWith(m),
  4500. l.click(function() {
  4501. f.search(k.val())
  4502. })
  4503. })
  4504. }),
  4505. KindEditor.plugin("clearhtml",
  4506. function(a) {
  4507. var b = this,
  4508. c = "clearhtml";
  4509. b.clickToolbar(c,
  4510. function() {
  4511. b.focus();
  4512. var c = b.html();
  4513. c = c.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/gi, ""),
  4514. c = c.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/gi, ""),
  4515. c = a.formatHtml(c, {
  4516. a: ["href", "target"],
  4517. embed: ["src", "width", "height", "type", "loop", "autostart", "quality", ".width", ".height", "align", "allowscriptaccess"],
  4518. img: ["src", "width", "height", "border", "alt", "title", ".width", ".height"],
  4519. table: ["border"],
  4520. "td,th": ["rowspan", "colspan"],
  4521. "div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6": []
  4522. }),
  4523. b.html(c),
  4524. b.cmd.selection(!0),
  4525. b.addBookmark()
  4526. })
  4527. }),
  4528. KindEditor.plugin("code",
  4529. function(a) {
  4530. var b = this,
  4531. c = "code";
  4532. b.clickToolbar(c,
  4533. function() {
  4534. var d = b.lang(c + "."),
  4535. e = ['<div style="padding:10px 20px;">', '<div class="ke-dialog-row">', '<select class="ke-code-type">', '<option value="js">JavaScript</option>', '<option value="html">HTML</option>', '<option value="css">CSS</option>', '<option value="php">PHP</option>', '<option value="pl">Perl</option>', '<option value="py">Python</option>', '<option value="rb">Ruby</option>', '<option value="java">Java</option>', '<option value="vb">ASP/VB</option>', '<option value="cpp">C/C++</option>', '<option value="cs">C#</option>', '<option value="xml">XML</option>', '<option value="bsh">Shell</option>', '<option value="">Other</option>', "</select>", "</div>", '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>', "</div>"].join(""),
  4536. f = b.createDialog({
  4537. name: c,
  4538. width: 450,
  4539. title: b.lang(c),
  4540. body: e,
  4541. yesBtn: {
  4542. name: b.lang("yes"),
  4543. click: function() {
  4544. var c = a(".ke-code-type", f.div).val(),
  4545. e = g.val(),
  4546. h = "" === c ? "" : " lang-" + c,
  4547. i = '<pre class="prettyprint' + h + '">\n' + a.escape(e) + "</pre> ";
  4548. return "" === a.trim(e) ? (alert(d.pleaseInput), void g[0].focus()) : void b.insertHtml(i).hideDialog().focus()
  4549. }
  4550. }
  4551. }),
  4552. g = a("textarea", f.div);
  4553. g[0].focus()
  4554. })
  4555. }),
  4556. KindEditor.plugin("emoticons",
  4557. function(a) {
  4558. var b = this,
  4559. c = "emoticons",
  4560. d = b.emoticonsPath || b.pluginsPath + "emoticons/images/",
  4561. e = void 0 === b.allowPreviewEmoticons ? !0 : b.allowPreviewEmoticons,
  4562. f = 1;
  4563. b.clickToolbar(c,
  4564. function() {
  4565. function g(c, e, f) {
  4566. c.mouseover(v ?
  4567. function() {
  4568. e > r ? (v.css("left", 0), v.css("right", "")) : (v.css("left", ""), v.css("right", 0)),
  4569. w.attr("src", d + f + ".gif"),
  4570. a(this).addClass("ke-on")
  4571. } : function() {
  4572. a(this).addClass("ke-on")
  4573. }),
  4574. c.mouseout(function() {
  4575. a(this).removeClass("ke-on")
  4576. }),
  4577. c.click(function(a) {
  4578. b.insertHtml('<img src="' + d + f + '.gif" border="0" alt="" />').hideMenu().focus(),
  4579. a.stop()
  4580. })
  4581. }
  4582. function h(b, c) {
  4583. var e = document.createElement("table");
  4584. c.append(e),
  4585. v && (a(e).mouseover(function() {
  4586. v.show("block")
  4587. }), a(e).mouseout(function() {
  4588. v.hide()
  4589. }), t.push(a(e))),
  4590. e.className = "ke-table",
  4591. e.cellPadding = 0,
  4592. e.cellSpacing = 0,
  4593. e.border = 0;
  4594. for(var f = (b - 1) * p + o, h = 0; l > h; h++)
  4595. for(var i = e.insertRow(h), j = 0; m > j; j++) {
  4596. var k = a(i.insertCell(j));
  4597. k.addClass("ke-cell"),
  4598. g(k, j, f);
  4599. var n = a('<span class="ke-img"></span>').css("background-position", "-" + 24 * f + "px 0px").css("background-image", "url(" + d + "static.gif)");
  4600. k.append(n),
  4601. t.push(k),
  4602. f++
  4603. }
  4604. return e
  4605. }
  4606. function i() {
  4607. a.each(t,
  4608. function() {
  4609. this.unbind()
  4610. })
  4611. }
  4612. function j(a, b) {
  4613. a.click(function(a) {
  4614. i(),
  4615. y.parentNode.removeChild(y),
  4616. x.remove(),
  4617. y = h(b, s),
  4618. k(b),
  4619. f = b,
  4620. a.stop()
  4621. })
  4622. }
  4623. function k(b) {
  4624. x = a('<div class="ke-page"></div>'),
  4625. s.append(x);
  4626. for(var c = 1; q >= c; c++) {
  4627. if(b !== c) {
  4628. var d = a('<a href="javascript:;">[' + c + "]</a>");
  4629. j(d, c),
  4630. x.append(d),
  4631. t.push(d)
  4632. } else x.append(a("@[" + c + "]"));
  4633. x.append(a("@&nbsp;"))
  4634. }
  4635. }
  4636. var l = 5,
  4637. m = 9,
  4638. n = 135,
  4639. o = 0,
  4640. p = l * m,
  4641. q = Math.ceil(n / p),
  4642. r = Math.floor(m / 2),
  4643. s = a('<div class="ke-plugin-emoticons"></div>'),
  4644. t = [],
  4645. u = b.createMenu({
  4646. name: c,
  4647. beforeRemove: function() {
  4648. i()
  4649. }
  4650. });
  4651. u.div.append(s);
  4652. var v, w;
  4653. e && (v = a('<div class="ke-preview"></div>').css("right", 0), w = a('<img class="ke-preview-img" src="' + d + o + '.gif" />'), s.append(v), v.append(w));
  4654. var x, y = h(f, s);
  4655. k(f)
  4656. })
  4657. }),
  4658. KindEditor.plugin("filemanager",
  4659. function(a) {
  4660. function b(a, b, c) {
  4661. return a + " (" + Math.ceil(b / 1024) + "KB, " + c + ")"
  4662. }
  4663. function c(a, c) {
  4664. c.is_dir ? a.attr("title", c.filename) : a.attr("title", b(c.filename, c.filesize, c.datetime))
  4665. }
  4666. var d = this,
  4667. e = "filemanager",
  4668. f = a.undef(d.fileManagerJson, d.basePath + "php/file_manager_json.php"),
  4669. g = d.pluginsPath + e + "/images/",
  4670. h = d.lang(e + ".");
  4671. d.plugin.filemanagerDialog = function(b) {
  4672. function i(b, c, e) {
  4673. var g = "path=" + b + "&order=" + c + "&dir=" + p;
  4674. t.showLoading(d.lang("ajaxLoading")),
  4675. a.ajax(a.addParam(f, g + "&" + (new Date).getTime()),
  4676. function(a) {
  4677. t.hideLoading(),
  4678. e(a)
  4679. })
  4680. }
  4681. function j(b, c, d, e) {
  4682. var f = a.formatUrl(c.current_url + d.filename, "absolute"),
  4683. g = encodeURIComponent(c.current_dir_path + d.filename + "/");
  4684. b.click(d.is_dir ?
  4685. function() {
  4686. i(g, y.val(), e)
  4687. } : d.is_photo ?
  4688. function() {
  4689. r.call(this, f, d.filename)
  4690. } : function() {
  4691. r.call(this, f, d.filename)
  4692. }),
  4693. z.push(b)
  4694. }
  4695. function k(b, c) {
  4696. function d() {
  4697. "VIEW" == x.val() ? i(b.current_dir_path, y.val(), m) : i(b.current_dir_path, y.val(), l)
  4698. }
  4699. a.each(z,
  4700. function() {
  4701. this.unbind()
  4702. }),
  4703. w.unbind(),
  4704. x.unbind(),
  4705. y.unbind(),
  4706. b.current_dir_path && w.click(function() {
  4707. i(b.moveup_dir_path, y.val(), c)
  4708. }),
  4709. x.change(d),
  4710. y.change(d),
  4711. v.html("")
  4712. }
  4713. function l(b) {
  4714. k(b, l);
  4715. var c = document.createElement("table");
  4716. c.className = "ke-table",
  4717. c.cellPadding = 0,
  4718. c.cellSpacing = 0,
  4719. c.border = 0,
  4720. v.append(c);
  4721. for(var d = b.file_list,
  4722. e = 0,
  4723. f = d.length; f > e; e++) {
  4724. var i = d[e],
  4725. m = a(c.insertRow(e));
  4726. m.mouseover(function() {
  4727. a(this).addClass("ke-on")
  4728. }).mouseout(function() {
  4729. a(this).removeClass("ke-on")
  4730. });
  4731. var n = g + (i.is_dir ? "folder-16.gif" : "file-16.gif"),
  4732. o = a('<img src="' + n + '" width="16" height="16" alt="' + i.filename + '" align="absmiddle" />'),
  4733. p = a(m[0].insertCell(0)).addClass("ke-cell ke-name").append(o).append(document.createTextNode(" " + i.filename));
  4734. !i.is_dir || i.has_file ? (m.css("cursor", "pointer"), p.attr("title", i.filename), j(p, b, i, l)) : p.attr("title", h.emptyFolder),
  4735. a(m[0].insertCell(1)).addClass("ke-cell ke-size").html(i.is_dir ? "-" : Math.ceil(i.filesize / 1024) + "KB"),
  4736. a(m[0].insertCell(2)).addClass("ke-cell ke-datetime").html(i.datetime)
  4737. }
  4738. }
  4739. function m(b) {
  4740. k(b, m);
  4741. for(var d = b.file_list,
  4742. e = 0,
  4743. f = d.length; f > e; e++) {
  4744. var i = d[e],
  4745. l = a('<div class="ke-inline-block ke-item"></div>');
  4746. v.append(l);
  4747. var n = a('<div class="ke-inline-block ke-photo"></div>').mouseover(function() {
  4748. a(this).addClass("ke-on")
  4749. }).mouseout(function() {
  4750. a(this).removeClass("ke-on")
  4751. });
  4752. l.append(n);
  4753. var o = b.current_url + i.filename,
  4754. p = i.is_dir ? g + "folder-64.gif" : i.is_photo ? o : g + "file-64.gif",
  4755. q = a('<img src="' + p + '" width="80" height="80" alt="' + i.filename + '" />');
  4756. !i.is_dir || i.has_file ? (n.css("cursor", "pointer"), c(n, i), j(n, b, i, m)) : n.attr("title", h.emptyFolder),
  4757. n.append(q),
  4758. l.append('<div class="ke-name" title="' + i.filename + '">' + i.filename + "</div>")
  4759. }
  4760. }
  4761. var n = a.undef(b.width, 650),
  4762. o = a.undef(b.height, 510),
  4763. p = a.undef(b.dirName, ""),
  4764. q = a.undef(b.viewType, "VIEW").toUpperCase(),
  4765. r = b.clickFn,
  4766. s = ['<div style="padding:10px 20px;">', '<div class="ke-plugin-filemanager-header">', '<div class="ke-left">', '<img class="ke-inline-block" name="moveupImg" src="' + g + 'go-up.gif" width="16" height="16" border="0" alt="" /> ', '<a class="ke-inline-block" name="moveupLink" href="javascript:;">' + h.moveup + "</a>", "</div>", '<div class="ke-right">', h.viewType + ' <select class="ke-inline-block" name="viewType">', '<option value="VIEW">' + h.viewImage + "</option>", '<option value="LIST">' + h.listImage + "</option>", "</select> ", h.orderType + ' <select class="ke-inline-block" name="orderType">', '<option value="NAME">' + h.fileName + "</option>", '<option value="SIZE">' + h.fileSize + "</option>", '<option value="TYPE">' + h.fileType + "</option>", "</select>", "</div>", '<div class="ke-clearfix"></div>', "</div>", '<div class="ke-plugin-filemanager-body"></div>', "</div>"].join(""),
  4767. t = d.createDialog({
  4768. name: e,
  4769. width: n,
  4770. height: o,
  4771. title: d.lang(e),
  4772. body: s
  4773. }),
  4774. u = t.div,
  4775. v = a(".ke-plugin-filemanager-body", u),
  4776. w = (a('[name="moveupImg"]', u), a('[name="moveupLink"]', u)),
  4777. x = (a('[name="viewServer"]', u), a('[name="viewType"]', u)),
  4778. y = a('[name="orderType"]', u),
  4779. z = [];
  4780. return x.val(q),
  4781. i("", y.val(), "VIEW" == q ? m : l),
  4782. t
  4783. }
  4784. }),
  4785. KindEditor.plugin("flash",
  4786. function(a) {
  4787. var b = this,
  4788. c = "flash",
  4789. d = b.lang(c + "."),
  4790. e = a.undef(b.allowFlashUpload, !0),
  4791. f = a.undef(b.allowFileManager, !1),
  4792. g = a.undef(b.formatUploadUrl, !0),
  4793. h = a.undef(b.extraFileUploadParams, {}),
  4794. i = a.undef(b.filePostName, "imgFile"),
  4795. j = a.undef(b.uploadJson, b.basePath + "php/upload_json.php");
  4796. b.plugin.flash = {
  4797. edit: function() {
  4798. var k = ['<div style="padding:20px;">', '<div class="ke-dialog-row">', '<label for="keUrl" style="width:60px;">' + d.url + "</label>", '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> &nbsp;', '<input type="button" class="ke-upload-button" value="' + d.upload + '" /> &nbsp;', '<span class="ke-button-common ke-button-outer">', '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + d.viewServer + '" />', "</span>", "</div>", '<div class="ke-dialog-row">', '<label for="keWidth" style="width:60px;">' + d.width + "</label>", '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ', "</div>", '<div class="ke-dialog-row">', '<label for="keHeight" style="width:60px;">' + d.height + "</label>", '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ', "</div>", "</div>"].join(""),
  4799. l = b.createDialog({
  4800. name: c,
  4801. width: 450,
  4802. title: b.lang(c),
  4803. body: k,
  4804. yesBtn: {
  4805. name: b.lang("yes"),
  4806. click: function() {
  4807. var c = a.trim(n.val()),
  4808. d = p.val(),
  4809. e = q.val();
  4810. if("http://" == c || a.invalidUrl(c)) return alert(b.lang("invalidUrl")),
  4811. void n[0].focus();
  4812. if(!/^\d*$/.test(d)) return alert(b.lang("invalidWidth")),
  4813. void p[0].focus();
  4814. if(!/^\d*$/.test(e)) return alert(b.lang("invalidHeight")),
  4815. void q[0].focus();
  4816. var f = a.mediaImg(b.themesPath + "common/blank.gif", {
  4817. src: c,
  4818. type: a.mediaType(".swf"),
  4819. width: d,
  4820. height: e,
  4821. quality: "high"
  4822. });
  4823. b.insertHtml(f).hideDialog().focus()
  4824. }
  4825. }
  4826. }),
  4827. m = l.div,
  4828. n = a('[name="url"]', m),
  4829. o = a('[name="viewServer"]', m),
  4830. p = a('[name="width"]', m),
  4831. q = a('[name="height"]', m);
  4832. if(n.val("http://"), e) {
  4833. var r = a.uploadbutton({
  4834. button: a(".ke-upload-button", m)[0],
  4835. fieldName: i,
  4836. extraParams: h,
  4837. url: a.addParam(j, "dir=flash"),
  4838. afterUpload: function(d) {
  4839. if(l.hideLoading(), 0 === d.error) {
  4840. var e = d.url;
  4841. g && (e = a.formatUrl(e, "absolute")),
  4842. n.val(e),
  4843. b.afterUpload && b.afterUpload.call(b, e, d, c),
  4844. alert(b.lang("uploadSuccess"))
  4845. } else alert(d.message)
  4846. },
  4847. afterError: function(a) {
  4848. l.hideLoading(),
  4849. b.errorDialog(a)
  4850. }
  4851. });
  4852. r.fileBox.change(function() {
  4853. l.showLoading(b.lang("uploadLoading")),
  4854. r.submit()
  4855. })
  4856. } else a(".ke-upload-button", m).hide();
  4857. f ? o.click(function() {
  4858. b.loadPlugin("filemanager",
  4859. function() {
  4860. b.plugin.filemanagerDialog({
  4861. viewType: "LIST",
  4862. dirName: "flash",
  4863. clickFn: function(c) {
  4864. b.dialogs.length > 1 && (a('[name="url"]', m).val(c), b.afterSelectFile && b.afterSelectFile.call(b, c), b.hideDialog())
  4865. }
  4866. })
  4867. })
  4868. }) : o.hide();
  4869. var s = b.plugin.getSelectedFlash();
  4870. if(s) {
  4871. var t = a.mediaAttrs(s.attr("data-ke-tag"));
  4872. n.val(t.src),
  4873. p.val(a.removeUnit(s.css("width")) || t.width || 0),
  4874. q.val(a.removeUnit(s.css("height")) || t.height || 0)
  4875. }
  4876. n[0].focus(),
  4877. n[0].select()
  4878. },
  4879. "delete": function() {
  4880. b.plugin.getSelectedFlash().remove(),
  4881. b.addBookmark()
  4882. }
  4883. },
  4884. b.clickToolbar(c, b.plugin.flash.edit)
  4885. }),
  4886. KindEditor.plugin("image",
  4887. function(a) {
  4888. var b = this,
  4889. c = "image",
  4890. d = a.undef(b.allowImageUpload, !0),
  4891. e = a.undef(b.allowImageRemote, !0),
  4892. f = a.undef(b.formatUploadUrl, !0),
  4893. g = a.undef(b.allowFileManager, !1),
  4894. h = a.undef(b.uploadJson, b.basePath + "php/upload_json.php"),
  4895. i = a.undef(b.imageTabIndex, 0),
  4896. j = b.pluginsPath + "image/images/",
  4897. k = a.undef(b.extraFileUploadParams, {}),
  4898. l = a.undef(b.filePostName, "imgFile"),
  4899. m = a.undef(b.fillDescAfterUploadImage, !1),
  4900. n = b.lang(c + ".");
  4901. b.plugin.imageDialog = function(d) {
  4902. function e(a, b) {
  4903. D.val(a),
  4904. E.val(b),
  4905. J = a,
  4906. K = b
  4907. }
  4908. var i = (d.imageUrl, a.undef(d.imageWidth, ""), a.undef(d.imageHeight, ""), a.undef(d.imageTitle, ""), a.undef(d.imageAlign, ""), a.undef(d.showRemote, !0)),
  4909. o = a.undef(d.showLocal, !0),
  4910. p = a.undef(d.tabIndex, 0),
  4911. q = d.clickFn,
  4912. r = "kindeditor_upload_iframe_" + (new Date).getTime(),
  4913. s = [];
  4914. for(var t in k) s.push('<input type="hidden" name="' + t + '" value="' + k[t] + '" />');
  4915. var u, v = ['<div style="padding:20px;">', '<div class="tabs"></div>', '<div class="tab1" style="display:none;">', '<div class="ke-dialog-row">', '<label for="remoteUrl" style="width:60px;">' + n.remoteUrl + "</label>", '<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:200px;" /> &nbsp;', '<span class="ke-button-common ke-button-outer">', '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + n.viewServer + '" />', "</span>", "</div>", '<div class="ke-dialog-row">', '<label for="remoteWidth" style="width:60px;">' + n.size + "</label>", n.width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', n.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', '<img class="ke-refresh-btn" src="' + j + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + n.resetSize + '" />', "</div>", '<div class="ke-dialog-row">', '<label style="width:60px;">' + n.align + "</label>", '<input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> <img name="defaultImg" src="' + j + 'align_top.gif" width="23" height="25" alt="" />', ' <input type="radio" name="align" class="ke-inline-block" value="left" /> <img name="leftImg" src="' + j + 'align_left.gif" width="23" height="25" alt="" />', ' <input type="radio" name="align" class="ke-inline-block" value="right" /> <img name="rightImg" src="' + j + 'align_right.gif" width="23" height="25" alt="" />', "</div>", '<div class="ke-dialog-row">', '<label for="remoteTitle" style="width:60px;">' + n.imgTitle + "</label>", '<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:200px;" />', "</div>", "</div>", '<div class="tab2" style="display:none;">', '<iframe name="' + r + '" style="display:none;"></iframe>', '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + r + '" action="' + a.addParam(h, "dir=image") + '">', '<div class="ke-dialog-row">', s.join(""), '<label style="width:60px;">' + n.localUrl + "</label>", '<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> &nbsp;', '<input type="button" class="ke-upload-button" value="' + n.upload + '" />', "</div>", "</form>", "</div>", "</div>"].join(""),
  4916. w = o || g ? 450 : 400,
  4917. x = o && i ? 300 : 250,
  4918. y = b.createDialog({
  4919. name: c,
  4920. width: w,
  4921. height: x,
  4922. title: b.lang(c),
  4923. body: v,
  4924. yesBtn: {
  4925. name: b.lang("yes"),
  4926. click: function() {
  4927. if(!y.isLoading) {
  4928. if(o && i && u && 1 === u.selectedIndex || !i) return "" == I.fileBox.val() ? void alert(b.lang("pleaseSelectFile")) : (y.showLoading(b.lang("uploadLoading")), I.submit(), void B.val(""));
  4929. var c = a.trim(A.val()),
  4930. d = D.val(),
  4931. e = E.val(),
  4932. f = G.val(),
  4933. g = "";
  4934. return H.each(function() {
  4935. return this.checked ? (g = this.value, !1) : void 0
  4936. }),
  4937. "http://" == c || a.invalidUrl(c) ? (alert(b.lang("invalidUrl")), void A[0].focus()) : /^\d*$/.test(d) ? /^\d*$/.test(e) ? void q.call(b, c, f, d, e, 0, g) : (alert(b.lang("invalidHeight")), void E[0].focus()) : (alert(b.lang("invalidWidth")), void D[0].focus())
  4938. }
  4939. }
  4940. },
  4941. beforeRemove: function() {
  4942. C.unbind(),
  4943. D.unbind(),
  4944. E.unbind(),
  4945. F.unbind()
  4946. }
  4947. }),
  4948. z = y.div,
  4949. A = a('[name="url"]', z),
  4950. B = a('[name="localUrl"]', z),
  4951. C = a('[name="viewServer"]', z),
  4952. D = a('.tab1 [name="width"]', z),
  4953. E = a('.tab1 [name="height"]', z),
  4954. F = a(".ke-refresh-btn", z),
  4955. G = a('.tab1 [name="title"]', z),
  4956. H = a('.tab1 [name="align"]', z);
  4957. i && o ? (u = a.tabs({
  4958. src: a(".tabs", z),
  4959. afterSelect: function() {}
  4960. }), u.add({
  4961. title: n.remoteImage,
  4962. panel: a(".tab1", z)
  4963. }), u.add({
  4964. title: n.localImage,
  4965. panel: a(".tab2", z)
  4966. }), u.select(p)) : i ? a(".tab1", z).show() : o && a(".tab2", z).show();
  4967. var I = a.uploadbutton({
  4968. button: a(".ke-upload-button", z)[0],
  4969. fieldName: l,
  4970. form: a(".ke-form", z),
  4971. target: r,
  4972. width: 60,
  4973. afterUpload: function(d) {
  4974. if(y.hideLoading(), 0 === d.error) {
  4975. var e = d.url;
  4976. f && (e = a.formatUrl(e, "absolute")),
  4977. b.afterUpload && b.afterUpload.call(b, e, d, c),
  4978. m ? (a(".ke-dialog-row #remoteUrl", z).val(e), a(".ke-tabs-li", z)[0].click(), a(".ke-refresh-btn", z).click()) : q.call(b, e, d.title, d.width, d.height, d.border, d.align)
  4979. } else alert(d.message)
  4980. },
  4981. afterError: function(a) {
  4982. y.hideLoading(),
  4983. b.errorDialog(a)
  4984. }
  4985. });
  4986. I.fileBox.change(function() {
  4987. B.val(I.fileBox.val())
  4988. }),
  4989. g ? C.click(function() {
  4990. b.loadPlugin("filemanager",
  4991. function() {
  4992. b.plugin.filemanagerDialog({
  4993. viewType: "VIEW",
  4994. dirName: "image",
  4995. clickFn: function(c) {
  4996. b.dialogs.length > 1 && (a('[name="url"]', z).val(c), b.afterSelectFile && b.afterSelectFile.call(b, c), b.hideDialog())
  4997. }
  4998. })
  4999. })
  5000. }) : C.hide();
  5001. var J = 0,
  5002. K = 0;
  5003. return F.click(function() {
  5004. var b = a('<img src="' + A.val() + '" />', document).css({
  5005. position: "absolute",
  5006. visibility: "hidden",
  5007. top: 0,
  5008. left: "-1000px"
  5009. });
  5010. b.bind("load",
  5011. function() {
  5012. e(b.width(), b.height()),
  5013. b.remove()
  5014. }),
  5015. a(document.body).append(b)
  5016. }),
  5017. D.change(function() {
  5018. J > 0 && E.val(Math.round(K / J * parseInt(this.value, 10)))
  5019. }),
  5020. E.change(function() {
  5021. K > 0 && D.val(Math.round(J / K * parseInt(this.value, 10)))
  5022. }),
  5023. A.val(d.imageUrl),
  5024. e(d.imageWidth, d.imageHeight),
  5025. G.val(d.imageTitle),
  5026. H.each(function() {
  5027. return this.value === d.imageAlign ? (this.checked = !0, !1) : void 0
  5028. }),
  5029. i && 0 === p && (A[0].focus(), A[0].select()),
  5030. y
  5031. },
  5032. b.plugin.image = {
  5033. edit: function() {
  5034. var a = b.plugin.getSelectedImage();
  5035. b.plugin.imageDialog({
  5036. imageUrl: a ? a.attr("data-ke-src") : "http://",
  5037. imageWidth: a ? a.width() : "",
  5038. imageHeight: a ? a.height() : "",
  5039. imageTitle: a ? a.attr("title") : "",
  5040. imageAlign: a ? a.attr("align") : "",
  5041. showRemote: e,
  5042. showLocal: d,
  5043. tabIndex: a ? 0 : i,
  5044. clickFn: function(c, d, e, f, g, h) {
  5045. a ? (a.attr("src", c), a.attr("data-ke-src", c), a.attr("width", e), a.attr("height", f), a.attr("title", d), a.attr("align", h), a.attr("alt", d)) : b.exec("insertimage", c, d, e, f, g, h),
  5046. setTimeout(function() {
  5047. b.hideDialog().focus()
  5048. },
  5049. 0)
  5050. }
  5051. })
  5052. },
  5053. "delete": function() {
  5054. var a = b.plugin.getSelectedImage();
  5055. "a" == a.parent().name && (a = a.parent()),
  5056. a.remove(),
  5057. b.addBookmark()
  5058. }
  5059. },
  5060. b.clickToolbar(c, b.plugin.image.edit)
  5061. }),
  5062. KindEditor.plugin("insertfile",
  5063. function(a) {
  5064. var b = this,
  5065. c = "insertfile",
  5066. d = a.undef(b.allowFileUpload, !0),
  5067. e = a.undef(b.allowFileManager, !1),
  5068. f = a.undef(b.formatUploadUrl, !0),
  5069. g = a.undef(b.uploadJson, b.basePath + "php/upload_json.php"),
  5070. h = a.undef(b.extraFileUploadParams, {}),
  5071. i = a.undef(b.filePostName, "imgFile"),
  5072. j = b.lang(c + ".");
  5073. b.plugin.fileDialog = function(k) {
  5074. var l = a.undef(k.fileUrl, "http://"),
  5075. m = a.undef(k.fileTitle, ""),
  5076. n = k.clickFn,
  5077. o = ['<div style="padding:20px;">', '<div class="ke-dialog-row">', '<label for="keUrl" style="width:60px;">' + j.url + "</label>", '<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> &nbsp;', '<input type="button" class="ke-upload-button" value="' + j.upload + '" /> &nbsp;', '<span class="ke-button-common ke-button-outer">', '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + j.viewServer + '" />', "</span>", "</div>", '<div class="ke-dialog-row">', '<label for="keTitle" style="width:60px;">' + j.title + "</label>", '<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>', "</div>", "</form>", "</div>"].join(""),
  5078. p = b.createDialog({
  5079. name: c,
  5080. width: 450,
  5081. title: b.lang(c),
  5082. body: o,
  5083. yesBtn: {
  5084. name: b.lang("yes"),
  5085. click: function() {
  5086. var c = a.trim(r.val()),
  5087. d = t.val();
  5088. return "http://" == c || a.invalidUrl(c) ? (alert(b.lang("invalidUrl")), void r[0].focus()) : ("" === a.trim(d) && (d = c), void n.call(b, c, d))
  5089. }
  5090. }
  5091. }),
  5092. q = p.div,
  5093. r = a('[name="url"]', q),
  5094. s = a('[name="viewServer"]', q),
  5095. t = a('[name="title"]', q);
  5096. if(d) {
  5097. var u = a.uploadbutton({
  5098. button: a(".ke-upload-button", q)[0],
  5099. fieldName: i,
  5100. url: a.addParam(g, "dir=file"),
  5101. extraParams: h,
  5102. afterUpload: function(d) {
  5103. if(p.hideLoading(), 0 === d.error) {
  5104. var e = d.url;
  5105. f && (e = a.formatUrl(e, "absolute")),
  5106. r.val(e),
  5107. b.afterUpload && b.afterUpload.call(b, e, d, c),
  5108. alert(b.lang("uploadSuccess"))
  5109. } else alert(d.message)
  5110. },
  5111. afterError: function(a) {
  5112. p.hideLoading(),
  5113. b.errorDialog(a)
  5114. }
  5115. });
  5116. u.fileBox.change(function() {
  5117. p.showLoading(b.lang("uploadLoading")),
  5118. u.submit()
  5119. })
  5120. } else a(".ke-upload-button", q).hide();
  5121. e ? s.click(function() {
  5122. b.loadPlugin("filemanager",
  5123. function() {
  5124. b.plugin.filemanagerDialog({
  5125. viewType: "LIST",
  5126. dirName: "file",
  5127. clickFn: function(c) {
  5128. b.dialogs.length > 1 && (a('[name="url"]', q).val(c), b.afterSelectFile && b.afterSelectFile.call(b, c), b.hideDialog())
  5129. }
  5130. })
  5131. })
  5132. }) : s.hide(),
  5133. r.val(l),
  5134. t.val(m),
  5135. r[0].focus(),
  5136. r[0].select()
  5137. },
  5138. b.clickToolbar(c,
  5139. function() {
  5140. b.plugin.fileDialog({
  5141. clickFn: function(a, c) {
  5142. var d = '<a class="ke-insertfile" href="' + a + '" data-ke-src="' + a + '" target="_blank">' + c + "</a>";
  5143. b.insertHtml(d).hideDialog().focus()
  5144. }
  5145. })
  5146. })
  5147. }),
  5148. KindEditor.plugin("lineheight",
  5149. function(a) {
  5150. var b = this,
  5151. c = "lineheight",
  5152. d = b.lang(c + ".");
  5153. b.clickToolbar(c,
  5154. function() {
  5155. var e = "",
  5156. f = b.cmd.commonNode({
  5157. "*": ".line-height"
  5158. });
  5159. f && (e = f.css("line-height"));
  5160. var g = b.createMenu({
  5161. name: c,
  5162. width: 150
  5163. });
  5164. a.each(d.lineHeight,
  5165. function(c, d) {
  5166. a.each(d,
  5167. function(a, c) {
  5168. g.addItem({
  5169. title: c,
  5170. checked: e === a,
  5171. click: function() {
  5172. b.cmd.toggle('<span style="line-height:' + a + ';"></span>', {
  5173. span: ".line-height=" + a
  5174. }),
  5175. b.updateState(),
  5176. b.addBookmark(),
  5177. b.hideMenu()
  5178. }
  5179. })
  5180. })
  5181. })
  5182. })
  5183. }),
  5184. KindEditor.plugin("link",
  5185. function(a) {
  5186. var b = this,
  5187. c = "link";
  5188. b.plugin.link = {
  5189. edit: function() {
  5190. var d = b.lang(c + "."),
  5191. e = '<div style="padding:20px;"><div class="ke-dialog-row"><label for="keUrl" style="width:60px;">' + d.url + '</label><input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" /></div><div class="ke-dialog-row""><label for="keType" style="width:60px;">' + d.linkType + '</label><select id="keType" name="type"></select></div></div>',
  5192. f = b.createDialog({
  5193. name: c,
  5194. width: 450,
  5195. title: b.lang(c),
  5196. body: e,
  5197. yesBtn: {
  5198. name: b.lang("yes"),
  5199. click: function() {
  5200. var c = a.trim(h.val());
  5201. return "http://" == c || a.invalidUrl(c) ? (alert(b.lang("invalidUrl")), void h[0].focus()) : void b.exec("createlink", c, i.val()).hideDialog().focus()
  5202. }
  5203. }
  5204. }),
  5205. g = f.div,
  5206. h = a('input[name="url"]', g),
  5207. i = a('select[name="type"]', g);
  5208. h.val("http://"),
  5209. i[0].options[0] = new Option(d.newWindow, "_blank"),
  5210. i[0].options[1] = new Option(d.selfWindow, ""),
  5211. b.cmd.selection();
  5212. var j = b.plugin.getSelectedLink();
  5213. j && (b.cmd.range.selectNode(j[0]), b.cmd.select(), h.val(j.attr("data-ke-src")), i.val(j.attr("target"))),
  5214. h[0].focus(),
  5215. h[0].select()
  5216. },
  5217. "delete": function() {
  5218. b.exec("unlink", null)
  5219. }
  5220. },
  5221. b.clickToolbar(c, b.plugin.link.edit)
  5222. }),
  5223. KindEditor.plugin("media",
  5224. function(a) {
  5225. var b = this,
  5226. c = "media",
  5227. d = b.lang(c + "."),
  5228. e = a.undef(b.allowMediaUpload, !0),
  5229. f = a.undef(b.allowFileManager, !1),
  5230. g = a.undef(b.formatUploadUrl, !0),
  5231. h = a.undef(b.extraFileUploadParams, {}),
  5232. i = a.undef(b.filePostName, "imgFile"),
  5233. j = a.undef(b.uploadJson, b.basePath + "php/upload_json.php");
  5234. b.plugin.media = {
  5235. edit: function() {
  5236. var k = ['<div style="padding:20px;">', '<div class="ke-dialog-row">', '<label for="keUrl" style="width:60px;">' + d.url + "</label>", '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> &nbsp;', '<input type="button" class="ke-upload-button" value="' + d.upload + '" /> &nbsp;', '<span class="ke-button-common ke-button-outer">', '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + d.viewServer + '" />', "</span>", "</div>", '<div class="ke-dialog-row">', '<label for="keWidth" style="width:60px;">' + d.width + "</label>", '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />', "</div>", '<div class="ke-dialog-row">', '<label for="keHeight" style="width:60px;">' + d.height + "</label>", '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />', "</div>", '<div class="ke-dialog-row">', '<label for="keAutostart">' + d.autostart + "</label>", '<input type="checkbox" id="keAutostart" name="autostart" value="" /> ', "</div>", "</div>"].join(""),
  5237. l = b.createDialog({
  5238. name: c,
  5239. width: 450,
  5240. height: 230,
  5241. title: b.lang(c),
  5242. body: k,
  5243. yesBtn: {
  5244. name: b.lang("yes"),
  5245. click: function() {
  5246. var c = a.trim(n.val()),
  5247. d = p.val(),
  5248. e = q.val();
  5249. if("http://" == c || a.invalidUrl(c)) return alert(b.lang("invalidUrl")),
  5250. void n[0].focus();
  5251. if(!/^\d*$/.test(d)) return alert(b.lang("invalidWidth")),
  5252. void p[0].focus();
  5253. if(!/^\d*$/.test(e)) return alert(b.lang("invalidHeight")),
  5254. void q[0].focus();
  5255. var f = a.mediaImg(b.themesPath + "common/blank.gif", {
  5256. src: c,
  5257. type: a.mediaType(c),
  5258. width: d,
  5259. height: e,
  5260. autostart: r[0].checked ? "true" : "false",
  5261. loop: "true"
  5262. });
  5263. b.insertHtml(f).hideDialog().focus()
  5264. }
  5265. }
  5266. }),
  5267. m = l.div,
  5268. n = a('[name="url"]', m),
  5269. o = a('[name="viewServer"]', m),
  5270. p = a('[name="width"]', m),
  5271. q = a('[name="height"]', m),
  5272. r = a('[name="autostart"]', m);
  5273. if(n.val("http://"), e) {
  5274. var s = a.uploadbutton({
  5275. button: a(".ke-upload-button", m)[0],
  5276. fieldName: i,
  5277. extraParams: h,
  5278. url: a.addParam(j, "dir=media"),
  5279. afterUpload: function(d) {
  5280. if(l.hideLoading(), 0 === d.error) {
  5281. var e = d.url;
  5282. g && (e = a.formatUrl(e, "absolute")),
  5283. n.val(e),
  5284. b.afterUpload && b.afterUpload.call(b, e, d, c),
  5285. alert(b.lang("uploadSuccess"))
  5286. } else alert(d.message)
  5287. },
  5288. afterError: function(a) {
  5289. l.hideLoading(),
  5290. b.errorDialog(a)
  5291. }
  5292. });
  5293. s.fileBox.change(function() {
  5294. l.showLoading(b.lang("uploadLoading")),
  5295. s.submit()
  5296. })
  5297. } else a(".ke-upload-button", m).hide();
  5298. f ? o.click(function() {
  5299. b.loadPlugin("filemanager",
  5300. function() {
  5301. b.plugin.filemanagerDialog({
  5302. viewType: "LIST",
  5303. dirName: "media",
  5304. clickFn: function(c) {
  5305. b.dialogs.length > 1 && (a('[name="url"]', m).val(c), b.afterSelectFile && b.afterSelectFile.call(b, c), b.hideDialog())
  5306. }
  5307. })
  5308. })
  5309. }) : o.hide();
  5310. var t = b.plugin.getSelectedMedia();
  5311. if(t) {
  5312. var u = a.mediaAttrs(t.attr("data-ke-tag"));
  5313. n.val(u.src),
  5314. p.val(a.removeUnit(t.css("width")) || u.width || 0),
  5315. q.val(a.removeUnit(t.css("height")) || u.height || 0),
  5316. r[0].checked = "true" === u.autostart
  5317. }
  5318. n[0].focus(),
  5319. n[0].select()
  5320. },
  5321. "delete": function() {
  5322. b.plugin.getSelectedMedia().remove(),
  5323. b.addBookmark()
  5324. }
  5325. },
  5326. b.clickToolbar(c, b.plugin.media.edit)
  5327. }),
  5328. function(a) {
  5329. function b(a) {
  5330. this.init(a)
  5331. }
  5332. a.extend(b, {
  5333. init: function(b) {
  5334. function c(b, c) {
  5335. a(".ke-status > div", b).hide(),
  5336. a(".ke-message", b).addClass("ke-error").show().html(a.escape(c))
  5337. }
  5338. var d = this;
  5339. b.afterError = b.afterError ||
  5340. function(a) {
  5341. alert(a)
  5342. },
  5343. d.options = b,
  5344. d.progressbars = {},
  5345. d.div = a(b.container).html(['<div class="ke-swfupload">', '<div class="ke-swfupload-top">', '<div class="ke-inline-block ke-swfupload-button">', '<input type="button" value="Browse" />', "</div>", '<div class="ke-inline-block ke-swfupload-desc">' + b.uploadDesc + "</div>", '<span class="ke-button-common ke-button-outer ke-swfupload-startupload">', '<input type="button" class="ke-button-common ke-button" value="' + b.startButtonValue + '" />', "</span>", "</div>", '<div class="ke-swfupload-body"></div>', "</div>"].join("")),
  5346. d.bodyDiv = a(".ke-swfupload-body", d.div);
  5347. var e = {
  5348. debug: !1,
  5349. upload_url: b.uploadUrl,
  5350. flash_url: b.flashUrl,
  5351. file_post_name: b.filePostName,
  5352. button_placeholder: a(".ke-swfupload-button > input", d.div)[0],
  5353. button_image_url: b.buttonImageUrl,
  5354. button_width: b.buttonWidth,
  5355. button_height: b.buttonHeight,
  5356. button_cursor: SWFUpload.CURSOR.HAND,
  5357. file_types: b.fileTypes,
  5358. file_types_description: b.fileTypesDesc,
  5359. file_upload_limit: b.fileUploadLimit,
  5360. file_size_limit: b.fileSizeLimit,
  5361. post_params: b.postParams,
  5362. file_queued_handler: function(a) {
  5363. a.url = d.options.fileIconUrl,
  5364. d.appendFile(a)
  5365. },
  5366. file_queue_error_handler: function(c, d) {
  5367. var e = "";
  5368. switch(d) {
  5369. case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
  5370. e = b.queueLimitExceeded;
  5371. break;
  5372. case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
  5373. e = b.fileExceedsSizeLimit;
  5374. break;
  5375. case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
  5376. e = b.zeroByteFile;
  5377. break;
  5378. case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
  5379. e = b.invalidFiletype;
  5380. break;
  5381. default:
  5382. e = b.unknownError
  5383. }
  5384. a.DEBUG && alert(e)
  5385. },
  5386. upload_start_handler: function(b) {
  5387. var c = this,
  5388. d = a('div[data-id="' + b.id + '"]', c.bodyDiv);
  5389. a(".ke-status > div", d).hide(),
  5390. a(".ke-progressbar", d).show()
  5391. },
  5392. upload_progress_handler: function(a, b, c) {
  5393. var e = Math.round(100 * b / c),
  5394. f = d.progressbars[a.id];
  5395. f.bar.css("width", Math.round(80 * e / 100) + "px"),
  5396. f.percent.html(e + "%")
  5397. },
  5398. upload_error_handler: function(b) {
  5399. if(b && b.filestatus == SWFUpload.FILE_STATUS.ERROR) {
  5400. var e = a('div[data-id="' + b.id + '"]', d.bodyDiv).eq(0);
  5401. c(e, d.options.errorMessage)
  5402. }
  5403. },
  5404. upload_success_handler: function(b, e) {
  5405. var f = a('div[data-id="' + b.id + '"]', d.bodyDiv).eq(0),
  5406. g = {};
  5407. try {
  5408. g = a.json(e)
  5409. } catch(h) {
  5410. d.options.afterError.call(this, "<!doctype html><html>" + e + "</html>")
  5411. }
  5412. return 0 !== g.error ? void c(f, a.DEBUG ? g.message : d.options.errorMessage) : (b.url = g.url, a(".ke-img", f).attr("src", b.url).attr("data-status", b.filestatus).data("data", g), void a(".ke-status > div", f).hide())
  5413. }
  5414. };
  5415. d.swfu = new SWFUpload(e),
  5416. a(".ke-swfupload-startupload input", d.div).click(function() {
  5417. d.swfu.startUpload()
  5418. })
  5419. },
  5420. getUrlList: function() {
  5421. var b = [];
  5422. return a(".ke-img", self.bodyDiv).each(function() {
  5423. var c = a(this),
  5424. d = c.attr("data-status");
  5425. d == SWFUpload.FILE_STATUS.COMPLETE && b.push(c.data("data"))
  5426. }),
  5427. b
  5428. },
  5429. removeFile: function(b) {
  5430. var c = this;
  5431. c.swfu.cancelUpload(b);
  5432. var d = a('div[data-id="' + b + '"]', c.bodyDiv);
  5433. a(".ke-photo", d).unbind(),
  5434. a(".ke-delete", d).unbind(),
  5435. d.remove()
  5436. },
  5437. removeFiles: function() {
  5438. var b = this;
  5439. a(".ke-item", b.bodyDiv).each(function() {
  5440. b.removeFile(a(this).attr("data-id"))
  5441. })
  5442. },
  5443. appendFile: function(b) {
  5444. var c = this,
  5445. d = a('<div class="ke-inline-block ke-item" data-id="' + b.id + '"></div>');
  5446. c.bodyDiv.append(d);
  5447. var e = a('<div class="ke-inline-block ke-photo"></div>').mouseover(function() {
  5448. a(this).addClass("ke-on")
  5449. }).mouseout(function() {
  5450. a(this).removeClass("ke-on")
  5451. });
  5452. d.append(e);
  5453. var f = a('<img src="' + b.url + '" class="ke-img" data-status="' + b.filestatus + '" width="80" height="80" alt="' + b.name + '" />');
  5454. e.append(f),
  5455. a('<span class="ke-delete"></span>').appendTo(e).click(function() {
  5456. c.removeFile(b.id)
  5457. });
  5458. var g = a('<div class="ke-status"></div>').appendTo(e);
  5459. a(['<div class="ke-progressbar">', '<div class="ke-progressbar-bar"><div class="ke-progressbar-bar-inner"></div></div>', '<div class="ke-progressbar-percent">0%</div></div>'].join("")).hide().appendTo(g),
  5460. a('<div class="ke-message">' + c.options.pendingMessage + "</div>").appendTo(g),
  5461. d.append('<div class="ke-name">' + b.name + "</div>"),
  5462. c.progressbars[b.id] = {
  5463. bar: a(".ke-progressbar-bar-inner", e),
  5464. percent: a(".ke-progressbar-percent", e)
  5465. }
  5466. },
  5467. remove: function() {
  5468. this.removeFiles(),
  5469. this.swfu.destroy(),
  5470. this.div.html("")
  5471. }
  5472. }),
  5473. a.swfupload = function(a, c) {
  5474. return new b(a, c)
  5475. }
  5476. }(KindEditor),
  5477. KindEditor.plugin("multiimage",
  5478. function(a) {
  5479. var b = this,
  5480. c = "multiimage",
  5481. d = (a.undef(b.formatUploadUrl, !0), a.undef(b.uploadJson, b.basePath + "php/upload_json.php")),
  5482. e = b.pluginsPath + "multiimage/images/",
  5483. f = a.undef(b.imageSizeLimit, "1MB"),
  5484. g = (a.undef(b.imageFileTypes, "*.jpg;*.gif;*.png"), a.undef(b.imageUploadLimit, 20)),
  5485. h = a.undef(b.filePostName, "imgFile"),
  5486. i = b.lang(c + ".");
  5487. b.plugin.multiImageDialog = function(j) {
  5488. var k = j.clickFn,
  5489. l = a.tmpl(i.uploadDesc, {
  5490. uploadLimit: g,
  5491. sizeLimit: f
  5492. }),
  5493. m = ['<div style="padding:20px;">', '<div class="swfupload">', "</div>", "</div>"].join(""),
  5494. n = b.createDialog({
  5495. name: c,
  5496. width: 650,
  5497. height: 510,
  5498. title: b.lang(c),
  5499. body: m,
  5500. previewBtn: {
  5501. name: i.insertAll,
  5502. click: function() {
  5503. k.call(b, p.getUrlList())
  5504. }
  5505. },
  5506. yesBtn: {
  5507. name: i.clearAll,
  5508. click: function() {
  5509. p.removeFiles()
  5510. }
  5511. },
  5512. beforeRemove: function() {
  5513. (!a.IE || a.V <= 8) && p.remove()
  5514. }
  5515. }),
  5516. o = n.div,
  5517. p = a.swfupload({
  5518. container: a(".swfupload", o),
  5519. buttonImageUrl: e + ("zh-CN" == b.langType ? "select-files-zh-CN.png" : "select-files-en.png"),
  5520. buttonWidth: "zh-CN" == b.langType ? 72 : 88,
  5521. buttonHeight: 23,
  5522. fileIconUrl: e + "image.png",
  5523. uploadDesc: l,
  5524. startButtonValue: i.startUpload,
  5525. uploadUrl: a.addParam(d, "dir=image"),
  5526. flashUrl: e + "swfupload.swf",
  5527. filePostName: h,
  5528. fileTypes: "*.jpg;*.jpeg;*.gif;*.png;*.bmp",
  5529. fileTypesDesc: "Image Files",
  5530. fileUploadLimit: g,
  5531. fileSizeLimit: f,
  5532. postParams: a.undef(b.extraFileUploadParams, {}),
  5533. queueLimitExceeded: i.queueLimitExceeded,
  5534. fileExceedsSizeLimit: i.fileExceedsSizeLimit,
  5535. zeroByteFile: i.zeroByteFile,
  5536. invalidFiletype: i.invalidFiletype,
  5537. unknownError: i.unknownError,
  5538. pendingMessage: i.pending,
  5539. errorMessage: i.uploadError,
  5540. afterError: function(a) {
  5541. b.errorDialog(a)
  5542. }
  5543. });
  5544. return n
  5545. },
  5546. b.clickToolbar(c,
  5547. function() {
  5548. b.plugin.multiImageDialog({
  5549. clickFn: function(c) {
  5550. 0 !== c.length && (a.each(c,
  5551. function(a, c) {
  5552. b.afterUpload && b.afterUpload.call(b, c.url, c, "multiimage"),
  5553. b.exec("insertimage", c.url, c.title, c.width, c.height, c.border, c.align)
  5554. }), setTimeout(function() {
  5555. b.hideDialog().focus()
  5556. },
  5557. 0))
  5558. }
  5559. })
  5560. })
  5561. }),
  5562. function() {
  5563. window.SWFUpload = function(a) {
  5564. this.initSWFUpload(a)
  5565. },
  5566. SWFUpload.prototype.initSWFUpload = function(a) {
  5567. try {
  5568. this.customSettings = {},
  5569. this.settings = a,
  5570. this.eventQueue = [],
  5571. this.movieName = "KindEditor_SWFUpload_" + SWFUpload.movieCount++,
  5572. this.movieElement = null,
  5573. SWFUpload.instances[this.movieName] = this,
  5574. this.initSettings(),
  5575. this.loadFlash(),
  5576. this.displayDebugInfo()
  5577. } catch(b) {
  5578. throw delete SWFUpload.instances[this.movieName],
  5579. b
  5580. }
  5581. },
  5582. SWFUpload.instances = {},
  5583. SWFUpload.movieCount = 0,
  5584. SWFUpload.version = "2.2.0 2009-03-25",
  5585. SWFUpload.QUEUE_ERROR = {
  5586. QUEUE_LIMIT_EXCEEDED: -100,
  5587. FILE_EXCEEDS_SIZE_LIMIT: -110,
  5588. ZERO_BYTE_FILE: -120,
  5589. INVALID_FILETYPE: -130
  5590. },
  5591. SWFUpload.UPLOAD_ERROR = {
  5592. HTTP_ERROR: -200,
  5593. MISSING_UPLOAD_URL: -210,
  5594. IO_ERROR: -220,
  5595. SECURITY_ERROR: -230,
  5596. UPLOAD_LIMIT_EXCEEDED: -240,
  5597. UPLOAD_FAILED: -250,
  5598. SPECIFIED_FILE_ID_NOT_FOUND: -260,
  5599. FILE_VALIDATION_FAILED: -270,
  5600. FILE_CANCELLED: -280,
  5601. UPLOAD_STOPPED: -290
  5602. },
  5603. SWFUpload.FILE_STATUS = {
  5604. QUEUED: -1,
  5605. IN_PROGRESS: -2,
  5606. ERROR: -3,
  5607. COMPLETE: -4,
  5608. CANCELLED: -5
  5609. },
  5610. SWFUpload.BUTTON_ACTION = {
  5611. SELECT_FILE: -100,
  5612. SELECT_FILES: -110,
  5613. START_UPLOAD: -120
  5614. },
  5615. SWFUpload.CURSOR = {
  5616. ARROW: -1,
  5617. HAND: -2
  5618. },
  5619. SWFUpload.WINDOW_MODE = {
  5620. WINDOW: "window",
  5621. TRANSPARENT: "transparent",
  5622. OPAQUE: "opaque"
  5623. },
  5624. SWFUpload.completeURL = function(a) {
  5625. if("string" != typeof a || a.match(/^https?:\/\//i) || a.match(/^\//)) return a;
  5626. var b = (window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : ""), window.location.pathname.lastIndexOf("/"));
  5627. return path = 0 >= b ? "/" : window.location.pathname.substr(0, b) + "/",
  5628. path + a
  5629. },
  5630. SWFUpload.prototype.initSettings = function() {
  5631. this.ensureDefault = function(a, b) {
  5632. this.settings[a] = void 0 == this.settings[a] ? b : this.settings[a]
  5633. },
  5634. this.ensureDefault("upload_url", ""),
  5635. this.ensureDefault("preserve_relative_urls", !1),
  5636. this.ensureDefault("file_post_name", "Filedata"),
  5637. this.ensureDefault("post_params", {}),
  5638. this.ensureDefault("use_query_string", !1),
  5639. this.ensureDefault("requeue_on_error", !1),
  5640. this.ensureDefault("http_success", []),
  5641. this.ensureDefault("assume_success_timeout", 0),
  5642. this.ensureDefault("file_types", "*.*"),
  5643. this.ensureDefault("file_types_description", "All Files"),
  5644. this.ensureDefault("file_size_limit", 0),
  5645. this.ensureDefault("file_upload_limit", 0),
  5646. this.ensureDefault("file_queue_limit", 0),
  5647. this.ensureDefault("flash_url", "swfupload.swf"),
  5648. this.ensureDefault("prevent_swf_caching", !0),
  5649. this.ensureDefault("button_image_url", ""),
  5650. this.ensureDefault("button_width", 1),
  5651. this.ensureDefault("button_height", 1),
  5652. this.ensureDefault("button_text", ""),
  5653. this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;"),
  5654. this.ensureDefault("button_text_top_padding", 0),
  5655. this.ensureDefault("button_text_left_padding", 0),
  5656. this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES),
  5657. this.ensureDefault("button_disabled", !1),
  5658. this.ensureDefault("button_placeholder_id", ""),
  5659. this.ensureDefault("button_placeholder", null),
  5660. this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW),
  5661. this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW),
  5662. this.ensureDefault("debug", !1),
  5663. this.settings.debug_enabled = this.settings.debug,
  5664. this.settings.return_upload_start_handler = this.returnUploadStart,
  5665. this.ensureDefault("swfupload_loaded_handler", null),
  5666. this.ensureDefault("file_dialog_start_handler", null),
  5667. this.ensureDefault("file_queued_handler", null),
  5668. this.ensureDefault("file_queue_error_handler", null),
  5669. this.ensureDefault("file_dialog_complete_handler", null),
  5670. this.ensureDefault("upload_start_handler", null),
  5671. this.ensureDefault("upload_progress_handler", null),
  5672. this.ensureDefault("upload_error_handler", null),
  5673. this.ensureDefault("upload_success_handler", null),
  5674. this.ensureDefault("upload_complete_handler", null),
  5675. this.ensureDefault("debug_handler", this.debugMessage),
  5676. this.ensureDefault("custom_settings", {}),
  5677. this.customSettings = this.settings.custom_settings,
  5678. this.settings.prevent_swf_caching && (this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + (new Date).getTime()),
  5679. this.settings.preserve_relative_urls || (this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url), this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url)),
  5680. delete this.ensureDefault
  5681. },
  5682. SWFUpload.prototype.loadFlash = function() {
  5683. var a, b;
  5684. if(null !== document.getElementById(this.movieName)) throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
  5685. if(a = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder, void 0 == a) throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
  5686. b = document.createElement("div"),
  5687. b.innerHTML = this.getFlashHTML(),
  5688. a.parentNode.replaceChild(b.firstChild, a),
  5689. void 0 == window[this.movieName] && (window[this.movieName] = this.getMovieElement())
  5690. },
  5691. SWFUpload.prototype.getFlashHTML = function() {
  5692. var a = "";
  5693. return KindEditor.IE && KindEditor.V > 8 && (a = ' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'), ['<object id="', this.movieName, '"' + a + ' type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">', '<param name="wmode" value="', this.settings.button_window_mode, '" />', '<param name="movie" value="', this.settings.flash_url, '" />', '<param name="quality" value="high" />', '<param name="menu" value="false" />', '<param name="allowScriptAccess" value="always" />', '<param name="flashvars" value="' + this.getFlashVars() + '" />', "</object>"].join("")
  5694. },
  5695. SWFUpload.prototype.getFlashVars = function() {
  5696. var a = this.buildParamString(),
  5697. b = this.settings.http_success.join(",");
  5698. return ["movieName=", encodeURIComponent(this.movieName), "&amp;uploadURL=", encodeURIComponent(this.settings.upload_url), "&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string), "&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error), "&amp;httpSuccess=", encodeURIComponent(b), "&amp;assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout), "&amp;params=", encodeURIComponent(a), "&amp;filePostName=", encodeURIComponent(this.settings.file_post_name), "&amp;fileTypes=", encodeURIComponent(this.settings.file_types), "&amp;fileTypesDescription=", encodeURIComponent(this.settings.file_types_description), "&amp;fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit), "&amp;fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit), "&amp;fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit), "&amp;debugEnabled=", encodeURIComponent(this.settings.debug_enabled), "&amp;buttonImageURL=", encodeURIComponent(this.settings.button_image_url), "&amp;buttonWidth=", encodeURIComponent(this.settings.button_width), "&amp;buttonHeight=", encodeURIComponent(this.settings.button_height), "&amp;buttonText=", encodeURIComponent(this.settings.button_text), "&amp;buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding), "&amp;buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding), "&amp;buttonTextStyle=", encodeURIComponent(this.settings.button_text_style), "&amp;buttonAction=", encodeURIComponent(this.settings.button_action), "&amp;buttonDisabled=", encodeURIComponent(this.settings.button_disabled), "&amp;buttonCursor=", encodeURIComponent(this.settings.button_cursor)].join("")
  5699. },
  5700. SWFUpload.prototype.getMovieElement = function() {
  5701. if(void 0 == this.movieElement && (this.movieElement = document.getElementById(this.movieName)), null === this.movieElement) throw "Could not find Flash element";
  5702. return this.movieElement
  5703. },
  5704. SWFUpload.prototype.buildParamString = function() {
  5705. var a = this.settings.post_params,
  5706. b = [];
  5707. if("object" == typeof a)
  5708. for(var c in a) a.hasOwnProperty(c) && b.push(encodeURIComponent(c.toString()) + "=" + encodeURIComponent(a[c].toString()));
  5709. return b.join("&amp;")
  5710. },
  5711. SWFUpload.prototype.destroy = function() {
  5712. try {
  5713. this.cancelUpload(null, !1);
  5714. var a = null;
  5715. if(a = this.getMovieElement(), a && "unknown" == typeof a.CallFunction) {
  5716. for(var b in a) try {
  5717. "function" == typeof a[b] && (a[b] = null)
  5718. } catch(c) {}
  5719. try {
  5720. a.parentNode.removeChild(a)
  5721. } catch(d) {}
  5722. }
  5723. return window[this.movieName] = null,
  5724. SWFUpload.instances[this.movieName] = null,
  5725. delete SWFUpload.instances[this.movieName],
  5726. this.movieElement = null,
  5727. this.settings = null,
  5728. this.customSettings = null,
  5729. this.eventQueue = null,
  5730. this.movieName = null, !0
  5731. } catch(e) {
  5732. return !1
  5733. }
  5734. },
  5735. SWFUpload.prototype.displayDebugInfo = function() {
  5736. this.debug(["---SWFUpload Instance Info---\n", "Version: ", SWFUpload.version, "\n", "Movie Name: ", this.movieName, "\n", "Settings:\n", " ", "upload_url: ", this.settings.upload_url, "\n", " ", "flash_url: ", this.settings.flash_url, "\n", " ", "use_query_string: ", this.settings.use_query_string.toString(), "\n", " ", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n", " ", "http_success: ", this.settings.http_success.join(", "), "\n", " ", "assume_success_timeout: ", this.settings.assume_success_timeout, "\n", " ", "file_post_name: ", this.settings.file_post_name, "\n", " ", "post_params: ", this.settings.post_params.toString(), "\n", " ", "file_types: ", this.settings.file_types, "\n", " ", "file_types_description: ", this.settings.file_types_description, "\n", " ", "file_size_limit: ", this.settings.file_size_limit, "\n", " ", "file_upload_limit: ", this.settings.file_upload_limit, "\n", " ", "file_queue_limit: ", this.settings.file_queue_limit, "\n", " ", "debug: ", this.settings.debug.toString(), "\n", " ", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n", " ", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n", " ", "button_placeholder: ", this.settings.button_placeholder ? "Set" : "Not Set", "\n", " ", "button_image_url: ", this.settings.button_image_url.toString(), "\n", " ", "button_width: ", this.settings.button_width.toString(), "\n", " ", "button_height: ", this.settings.button_height.toString(), "\n", " ", "button_text: ", this.settings.button_text.toString(), "\n", " ", "button_text_style: ", this.settings.button_text_style.toString(), "\n", " ", "button_text_top_padding: ", this.settings.button_text_top_padding.toString(), "\n", " ", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n", " ", "button_action: ", this.settings.button_action.toString(), "\n", " ", "button_disabled: ", this.settings.button_disabled.toString(), "\n", " ", "custom_settings: ", this.settings.custom_settings.toString(), "\n", "Event Handlers:\n", " ", "swfupload_loaded_handler assigned: ", ("function" == typeof this.settings.swfupload_loaded_handler).toString(), "\n", " ", "file_dialog_start_handler assigned: ", ("function" == typeof this.settings.file_dialog_start_handler).toString(), "\n", " ", "file_queued_handler assigned: ", ("function" == typeof this.settings.file_queued_handler).toString(), "\n", " ", "file_queue_error_handler assigned: ", ("function" == typeof this.settings.file_queue_error_handler).toString(), "\n", " ", "upload_start_handler assigned: ", ("function" == typeof this.settings.upload_start_handler).toString(), "\n", " ", "upload_progress_handler assigned: ", ("function" == typeof this.settings.upload_progress_handler).toString(), "\n", " ", "upload_error_handler assigned: ", ("function" == typeof this.settings.upload_error_handler).toString(), "\n", " ", "upload_success_handler assigned: ", ("function" == typeof this.settings.upload_success_handler).toString(), "\n", " ", "upload_complete_handler assigned: ", ("function" == typeof this.settings.upload_complete_handler).toString(), "\n", " ", "debug_handler assigned: ", ("function" == typeof this.settings.debug_handler).toString(), "\n"].join(""))
  5737. },
  5738. SWFUpload.prototype.addSetting = function(a, b, c) {
  5739. return this.settings[a] = void 0 == b ? c : b
  5740. },
  5741. SWFUpload.prototype.getSetting = function(a) {
  5742. return void 0 != this.settings[a] ? this.settings[a] : ""
  5743. },
  5744. SWFUpload.prototype.callFlash = function(functionName, argumentArray) {
  5745. argumentArray = argumentArray || [];
  5746. var movieElement = this.getMovieElement(),
  5747. returnValue,
  5748. returnString;
  5749. try {
  5750. returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + "</invoke>"),
  5751. returnValue = eval(returnString)
  5752. } catch(ex) {
  5753. throw "Call to " + functionName + " failed"
  5754. }
  5755. return void 0 != returnValue && "object" == typeof returnValue.post && (returnValue = this.unescapeFilePostParams(returnValue)),
  5756. returnValue
  5757. },
  5758. SWFUpload.prototype.selectFile = function() {
  5759. this.callFlash("SelectFile")
  5760. },
  5761. SWFUpload.prototype.selectFiles = function() {
  5762. this.callFlash("SelectFiles")
  5763. },
  5764. SWFUpload.prototype.startUpload = function(a) {
  5765. this.callFlash("StartUpload", [a])
  5766. },
  5767. SWFUpload.prototype.cancelUpload = function(a, b) {
  5768. b !== !1 && (b = !0),
  5769. this.callFlash("CancelUpload", [a, b])
  5770. },
  5771. SWFUpload.prototype.stopUpload = function() {
  5772. this.callFlash("StopUpload")
  5773. },
  5774. SWFUpload.prototype.getStats = function() {
  5775. return this.callFlash("GetStats")
  5776. },
  5777. SWFUpload.prototype.setStats = function(a) {
  5778. this.callFlash("SetStats", [a])
  5779. },
  5780. SWFUpload.prototype.getFile = function(a) {
  5781. return "number" == typeof a ? this.callFlash("GetFileByIndex", [a]) : this.callFlash("GetFile", [a])
  5782. },
  5783. SWFUpload.prototype.addFileParam = function(a, b, c) {
  5784. return this.callFlash("AddFileParam", [a, b, c])
  5785. },
  5786. SWFUpload.prototype.removeFileParam = function(a, b) {
  5787. this.callFlash("RemoveFileParam", [a, b])
  5788. },
  5789. SWFUpload.prototype.setUploadURL = function(a) {
  5790. this.settings.upload_url = a.toString(),
  5791. this.callFlash("SetUploadURL", [a])
  5792. },
  5793. SWFUpload.prototype.setPostParams = function(a) {
  5794. this.settings.post_params = a,
  5795. this.callFlash("SetPostParams", [a])
  5796. },
  5797. SWFUpload.prototype.addPostParam = function(a, b) {
  5798. this.settings.post_params[a] = b,
  5799. this.callFlash("SetPostParams", [this.settings.post_params])
  5800. },
  5801. SWFUpload.prototype.removePostParam = function(a) {
  5802. delete this.settings.post_params[a],
  5803. this.callFlash("SetPostParams", [this.settings.post_params])
  5804. },
  5805. SWFUpload.prototype.setFileTypes = function(a, b) {
  5806. this.settings.file_types = a,
  5807. this.settings.file_types_description = b,
  5808. this.callFlash("SetFileTypes", [a, b])
  5809. },
  5810. SWFUpload.prototype.setFileSizeLimit = function(a) {
  5811. this.settings.file_size_limit = a,
  5812. this.callFlash("SetFileSizeLimit", [a])
  5813. },
  5814. SWFUpload.prototype.setFileUploadLimit = function(a) {
  5815. this.settings.file_upload_limit = a,
  5816. this.callFlash("SetFileUploadLimit", [a])
  5817. },
  5818. SWFUpload.prototype.setFileQueueLimit = function(a) {
  5819. this.settings.file_queue_limit = a,
  5820. this.callFlash("SetFileQueueLimit", [a])
  5821. },
  5822. SWFUpload.prototype.setFilePostName = function(a) {
  5823. this.settings.file_post_name = a,
  5824. this.callFlash("SetFilePostName", [a])
  5825. },
  5826. SWFUpload.prototype.setUseQueryString = function(a) {
  5827. this.settings.use_query_string = a,
  5828. this.callFlash("SetUseQueryString", [a])
  5829. },
  5830. SWFUpload.prototype.setRequeueOnError = function(a) {
  5831. this.settings.requeue_on_error = a,
  5832. this.callFlash("SetRequeueOnError", [a])
  5833. },
  5834. SWFUpload.prototype.setHTTPSuccess = function(a) {
  5835. "string" == typeof a && (a = a.replace(" ", "").split(",")),
  5836. this.settings.http_success = a,
  5837. this.callFlash("SetHTTPSuccess", [a])
  5838. },
  5839. SWFUpload.prototype.setAssumeSuccessTimeout = function(a) {
  5840. this.settings.assume_success_timeout = a,
  5841. this.callFlash("SetAssumeSuccessTimeout", [a])
  5842. },
  5843. SWFUpload.prototype.setDebugEnabled = function(a) {
  5844. this.settings.debug_enabled = a,
  5845. this.callFlash("SetDebugEnabled", [a])
  5846. },
  5847. SWFUpload.prototype.setButtonImageURL = function(a) {
  5848. void 0 == a && (a = ""),
  5849. this.settings.button_image_url = a,
  5850. this.callFlash("SetButtonImageURL", [a])
  5851. },
  5852. SWFUpload.prototype.setButtonDimensions = function(a, b) {
  5853. this.settings.button_width = a,
  5854. this.settings.button_height = b;
  5855. var c = this.getMovieElement();
  5856. void 0 != c && (c.style.width = a + "px", c.style.height = b + "px"),
  5857. this.callFlash("SetButtonDimensions", [a, b])
  5858. },
  5859. SWFUpload.prototype.setButtonText = function(a) {
  5860. this.settings.button_text = a,
  5861. this.callFlash("SetButtonText", [a])
  5862. },
  5863. SWFUpload.prototype.setButtonTextPadding = function(a, b) {
  5864. this.settings.button_text_top_padding = b,
  5865. this.settings.button_text_left_padding = a,
  5866. this.callFlash("SetButtonTextPadding", [a, b])
  5867. },
  5868. SWFUpload.prototype.setButtonTextStyle = function(a) {
  5869. this.settings.button_text_style = a,
  5870. this.callFlash("SetButtonTextStyle", [a])
  5871. },
  5872. SWFUpload.prototype.setButtonDisabled = function(a) {
  5873. this.settings.button_disabled = a,
  5874. this.callFlash("SetButtonDisabled", [a])
  5875. },
  5876. SWFUpload.prototype.setButtonAction = function(a) {
  5877. this.settings.button_action = a,
  5878. this.callFlash("SetButtonAction", [a])
  5879. },
  5880. SWFUpload.prototype.setButtonCursor = function(a) {
  5881. this.settings.button_cursor = a,
  5882. this.callFlash("SetButtonCursor", [a])
  5883. },
  5884. SWFUpload.prototype.queueEvent = function(a, b) {
  5885. void 0 == b ? b = [] : b instanceof Array || (b = [b]);
  5886. var c = this;
  5887. if("function" == typeof this.settings[a]) this.eventQueue.push(function() {
  5888. this.settings[a].apply(this, b)
  5889. }),
  5890. setTimeout(function() {
  5891. c.executeNextEvent()
  5892. },
  5893. 0);
  5894. else if(null !== this.settings[a]) throw "Event handler " + a + " is unknown or is not a function"
  5895. },
  5896. SWFUpload.prototype.executeNextEvent = function() {
  5897. var a = this.eventQueue ? this.eventQueue.shift() : null;
  5898. "function" == typeof a && a.apply(this)
  5899. },
  5900. SWFUpload.prototype.unescapeFilePostParams = function(a) {
  5901. var b, c = /[$]([0-9a-f]{4})/i,
  5902. d = {};
  5903. if(void 0 != a) {
  5904. for(var e in a.post)
  5905. if(a.post.hasOwnProperty(e)) {
  5906. b = e;
  5907. for(var f; null !== (f = c.exec(b));) b = b.replace(f[0], String.fromCharCode(parseInt("0x" + f[1], 16)));
  5908. d[b] = a.post[e]
  5909. }
  5910. a.post = d
  5911. }
  5912. return a
  5913. },
  5914. SWFUpload.prototype.testExternalInterface = function() {
  5915. try {
  5916. return this.callFlash("TestExternalInterface")
  5917. } catch(a) {
  5918. return !1
  5919. }
  5920. },
  5921. SWFUpload.prototype.flashReady = function() {
  5922. var a = this.getMovieElement();
  5923. return a ? (this.cleanUp(a), void this.queueEvent("swfupload_loaded_handler")) : void this.debug("Flash called back ready but the flash movie can't be found.")
  5924. },
  5925. SWFUpload.prototype.cleanUp = function(a) {
  5926. try {
  5927. if(this.movieElement && "unknown" == typeof a.CallFunction) {
  5928. this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
  5929. for(var b in a) try {
  5930. "function" == typeof a[b] && (a[b] = null)
  5931. } catch(c) {}
  5932. }
  5933. } catch(d) {}
  5934. window.__flash__removeCallback = function(a, b) {
  5935. try {
  5936. a && (a[b] = null)
  5937. } catch(c) {}
  5938. }
  5939. },
  5940. SWFUpload.prototype.fileDialogStart = function() {
  5941. this.queueEvent("file_dialog_start_handler")
  5942. },
  5943. SWFUpload.prototype.fileQueued = function(a) {
  5944. a = this.unescapeFilePostParams(a),
  5945. this.queueEvent("file_queued_handler", a)
  5946. },
  5947. SWFUpload.prototype.fileQueueError = function(a, b, c) {
  5948. a = this.unescapeFilePostParams(a),
  5949. this.queueEvent("file_queue_error_handler", [a, b, c])
  5950. },
  5951. SWFUpload.prototype.fileDialogComplete = function(a, b, c) {
  5952. this.queueEvent("file_dialog_complete_handler", [a, b, c])
  5953. },
  5954. SWFUpload.prototype.uploadStart = function(a) {
  5955. a = this.unescapeFilePostParams(a),
  5956. this.queueEvent("return_upload_start_handler", a)
  5957. },
  5958. SWFUpload.prototype.returnUploadStart = function(a) {
  5959. var b;
  5960. if("function" == typeof this.settings.upload_start_handler) a = this.unescapeFilePostParams(a),
  5961. b = this.settings.upload_start_handler.call(this, a);
  5962. else if(void 0 != this.settings.upload_start_handler) throw "upload_start_handler must be a function";
  5963. void 0 === b && (b = !0),
  5964. b = !!b,
  5965. this.callFlash("ReturnUploadStart", [b])
  5966. },
  5967. SWFUpload.prototype.uploadProgress = function(a, b, c) {
  5968. a = this.unescapeFilePostParams(a),
  5969. this.queueEvent("upload_progress_handler", [a, b, c])
  5970. },
  5971. SWFUpload.prototype.uploadError = function(a, b, c) {
  5972. a = this.unescapeFilePostParams(a),
  5973. this.queueEvent("upload_error_handler", [a, b, c])
  5974. },
  5975. SWFUpload.prototype.uploadSuccess = function(a, b, c) {
  5976. a = this.unescapeFilePostParams(a),
  5977. this.queueEvent("upload_success_handler", [a, b, c])
  5978. },
  5979. SWFUpload.prototype.uploadComplete = function(a) {
  5980. a = this.unescapeFilePostParams(a),
  5981. this.queueEvent("upload_complete_handler", a)
  5982. },
  5983. SWFUpload.prototype.debug = function(a) {
  5984. this.queueEvent("debug_handler", a)
  5985. },
  5986. SWFUpload.prototype.debugMessage = function(a) {
  5987. if(this.settings.debug) {
  5988. var b, c = [];
  5989. if("object" == typeof a && "string" == typeof a.name && "string" == typeof a.message) {
  5990. for(var d in a) a.hasOwnProperty(d) && c.push(d + ": " + a[d]);
  5991. b = c.join("\n") || "",
  5992. c = b.split("\n"),
  5993. b = "EXCEPTION: " + c.join("\nEXCEPTION: "),
  5994. SWFUpload.Console.writeLine(b)
  5995. } else SWFUpload.Console.writeLine(a)
  5996. }
  5997. },
  5998. SWFUpload.Console = {},
  5999. SWFUpload.Console.writeLine = function(a) {
  6000. var b, c;
  6001. try {
  6002. b = document.getElementById("SWFUpload_Console"),
  6003. b || (c = document.createElement("form"), document.getElementsByTagName("body")[0].appendChild(c), b = document.createElement("textarea"), b.id = "SWFUpload_Console", b.style.fontFamily = "monospace", b.setAttribute("wrap", "off"), b.wrap = "off", b.style.overflow = "auto", b.style.width = "700px", b.style.height = "350px", b.style.margin = "5px", c.appendChild(b)),
  6004. b.value += a + "\n",
  6005. b.scrollTop = b.scrollHeight - b.clientHeight
  6006. } catch(d) {
  6007. alert("Exception: " + d.name + " Message: " + d.message)
  6008. }
  6009. }
  6010. }(),
  6011. function() {
  6012. "function" == typeof SWFUpload && (SWFUpload.queue = {},
  6013. SWFUpload.prototype.initSettings = function(a) {
  6014. return function() {
  6015. "function" == typeof a && a.call(this),
  6016. this.queueSettings = {},
  6017. this.queueSettings.queue_cancelled_flag = !1,
  6018. this.queueSettings.queue_upload_count = 0,
  6019. this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler,
  6020. this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler,
  6021. this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler,
  6022. this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler,
  6023. this.settings.queue_complete_handler = this.settings.queue_complete_handler || null
  6024. }
  6025. }(SWFUpload.prototype.initSettings), SWFUpload.prototype.startUpload = function(a) {
  6026. this.queueSettings.queue_cancelled_flag = !1,
  6027. this.callFlash("StartUpload", [a])
  6028. },
  6029. SWFUpload.prototype.cancelQueue = function() {
  6030. this.queueSettings.queue_cancelled_flag = !0,
  6031. this.stopUpload();
  6032. for(var a = this.getStats(); a.files_queued > 0;) this.cancelUpload(),
  6033. a = this.getStats()
  6034. },
  6035. SWFUpload.queue.uploadStartHandler = function(a) {
  6036. var b;
  6037. return "function" == typeof this.queueSettings.user_upload_start_handler && (b = this.queueSettings.user_upload_start_handler.call(this, a)),
  6038. b = b === !1 ? !1 : !0,
  6039. this.queueSettings.queue_cancelled_flag = !b,
  6040. b
  6041. },
  6042. SWFUpload.queue.uploadCompleteHandler = function(a) {
  6043. var b, c = this.queueSettings.user_upload_complete_handler;
  6044. if(a.filestatus === SWFUpload.FILE_STATUS.COMPLETE && this.queueSettings.queue_upload_count++, b = "function" == typeof c ? c.call(this, a) === !1 ? !1 : !0 : a.filestatus === SWFUpload.FILE_STATUS.QUEUED ? !1 : !0) {
  6045. var d = this.getStats();
  6046. d.files_queued > 0 && this.queueSettings.queue_cancelled_flag === !1 ? this.startUpload() : this.queueSettings.queue_cancelled_flag === !1 ? (this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]), this.queueSettings.queue_upload_count = 0) : (this.queueSettings.queue_cancelled_flag = !1, this.queueSettings.queue_upload_count = 0)
  6047. }
  6048. })
  6049. }(),
  6050. KindEditor.plugin("pagebreak",
  6051. function(a) {
  6052. var b = this,
  6053. c = "pagebreak",
  6054. d = a.undef(b.pagebreakHtml, '<hr style="page-break-after: always;" class="ke-pagebreak" />');
  6055. b.clickToolbar(c,
  6056. function() {
  6057. var c = b.cmd,
  6058. e = c.range;
  6059. b.focus();
  6060. var f = "br" == b.newlineTag || a.WEBKIT ? "" : '<span id="__kindeditor_tail_tag__"></span>';
  6061. if(b.insertHtml(d + f), "" !== f) {
  6062. var g = a("#__kindeditor_tail_tag__", b.edit.doc);
  6063. e.selectNodeContents(g[0]),
  6064. g.removeAttr("id"),
  6065. c.select()
  6066. }
  6067. })
  6068. }),
  6069. KindEditor.plugin("plainpaste",
  6070. function(a) {
  6071. var b = this,
  6072. c = "plainpaste";
  6073. b.clickToolbar(c,
  6074. function() {
  6075. var d = b.lang(c + "."),
  6076. e = '<div style="padding:10px 20px;"><div style="margin-bottom:10px;">' + d.comment + '</div><textarea class="ke-textarea" style="width:408px;height:260px;"></textarea></div>',
  6077. f = b.createDialog({
  6078. name: c,
  6079. width: 450,
  6080. title: b.lang(c),
  6081. body: e,
  6082. yesBtn: {
  6083. name: b.lang("yes"),
  6084. click: function() {
  6085. var c = g.val();
  6086. c = a.escape(c),
  6087. c = c.replace(/ {2}/g, " &nbsp;"),
  6088. c = "p" == b.newlineTag ? c.replace(/^/, "<p>").replace(/$/, "</p>").replace(/\n/g, "</p><p>") : c.replace(/\n/g, "<br />$&"),
  6089. b.insertHtml(c).hideDialog().focus()
  6090. }
  6091. }
  6092. }),
  6093. g = a("textarea", f.div);
  6094. g[0].focus()
  6095. })
  6096. }),
  6097. KindEditor.plugin("preview",
  6098. function(a) {
  6099. var b = this,
  6100. c = "preview";
  6101. b.clickToolbar(c,
  6102. function() {
  6103. var d = (b.lang(c + "."), '<div style="padding:10px 20px;"><iframe class="ke-textarea" frameborder="0" style="width:708px;height:400px;"></iframe></div>'),
  6104. e = b.createDialog({
  6105. name: c,
  6106. width: 750,
  6107. title: b.lang(c),
  6108. body: d
  6109. }),
  6110. f = a("iframe", e.div),
  6111. g = a.iframeDoc(f);
  6112. g.open(),
  6113. g.write(b.fullHtml()),
  6114. g.close(),
  6115. a(g.body).css("background-color", "#FFF"),
  6116. f[0].contentWindow.focus()
  6117. })
  6118. }),
  6119. KindEditor.plugin("quickformat",
  6120. function(a) {
  6121. function b(a) {
  6122. for(var b = a.first(); b && b.first();) b = b.first();
  6123. return b
  6124. }
  6125. var c = this,
  6126. d = "quickformat",
  6127. e = a.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");
  6128. c.clickToolbar(d,
  6129. function() {
  6130. c.focus();
  6131. for(var d, f = c.edit.doc,
  6132. g = c.cmd.range,
  6133. h = a(f.body).first(), i = [], j = [], k = g.createBookmark(!0); h;) {
  6134. d = h.next();
  6135. var l = b(h);
  6136. l && "img" == l.name || (e[h.name] ? (h.html(h.html().replace(/^(\s|&nbsp;| )+/gi, "")), h.css("text-indent", "2em")) : j.push(h), (!d || e[d.name] || e[h.name] && !e[d.name]) && (j.length > 0 && i.push(j), j = [])),
  6137. h = d
  6138. }
  6139. a.each(i,
  6140. function(b, c) {
  6141. var d = a('<p style="text-indent:2em;"></p>', f);
  6142. c[0].before(d),
  6143. a.each(c,
  6144. function(a, b) {
  6145. d.append(b)
  6146. })
  6147. }),
  6148. g.moveToBookmark(k),
  6149. c.addBookmark()
  6150. })
  6151. }),
  6152. KindEditor.plugin("table",
  6153. function(a) {
  6154. function b(a, b) {
  6155. b = b.toUpperCase(),
  6156. a.css("background-color", b),
  6157. a.css("color", "#000000" === b ? "#FFFFFF" : "#000000"),
  6158. a.html(b)
  6159. }
  6160. function c(c, d) {
  6161. function f() {
  6162. a.each(i,
  6163. function() {
  6164. this.remove()
  6165. }),
  6166. i = [],
  6167. a(document).unbind("click,mousedown", f),
  6168. c.unbind("click,mousedown", f)
  6169. }
  6170. d.bind("click,mousedown",
  6171. function(a) {
  6172. a.stopPropagation()
  6173. }),
  6174. d.click(function() {
  6175. f();
  6176. var d = a(this),
  6177. g = d.pos(),
  6178. h = a.colorpicker({
  6179. x: g.x,
  6180. y: g.y + d.height(),
  6181. z: 811214,
  6182. selectedColor: a(this).html(),
  6183. colors: e.colorTable,
  6184. noColor: e.lang("noColor"),
  6185. shadowMode: e.shadowMode,
  6186. click: function(a) {
  6187. b(d, a),
  6188. f()
  6189. }
  6190. });
  6191. i.push(h),
  6192. a(document).bind("click,mousedown", f),
  6193. c.bind("click,mousedown", f)
  6194. })
  6195. }
  6196. function d(a, b, c) {
  6197. for(var d = 0,
  6198. e = 0,
  6199. f = b.cells.length; f > e && b.cells[e] != c; e++) d += b.cells[e].rowSpan - 1;
  6200. return c.cellIndex - d
  6201. }
  6202. var e = this,
  6203. f = "table",
  6204. g = e.lang(f + "."),
  6205. h = "ke-zeroborder",
  6206. i = [];
  6207. e.plugin.table = {
  6208. prop: function(d) {
  6209. var i = ['<div style="padding:20px;">', '<div class="ke-dialog-row">', '<label for="keRows" style="width:90px;">' + g.cells + "</label>", g.rows + ' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> &nbsp; ', g.cols + ' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />', "</div>", '<div class="ke-dialog-row">', '<label for="keWidth" style="width:90px;">' + g.size + "</label>", g.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> &nbsp; ', '<select name="widthType">', '<option value="%">' + g.percent + "</option>", '<option value="px">' + g.px + "</option>", "</select> &nbsp; ", g.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> &nbsp; ', '<select name="heightType">', '<option value="%">' + g.percent + "</option>", '<option value="px">' + g.px + "</option>", "</select>", "</div>", '<div class="ke-dialog-row">', '<label for="kePadding" style="width:90px;">' + g.space + "</label>", g.padding + ' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> &nbsp; ', g.spacing + ' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />', "</div>", '<div class="ke-dialog-row">', '<label for="keAlign" style="width:90px;">' + g.align + "</label>", '<select id="keAlign" name="align">', '<option value="">' + g.alignDefault + "</option>", '<option value="left">' + g.alignLeft + "</option>", '<option value="center">' + g.alignCenter + "</option>", '<option value="right">' + g.alignRight + "</option>", "</select>", "</div>", '<div class="ke-dialog-row">', '<label for="keBorder" style="width:90px;">' + g.border + "</label>", g.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> &nbsp; ', g.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', "</div>", '<div class="ke-dialog-row">', '<label for="keBgColor" style="width:90px;">' + g.backgroundColor + "</label>", '<span class="ke-inline-block ke-input-color"></span>', "</div>", "</div>"].join(""),
  6210. j = e.cmd.range.createBookmark(),
  6211. k = e.createDialog({
  6212. name: f,
  6213. width: 500,
  6214. title: e.lang(f),
  6215. body: i,
  6216. beforeRemove: function() {
  6217. w.unbind()
  6218. },
  6219. yesBtn: {
  6220. name: e.lang("yes"),
  6221. click: function() {
  6222. var b = m.val(),
  6223. c = n.val(),
  6224. d = o.val(),
  6225. f = p.val(),
  6226. g = q.val(),
  6227. i = r.val(),
  6228. k = s.val(),
  6229. l = t.val(),
  6230. y = u.val(),
  6231. z = v.val(),
  6232. A = a(w[0]).html() || "",
  6233. B = a(w[1]).html() || "";
  6234. if(0 == b || !/^\d+$/.test(b)) return alert(e.lang("invalidRows")),
  6235. void m[0].focus();
  6236. if(0 == c || !/^\d+$/.test(c)) return alert(e.lang("invalidRows")),
  6237. void n[0].focus();
  6238. if(!/^\d*$/.test(d)) return alert(e.lang("invalidWidth")),
  6239. void o[0].focus();
  6240. if(!/^\d*$/.test(f)) return alert(e.lang("invalidHeight")),
  6241. void p[0].focus();
  6242. if(!/^\d*$/.test(k)) return alert(e.lang("invalidPadding")),
  6243. void s[0].focus();
  6244. if(!/^\d*$/.test(l)) return alert(e.lang("invalidSpacing")),
  6245. void t[0].focus();
  6246. if(!/^\d*$/.test(z)) return alert(e.lang("invalidBorder")),
  6247. void v[0].focus();
  6248. if(x) return "" !== d ? x.width(d + g) : x.css("width", ""),
  6249. void 0 !== x[0].width && x.removeAttr("width"),
  6250. "" !== f ? x.height(f + i) : x.css("height", ""),
  6251. void 0 !== x[0].height && x.removeAttr("height"),
  6252. x.css("background-color", B),
  6253. void 0 !== x[0].bgColor && x.removeAttr("bgColor"),
  6254. "" !== k ? x[0].cellPadding = k : x.removeAttr("cellPadding"),
  6255. "" !== l ? x[0].cellSpacing = l : x.removeAttr("cellSpacing"),
  6256. "" !== y ? x[0].align = y : x.removeAttr("align"),
  6257. "" !== z ? x.attr("border", z) : x.removeAttr("border"),
  6258. "" === z || "0" === z ? x.addClass(h) : x.removeClass(h),
  6259. "" !== A ? x.attr("borderColor", A) : x.removeAttr("borderColor"),
  6260. e.hideDialog().focus(),
  6261. e.cmd.range.moveToBookmark(j),
  6262. e.cmd.select(),
  6263. void e.addBookmark();
  6264. var C = "";
  6265. "" !== d && (C += "width:" + d + g + ";"),
  6266. "" !== f && (C += "height:" + f + i + ";"),
  6267. "" !== B && (C += "background-color:" + B + ";");
  6268. var D = "<table";
  6269. "" !== C && (D += ' style="' + C + '"'),
  6270. "" !== k && (D += ' cellpadding="' + k + '"'),
  6271. "" !== l && (D += ' cellspacing="' + l + '"'),
  6272. "" !== y && (D += ' align="' + y + '"'),
  6273. "" !== z && (D += ' border="' + z + '"'),
  6274. ("" === z || "0" === z) && (D += ' class="' + h + '"'),
  6275. "" !== A && (D += ' bordercolor="' + A + '"'),
  6276. D += ">";
  6277. for(var E = 0; b > E; E++) {
  6278. D += "<tr>";
  6279. for(var F = 0; c > F; F++) D += "<td>" + (a.IE ? "&nbsp;" : "<br />") + "</td>";
  6280. D += "</tr>"
  6281. }
  6282. D += "</table>",
  6283. a.IE || (D += "<br />"),
  6284. e.insertHtml(D),
  6285. e.select().hideDialog().focus(),
  6286. e.addBookmark()
  6287. }
  6288. }
  6289. }),
  6290. l = k.div,
  6291. m = a('[name="rows"]', l).val(3),
  6292. n = a('[name="cols"]', l).val(2),
  6293. o = a('[name="width"]', l).val(100),
  6294. p = a('[name="height"]', l),
  6295. q = a('[name="widthType"]', l),
  6296. r = a('[name="heightType"]', l),
  6297. s = a('[name="padding"]', l).val(2),
  6298. t = a('[name="spacing"]', l).val(0),
  6299. u = a('[name="align"]', l),
  6300. v = a('[name="border"]', l).val(1),
  6301. w = a(".ke-input-color", l);
  6302. c(l, w.eq(0)),
  6303. c(l, w.eq(1)),
  6304. b(w.eq(0), "#000000"),
  6305. b(w.eq(1), ""),
  6306. m[0].focus(),
  6307. m[0].select();
  6308. var x;
  6309. if(!d && (x = e.plugin.getSelectedTable())) {
  6310. m.val(x[0].rows.length),
  6311. n.val(x[0].rows.length > 0 ? x[0].rows[0].cells.length : 0),
  6312. m.attr("disabled", !0),
  6313. n.attr("disabled", !0);
  6314. var y, z = x[0].style.width || x[0].width,
  6315. A = x[0].style.height || x[0].height;
  6316. void 0 !== z && (y = /^(\d+)((?:px|%)*)$/.exec(z)) ? (o.val(y[1]), q.val(y[2])) : o.val(""),
  6317. void 0 !== A && (y = /^(\d+)((?:px|%)*)$/.exec(A)) && (p.val(y[1]), r.val(y[2])),
  6318. s.val(x[0].cellPadding || ""),
  6319. t.val(x[0].cellSpacing || ""),
  6320. u.val(x[0].align || ""),
  6321. v.val(void 0 === x[0].border ? "" : x[0].border),
  6322. b(w.eq(0), a.toHex(x.attr("borderColor") || "")),
  6323. b(w.eq(1), a.toHex(x[0].style.backgroundColor || x[0].bgColor || "")),
  6324. o[0].focus(),
  6325. o[0].select()
  6326. }
  6327. },
  6328. cellprop: function() {
  6329. var d = ['<div style="padding:20px;">', '<div class="ke-dialog-row">', '<label for="keWidth" style="width:90px;">' + g.size + "</label>", g.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> &nbsp; ', '<select name="widthType">', '<option value="%">' + g.percent + "</option>", '<option value="px">' + g.px + "</option>", "</select> &nbsp; ", g.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> &nbsp; ', '<select name="heightType">', '<option value="%">' + g.percent + "</option>", '<option value="px">' + g.px + "</option>", "</select>", "</div>", '<div class="ke-dialog-row">', '<label for="keAlign" style="width:90px;">' + g.align + "</label>", g.textAlign + ' <select id="keAlign" name="textAlign">', '<option value="">' + g.alignDefault + "</option>", '<option value="left">' + g.alignLeft + "</option>", '<option value="center">' + g.alignCenter + "</option>", '<option value="right">' + g.alignRight + "</option>", "</select> ", g.verticalAlign + ' <select name="verticalAlign">', '<option value="">' + g.alignDefault + "</option>", '<option value="top">' + g.alignTop + "</option>", '<option value="middle">' + g.alignMiddle + "</option>", '<option value="bottom">' + g.alignBottom + "</option>", '<option value="baseline">' + g.alignBaseline + "</option>", "</select>", "</div>", '<div class="ke-dialog-row">', '<label for="keBorder" style="width:90px;">' + g.border + "</label>", g.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> &nbsp; ', g.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', "</div>", '<div class="ke-dialog-row">', '<label for="keBgColor" style="width:90px;">' + g.backgroundColor + "</label>", '<span class="ke-inline-block ke-input-color"></span>', "</div>", "</div>"].join(""),
  6330. h = e.cmd.range.createBookmark(),
  6331. i = e.createDialog({
  6332. name: f,
  6333. width: 500,
  6334. title: e.lang("tablecell"),
  6335. body: d,
  6336. beforeRemove: function() {
  6337. t.unbind()
  6338. },
  6339. yesBtn: {
  6340. name: e.lang("yes"),
  6341. click: function() {
  6342. var b = k.val(),
  6343. c = l.val(),
  6344. d = m.val(),
  6345. f = n.val(),
  6346. g = (o.val(), p.val(), q.val()),
  6347. i = r.val(),
  6348. j = s.val(),
  6349. u = a(t[0]).html() || "",
  6350. w = a(t[1]).html() || "";
  6351. return /^\d*$/.test(b) ? /^\d*$/.test(c) ? /^\d*$/.test(j) ? (v.css({
  6352. width: "" !== b ? b + d : "",
  6353. height: "" !== c ? c + f : "",
  6354. "background-color": w,
  6355. "text-align": g,
  6356. "vertical-align": i,
  6357. "border-width": j,
  6358. "border-style": "" !== j ? "solid" : "",
  6359. "border-color": u
  6360. }), e.hideDialog().focus(), e.cmd.range.moveToBookmark(h), e.cmd.select(), void e.addBookmark()) : (alert(e.lang("invalidBorder")), void s[0].focus()) : (alert(e.lang("invalidHeight")), void l[0].focus()) : (alert(e.lang("invalidWidth")), void k[0].focus())
  6361. }
  6362. }
  6363. }),
  6364. j = i.div,
  6365. k = a('[name="width"]', j).val(100),
  6366. l = a('[name="height"]', j),
  6367. m = a('[name="widthType"]', j),
  6368. n = a('[name="heightType"]', j),
  6369. o = a('[name="padding"]', j).val(2),
  6370. p = a('[name="spacing"]', j).val(0),
  6371. q = a('[name="textAlign"]', j),
  6372. r = a('[name="verticalAlign"]', j),
  6373. s = a('[name="border"]', j).val(1),
  6374. t = a(".ke-input-color", j);
  6375. c(j, t.eq(0)),
  6376. c(j, t.eq(1)),
  6377. b(t.eq(0), "#000000"),
  6378. b(t.eq(1), ""),
  6379. k[0].focus(),
  6380. k[0].select();
  6381. var u, v = e.plugin.getSelectedCell(),
  6382. w = v[0].style.width || v[0].width || "",
  6383. x = v[0].style.height || v[0].height || "";
  6384. (u = /^(\d+)((?:px|%)*)$/.exec(w)) ? (k.val(u[1]), m.val(u[2])) : k.val(""),
  6385. (u = /^(\d+)((?:px|%)*)$/.exec(x)) && (l.val(u[1]), n.val(u[2])),
  6386. q.val(v[0].style.textAlign || ""),
  6387. r.val(v[0].style.verticalAlign || "");
  6388. var y = v[0].style.borderWidth || "";
  6389. y && (y = parseInt(y)),
  6390. s.val(y),
  6391. b(t.eq(0), a.toHex(v[0].style.borderColor || "")),
  6392. b(t.eq(1), a.toHex(v[0].style.backgroundColor || "")),
  6393. k[0].focus(),
  6394. k[0].select()
  6395. },
  6396. insert: function() {
  6397. this.prop(!0)
  6398. },
  6399. "delete": function() {
  6400. var a = e.plugin.getSelectedTable();
  6401. e.cmd.range.setStartBefore(a[0]).collapse(!0),
  6402. e.cmd.select(),
  6403. a.remove(),
  6404. e.addBookmark()
  6405. },
  6406. colinsert: function(b) {
  6407. var c = e.plugin.getSelectedTable()[0],
  6408. f = e.plugin.getSelectedRow()[0],
  6409. g = e.plugin.getSelectedCell()[0],
  6410. h = g.cellIndex + b;
  6411. h += c.rows[0].cells.length - f.cells.length;
  6412. for(var i = 0,
  6413. j = c.rows.length; j > i; i++) {
  6414. var k = c.rows[i],
  6415. l = k.insertCell(h);
  6416. l.innerHTML = a.IE ? "" : "<br />",
  6417. h = d(c, k, l)
  6418. }
  6419. e.cmd.range.selectNodeContents(g).collapse(!0),
  6420. e.cmd.select(),
  6421. e.addBookmark()
  6422. },
  6423. colinsertleft: function() {
  6424. this.colinsert(0)
  6425. },
  6426. colinsertright: function() {
  6427. this.colinsert(1)
  6428. },
  6429. rowinsert: function(b) {
  6430. var c = e.plugin.getSelectedTable()[0],
  6431. d = e.plugin.getSelectedRow()[0],
  6432. f = e.plugin.getSelectedCell()[0],
  6433. g = d.rowIndex;
  6434. 1 === b && (g = d.rowIndex + (f.rowSpan - 1) + b);
  6435. for(var h = c.insertRow(g), i = 0, j = d.cells.length; j > i; i++) {
  6436. d.cells[i].rowSpan > 1 && (j -= d.cells[i].rowSpan - 1);
  6437. var k = h.insertCell(i);
  6438. 1 === b && d.cells[i].colSpan > 1 && (k.colSpan = d.cells[i].colSpan),
  6439. k.innerHTML = a.IE ? "" : "<br />"
  6440. }
  6441. for(var l = g; l >= 0; l--) {
  6442. var m = c.rows[l].cells;
  6443. if(m.length > i) {
  6444. for(var n = f.cellIndex; n >= 0; n--) m[n].rowSpan > 1 && (m[n].rowSpan += 1);
  6445. break
  6446. }
  6447. }
  6448. e.cmd.range.selectNodeContents(f).collapse(!0),
  6449. e.cmd.select(),
  6450. e.addBookmark()
  6451. },
  6452. rowinsertabove: function() {
  6453. this.rowinsert(0)
  6454. },
  6455. rowinsertbelow: function() {
  6456. this.rowinsert(1)
  6457. },
  6458. rowmerge: function() {
  6459. var a = e.plugin.getSelectedTable()[0],
  6460. b = e.plugin.getSelectedRow()[0],
  6461. c = e.plugin.getSelectedCell()[0],
  6462. d = b.rowIndex,
  6463. f = d + c.rowSpan,
  6464. g = a.rows[f];
  6465. if(!(a.rows.length <= f)) {
  6466. var h = c.cellIndex;
  6467. if(!(g.cells.length <= h)) {
  6468. var i = g.cells[h];
  6469. c.colSpan === i.colSpan && (c.rowSpan += i.rowSpan, g.deleteCell(h), e.cmd.range.selectNodeContents(c).collapse(!0), e.cmd.select(), e.addBookmark())
  6470. }
  6471. }
  6472. },
  6473. colmerge: function() {
  6474. var a = (e.plugin.getSelectedTable()[0], e.plugin.getSelectedRow()[0]),
  6475. b = e.plugin.getSelectedCell()[0],
  6476. c = (a.rowIndex, b.cellIndex),
  6477. d = c + 1;
  6478. if(!(a.cells.length <= d)) {
  6479. var f = a.cells[d];
  6480. b.rowSpan === f.rowSpan && (b.colSpan += f.colSpan, a.deleteCell(d), e.cmd.range.selectNodeContents(b).collapse(!0), e.cmd.select(), e.addBookmark())
  6481. }
  6482. },
  6483. rowsplit: function() {
  6484. var b = e.plugin.getSelectedTable()[0],
  6485. c = e.plugin.getSelectedRow()[0],
  6486. f = e.plugin.getSelectedCell()[0],
  6487. g = c.rowIndex;
  6488. if(1 !== f.rowSpan) {
  6489. for(var h = d(b, c, f), i = 1, j = f.rowSpan; j > i; i++) {
  6490. var k = b.rows[g + i],
  6491. l = k.insertCell(h);
  6492. f.colSpan > 1 && (l.colSpan = f.colSpan),
  6493. l.innerHTML = a.IE ? "" : "<br />",
  6494. h = d(b, k, l)
  6495. }
  6496. a(f).removeAttr("rowSpan"),
  6497. e.cmd.range.selectNodeContents(f).collapse(!0),
  6498. e.cmd.select(),
  6499. e.addBookmark()
  6500. }
  6501. },
  6502. colsplit: function() {
  6503. var b = (e.plugin.getSelectedTable()[0], e.plugin.getSelectedRow()[0]),
  6504. c = e.plugin.getSelectedCell()[0],
  6505. d = c.cellIndex;
  6506. if(1 !== c.colSpan) {
  6507. for(var f = 1,
  6508. g = c.colSpan; g > f; f++) {
  6509. var h = b.insertCell(d + f);
  6510. c.rowSpan > 1 && (h.rowSpan = c.rowSpan),
  6511. h.innerHTML = a.IE ? "" : "<br />"
  6512. }
  6513. a(c).removeAttr("colSpan"),
  6514. e.cmd.range.selectNodeContents(c).collapse(!0),
  6515. e.cmd.select(),
  6516. e.addBookmark()
  6517. }
  6518. },
  6519. coldelete: function() {
  6520. for(var b = e.plugin.getSelectedTable()[0], c = e.plugin.getSelectedRow()[0], d = e.plugin.getSelectedCell()[0], f = d.cellIndex, g = 0, h = b.rows.length; h > g; g++) {
  6521. var i = b.rows[g],
  6522. j = i.cells[f];
  6523. j.colSpan > 1 ? (j.colSpan -= 1, 1 === j.colSpan && a(j).removeAttr("colSpan")) : i.deleteCell(f),
  6524. j.rowSpan > 1 && (g += j.rowSpan - 1)
  6525. }
  6526. 0 === c.cells.length ? (e.cmd.range.setStartBefore(b).collapse(!0), e.cmd.select(), a(b).remove()) : e.cmd.selection(!0),
  6527. e.addBookmark()
  6528. },
  6529. rowdelete: function() {
  6530. for(var b = e.plugin.getSelectedTable()[0], c = e.plugin.getSelectedRow()[0], d = e.plugin.getSelectedCell()[0], f = c.rowIndex, g = d.rowSpan - 1; g >= 0; g--) b.deleteRow(f + g);
  6531. 0 === b.rows.length ? (e.cmd.range.setStartBefore(b).collapse(!0), e.cmd.select(), a(b).remove()) : e.cmd.selection(!0),
  6532. e.addBookmark()
  6533. }
  6534. },
  6535. e.clickToolbar(f, e.plugin.table.prop)
  6536. }),
  6537. KindEditor.plugin("template",
  6538. function(a) {
  6539. function b(b) {
  6540. return e + b + "?ver=" + encodeURIComponent(a.DEBUG ? a.TIME : a.VERSION)
  6541. }
  6542. var c = this,
  6543. d = "template",
  6544. e = (c.lang(d + "."), c.pluginsPath + d + "/html/");
  6545. c.clickToolbar(d,
  6546. function() {
  6547. var e = c.lang(d + "."),
  6548. f = ['<div style="padding:10px 20px;">', '<div class="ke-header">', '<div class="ke-left">', e.selectTemplate + " <select>"];
  6549. a.each(e.fileList,
  6550. function(a, b) {
  6551. f.push('<option value="' + a + '">' + b + "</option>")
  6552. }),
  6553. html = [f.join(""), "</select></div>", '<div class="ke-right">', '<input type="checkbox" id="keReplaceFlag" name="replaceFlag" value="1" /> <label for="keReplaceFlag">' + e.replaceContent + "</label>", "</div>", '<div class="ke-clearfix"></div>', "</div>", '<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>', "</div>"].join("");
  6554. var g = c.createDialog({
  6555. name: d,
  6556. width: 500,
  6557. title: c.lang(d),
  6558. body: html,
  6559. yesBtn: {
  6560. name: c.lang("yes"),
  6561. click: function() {
  6562. var b = a.iframeDoc(j);
  6563. c[i[0].checked ? "html" : "insertHtml"](b.body.innerHTML).hideDialog().focus()
  6564. }
  6565. }
  6566. }),
  6567. h = a("select", g.div),
  6568. i = a('[name="replaceFlag"]', g.div),
  6569. j = a("iframe", g.div);
  6570. i[0].checked = !0,
  6571. j.attr("src", b(h.val())),
  6572. h.change(function() {
  6573. j.attr("src", b(this.value))
  6574. })
  6575. })
  6576. }),
  6577. KindEditor.plugin("wordpaste",
  6578. function(a) {
  6579. var b = this,
  6580. c = "wordpaste";
  6581. b.clickToolbar(c,
  6582. function() {
  6583. var d = b.lang(c + "."),
  6584. e = '<div style="padding:10px 20px;"><div style="margin-bottom:10px;">' + d.comment + '</div><iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe></div>',
  6585. f = b.createDialog({
  6586. name: c,
  6587. width: 450,
  6588. title: b.lang(c),
  6589. body: e,
  6590. yesBtn: {
  6591. name: b.lang("yes"),
  6592. click: function() {
  6593. var c = i.body.innerHTML;
  6594. c = a.clearMsWord(c, b.filterMode ? b.htmlTags : a.options.htmlTags),
  6595. b.insertHtml(c).hideDialog().focus()
  6596. }
  6597. }
  6598. }),
  6599. g = f.div,
  6600. h = a("iframe", g),
  6601. i = a.iframeDoc(h);
  6602. a.IE || (i.designMode = "on"),
  6603. i.open(),
  6604. i.write("<!doctype html><html><head><title>WordPaste</title></head>"),
  6605. i.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">'),
  6606. a.IE || i.write("<br />"),
  6607. i.write("</body></html>"),
  6608. i.close(),
  6609. a.IE && (i.body.contentEditable = "true"),
  6610. h[0].contentWindow.focus()
  6611. })
  6612. }),
  6613. KindEditor.plugin("fixtoolbar",
  6614. function(a) {
  6615. function b() {
  6616. var b = a(".ke-toolbar"),
  6617. c = b.pos().y;
  6618. a(window).bind("scroll",
  6619. function() {
  6620. "fixed" == b.css("position") ? document.body.scrollTop - c < 0 && (b.css("position", "static"), b.css("top", "auto")) : b.pos().y - document.body.scrollTop < 0 && (b.css("position", "fixed"), b.css("top", 0))
  6621. })
  6622. }
  6623. var c = this;
  6624. c.fixToolBar && (c.isCreated ? b() : c.afterCreate(b))
  6625. });