var lang = {"ylm":"Your Life Moments","newspaper":"Newspaper","selectCity":"Select a City","mustSelectCity":"You must select a city.","cities":"Cities","death":"Death","deaths":"Deaths","obits":"Obituaries","memo":"Memoriams","obitsSingular":"Obituary","memoSingular":"Memoriam","births":"Births","anniversaries":"Anniversaries","graduations":"Graduations","home":"Home","submitMoment":"Submit a Moment","directory":"Service Directory","contactus":"Contact Us","signin":"Sign In","username":"Username","password":"Password","register":"Register","forgotPass":"Forgot Password","submit":"Submit","welcome":"Welcome","account":"Account","signOut":"Sign-out","signUp":"Sign Up","selectNewspaperRegion":"Select a Newspaper","expanding":"We are expanding","VIEW":"VIEW","signInToSite":"Sign-in to your account","signInUsername":"Username","signInPass":"Password","signInButton":"Sign-In","signInForgotPass":"Forgot your username or password","signInResendActivation":"Resend my activation email","mustSignIn":"You must sign-in to continue. Please use the sign-in box above to sign-in","mustSignInShort":"You must sign-in to continue.","signedOut":"You have Signed Out successfully.","EmailAccountNotVerified":"Email account hasn't been verified. Check your email for the Verification email.","ErrorTryAgainLater":"Error, please try again later","CheckYourUsernamePassword":"Please check your username and password and try again","IncorrectUsernamePassword":"Incorrect Username / Password Combination","PleaseFillAllFields":"Please make sure that all the fields are filled out and try again","EmailNotFound":"Email address not found. Please create a new account","YourPasswordEmail":"Your password has been emailed","signUpMissingUser":"Missing Username","signUpMissingPass":"Missing Password","signUpIncorrectPassLen":"Incorrect Password character length, must be at least 6 characters long","signUpIncorrectRePassLen":"Incorrect Re-enter Password character length, must be at least 6 characters long","signUpPassDontMatch":"Password and confirm password does not match","signUpInvalidEmail":"Please enter a valid e-mail address.","signUpEmailDontMatch":"Email and Confirm Email does not match.","signUpAgreeToTerms":"You must agree to our Terms of Service","signUpWordVerficationMissing":"Missing Word Verification","signUpWordVerficationDontMatch":"Word Verification Code did not match.","signUpUserExists":"has already been taken - please try another.","signUpEmailExists":"already has a registered account.","signUpRetrievePass":"Retrieve password","signUpError":"An error occured.","signUpReqInfo":"REQUIRED INFORMATION","signUpUsername":"Username","signUpPass":"Choose a Password","signUpPassLen":"Should be at least 6 characters long","signUpConfirmPass":"Confirm Password","signUpEmail":"Email","signUpConfirmEmail":"Confirm Email","signUpReceive":"I would like to receive promotions and newsletters","signUpOptInfo":"OPTIONAL INFORMATION","signUpFname":"First Name","signUpLname":"Last Name","signUpTel":"Telephone","ext":"ext","signUpTelFormat":"Format: 705-555-1234","signUpMobile":"Mobile","signUpMobileFormat":"Format: 705-555-1234","signUpAddr1":"Address 1","signUpAddr2":"Address 2","signUpCityTown":"City/Town","signUpProvince":"Province","signUpPostalCode":"Postal Code","signUpCountry":"Country","resendText1":"Forgot your password?","resendText2":"Enter the email you registered when you set up your accountbelow to receive your password by email.","resendEmailAddress":"Email Address","resendSend":"Send","msgTitleSponsorship":"Sponsorship Completed!","msgSponsorship":"You have sponsored the obituary","sponsoredFollowing":"You have sponsored the following Obituaries","sponsored":"Sponsored","ends":"Ends","actions":"Actions","noObitsSponsored":"No obituaries sponsored.","msgTitleSignUp":"yourlifemoments.ca Member Sign-Up","msgSignUp":"Please check your email account to complete the sign-up process by verifying your email.","msgEmailVerify":"Please check your new email account to verify the email change.","msgPassChange":"Please check your email account to verify the password change.","msgPersonalInfo":"Your personal information is updated.","msgTitleDirectory":"yourlifemoments.ca Directory","msgDirectory":"Your information has been saved.  You will be contacted once it has been verified.","msgTitleError":"Application Error","msgError":"An unexpected error occured, please try again later.","emailUsedErr":"The email you selected is already used by someone else.","confirmEmailErr":"Confirm email did not match.","sbmtPageTitle":"Submit a life moment","sbmtOnlineOnly":"Submissions will be displayed ONLINE ONLY.","sbmtDesc":"Place a Life Moment online at a cost of $29.95 CAD. Friends and family from around the world will be able to connect to share memories, send condolences and post special photos in a monitored and secure environment.","noText":"Text is required","sbmtFname":"First Name","sbmtMname":"Middle Name/Initial","sbmtLname":"Last Name","sbmtSex":"Sex","sbmtSexMale":"Male","sbmtSexFemale":"Female","sbmtDOB":"Date of Birth","sbmtDOP":"Date of Passing","sbmtCityTown":"City, Province","sbmtPhoto":"Photo","sbmtViewPhoto":"View Current Photo","sbmtType":"Type","sbmtTypeObit":"Obituary","sbmtTypeMemo":"Memoriam","sbmtText":"Text","sbmtTextMaxLen":"Maximum of 1000 Characters","sbmtCharities":"Charities","charities":"Charities","sbmtCharityDesc":"Link a charity of your choice - select  Other  to define your own.","sbmtCharityName":"Charity Name","sbmtCharityWebsite":"Charity Website Url","sbmtWordVerify":"Word Verification","sbmtWordVerifyType":"Type the characters you see below","sbmtAgree":"I agree to the","sbmtTerms":"Terms of Service","sbmtAcknowledge":"I acknowledge that this submission will be displayed online only and will not be sent to the publication for print.","sbmtSubmit":"Submit","sbmtOptional":"Optional","sbmtMissingFname":"Missing First Name","sbmtMissingLname":"Missing Last Name","sbmtSpecifySex":"Must specify the deceased's sex","sbmtMissingBirthDate":"Missing Birth Date","sbmtIncorrectDateFormatBirth":"Incorrect Date Format for Date of Birth","sbmtMissingPassingDate":"Missing Date of Passing","sbmtncorrectDateFormatPassing":"Incorrect Date Format for Passing Date, must be MM/DD/YYYY","sbmtMissingCity":"Missing City","sbmtValidCity":"Please enter a valid City","sbmtOnlyJPEG":"You can only upload .JPG files","sbmtSpecifyType":"Must specify the type, obituary or memoriam.","sbmtInfoCharLength":"Memorial Info must be 1000 chracters or less","sbmtMissingWordVerify":"Missing Word Verification","sbmtAgreeTerms":"Must agree to terms","sbmtAknowledge":"Must acknowledge that this obituary submission will be displayed online only and will not be sent to the publication for print.","sbmtVerifyFail":"Verify Code did not match, please try again.","sbmtSave":"Save Changes","sbmtCancel":"Cancel","sbmtProceedPay":"Proceed to Payment","sbmtTimeLeftToEdit":"Please review and save this Obituary.","Keywords":"Keywords","makeKeywords":"Generate Keywords","review":"Review","support":"Support","cuName":"Your Name","cuEmail":"Your Email","cuPhone":"Your Phone","cuSubject":"Subject","cuOptional":"optional","cuMessage":"Your Message","cuSendMsg":"Send Message","cuEnterName":"Must enter your name!","cuEnterEmail":"Must enter your email!","cuValidEmail":"Must enter a valid email!","cuEnterMessage":"Must enter your message!","keywordsFail":"Must enter at least 2 keywords, comma separated!!","featherText":"This listing contains Condolence(s) and/or Candle(s)","tooMany":"Your search has found more than 200 results. Changing the sort criteria may display different results. To reduce this number please be more specific in your search.","srchArchiveSearch":"Archive Search","srchPast90Days":"Past 90 Days","srchPageTitle":"Search","srchKeywordsLen":"Keyword must be at least 2 characters long","srchSelectSource":"Must select a source!","srchThanks":"Thank you for purchasing an archives subscription that gives you full access to all listings in the database.","srchSubExpiresOn":"Your subscription will expire on","srchYouMay":"You may","srchExtendSub":"extend your subscription","srchAnyTime":"at any time","srchSubExpiredOn":"Your subscription expired on","srchRenew":"Click here to renew your subscription.","srchKeyWord":"Keywords","srchPubDate":"Publication Date","srchBefore":"Before","srchOn":"On","srchAfter":"After","srchSortBy":"Sort By","srchSortByDate":"Date","srchRange":"Range","srchAdvSearch":"Advanced Search","srchSelectPub":"Select a Publication","srchSortByFname":"First Name","srchSortByLname":"Last Name","srchSortByAsc":"Ascending","srchSortByDesc":"Descending","srchType":"Moment Type","srchTypeAll":"All","srchObitsOnly":"Obituaries Only","srchMemoOnly":"Memoriams Only","srchSource":"Source","srchSourceAll":"All Cities","srchSelectedSources":"Selected Sources","srchSearch":"Search","srchOlder":"Looking for an Obituary older than 90 days?","srchOlderCondition":"Does not apply to sponsored listings, which are always available","allCities":"All Cities","srchSorry":"Sorry","srchThereIsNo":"There are no","srchListingsUnder":"listings under","srchPleaseSeeListOfCities":"Please see a list of cities below that contains listings","expireSubscription":"Your subscription to the archives will expire on","subscriptionExpiredOn":"Your subscription expired on","extendSubscription1":"You can","extendSubscription2":"extend your subscription","extendSubscription3":"at any time.","continueSubscription":"To continue your access to the archives, you must","continueSubscription2":"renew your subscription.","unlimitedSubscription":"You have purchased an unlimited subscription to the archive services.","subscriptionNotPurchased":"You have not purchased a subscription to the archive service.","subscriptionInfo1":"For more information about the archive services,","subscriptionInfo2":"click here","SearchTermYeildedZeroResults":"Your search term has yielded zero results.","forToday":"for Today","noResultFound":"Sorry, no results found","results":"Results","candleSaved":"Your Memory Candle has been submitted. It will be posted after being reviewed.","missingCandleInfo":"Missing Candle Info","willBeNotfiedWhenUpdated":"You will now be notified when this page is updated.","willNoLOngerNotified":"You will no longer be notified of when this page is updated.","tellAFriend":"Your friends have been notified.","memoryCandles":"Memory Candles","lightMemoryCandle":"Light a Memory Candle","max150Chars":"maximum 150 characters","close":"Close","ErrorSubmittingCandle":"fThere was an error submiting your Memory Candle. Please try again.","FollowingErrorsOccured":"Following errors occured. Please try again.","PleaseEnterMessage":"Please enter your message.","PleaseEnterName":"Please enter your name","YouEntered":"You entered","characters":"characters","LimitYourMessage":"Please limit your message to 150 characters or submit it is as a condolence.","YourNameCannotExceed50Chars":"Your name cannot exceed 50 characters","PresentedBy":"Presented By","ObituaryExceeded90Days":"This Obituary has exceeded the 90 day viewing period","ToViewThisListing":"To view this listing, either","ExtendBySponsoring":"Extend the ad by sponsoring it","SubscribeToArchiveServices":"Subscribe to the Archive Service","cdMoreCondolence":"More Condolences","cdLessCondolence":"Less Condolences","cdEmptyBoxMsg":"Send your thoughts by posting a condolence.","Condolences":"Condolences","AddCondolence":"Add Condolence","expireSubscription":"Your subscription to the archives will expire on","subscriptionExpiredOn":"Your subscription expired on","extendSubscription1":"You can","extendSubscription2":"extend your subscription","extendSubscription3":"at any time.","continueSubscription":"To continue your access to the archives, you must","continueSubscription2":"renew your subscription.","unlimitedSubscription":"You have purchased an unlimited subscription to the archive services.","subscriptionNotPurchased":"You have not purchased a subscription to the archive service.","subscriptionInfo1":"For more information about the archive services,","subscriptionInfo2":"click here","cdEmptyBoxMsg":"Send your thoughts by posting a condolence.","past7Days":"Past 7 Days","MissingCountry":"Missing Country","MissingCondolencesText":"Missing Message Text","CondolencesText500Chars":"Message Text must be 500 characters or less","MissingProvince":"Missing Province","MissingCity":"Missing City","MissingTitle":"Missing Title","MissingEmail":"Missing Email","ProvideValidEmail":"Please provide a valid email address","MissingRelation":"Missing Relation","MissingName":"Missing Name","MissingVerificationCode":"Missing Verification Code","VerificationCodeNotMatch":"Verification Code didn't Match","MustAgreeToTOS":"Must agree to the Terms of Service","SavedSuccessfully":"Saved Successfully - Submissions will be added upon approval!","PreviewingCondolences":"Previewing Condolences","IfSatisfied":"If you are satisfied with your entry please click the","SubmitCondolences":"Submit Condolences","ButtonBelow":"button below","ThanksForSubmission":"Thank you for your submission.","ThanksForSubmissionText1":"All submissions must be approved by the Your Life Moments staff before they can be displayed on the web site.","ThanksForSubmissionText2":"Please be patient, all submissions are usually posted within a 24 hr period during the work week; Monday to Friday.","MakeCorrections":"Make Corrections","ReturnObituaryHome":"Return to the Obituary Home","ErrorInfoCannotBeRetreived":"Error, information cannot be retrieved.","SorryObituaryNoLongerExists":"Sorry, the requested Obituary no longer exists.","TheObituaryFor":"The Obituary for","Ended":"ended","Step1":"Step 1","Step2":"Step 2","Step3":"Step 3","CompleteReqFieldsToSubmit":"Complete the required fields to submit your","ComplementaryCondolence":"COMPLEMENTARY condolence","MessageTitle":"Message Title","MessageText":"Message Text","photo":"Photo","Upload6Photos":"Upload up to 6 photos for","PhotosMustBe":"Photos must be","JPEGFormat":"JPEG format (ie. must end with a   jpg   extension.)","LessTan450KB":"Less than 450 KB","UploadPhotoMessage1":"To upload photos, click the browse button and select the photo you wish to upload. To upload multiple photos, continue this process, until you have up to 6 photos listed.","Confirmation":"Confirmation","DisplayEmailToPublic":"Display my email to public","PreviewFirst":"Preview First","delete":"Delete","photoGallery":"Photo Gallery","phMorePhotos":"More Photographs","phAddPhotos":"Add Photos","phNoPhotosMsg":"Add a Photo Memory.","UploadedFilesNotJPEG":"of the uploaded file(s) are not JPEGs and have not been saved","SubmitPhotos":"Submit Photos","YouHave20Min":"You have 20 minutes to make any desired changes.","MissingInvalidEmail":"Email is missing or in wrong format","AtleastOnePhotoReq":"Atleast one Photo is required to continue","MustBeJPEG":"must be a JPEG","VerificationErrors":"Verification Errors","Continue":"Continue","publicViewing":"This Public Viewing Expires","permPublicViewing1":"This Public Viewing","permPublicViewing2":"is permanently available","SponsorForYear":"Sponsor for a Year","SponsorForever":"Sponsor Forever","SponsorObitBenifit1Text":"Sponsoring an Obituary extends the life of the posting. People will be able to add condolences, photos and light candles for longer then the regular 30 days.","BackToPrevious":"Back to Previous Page","WouldYouLikeToSponsor":"Would you like to sponsor the Obituary?","SponsorObitBenifits2Text":"Sponsoring an Obituary extends the life of the posting. People will be able to add condolences, photos and light candles for longer then the regular 90 days.","SponsorBenefits":"Sponsor Benefits","SponsorBenefitsHide":"Hide","SponsorshipOptions":"Sponsorship Options","SponsorshipOption1":"Sponsored Obit - Yearly $19.99","SponsorshipOption2":"Sponsored Obit - Permanent $39.99","ThanksForSubmittingObit":"Thank you for submitting the Obituary, it must be reviewed by our staff before it is added to the website.","EditObituary":"Edit Obituary","BackToHomePage":"Back to Home page","YeIWillSponsorIt":"YES, I'll sponsor it!","featuresTitle":"Features","eulogy":"Eulogy","lifeTimes":"Life & Times","MemorialService":"Memorial Service","specialDate":"Special Date Reminders","addToClipboard":"Add to Clipboard","PrintObit":"Print this Obituary","bookmark":"Bookmark","bookmarkClick":"Obituary for:","tellFriends":"Tell Your Friends","SharedMoment":"Someone Shared a Life Moment With You","ShareMomentEmail":"Hello,[br][br]You are receiving this message because a friend or family member thought you would be interested in seeing the following life moment: [br][br]http://[url]/sitepages/obituary.asp?oId=[oid][br][br]Regards, [br][br]Your Life Moments Team","tellFriendsMessage":"To inform friends about this death notice, enter their email address:","receiveUpdates":"Receive Updates","receiveUpdatesMessage":"To be notified of any updates to this obituary, enter your email address:","unsubscribe":"Unsubscribe","Keywords":"Keywords","makeKeywords":"Generate Keywords","keywordsFail":"Must enter at least 2 keywords, comma separated!","YourContentWillBePublishedOnApproval":"Your content will be published upon approval.","LastUpdated":"Last Updated","NoContent":"No content","SponsoredBy":"Sponsored by","for":"for","AnErrorOccuredPleaseTryAgain":"An error occured, Please try again later","PleaseSignInToUseThisFeature":"Please Sign In to use this feature.","FeatureOnlyForSponsoredObits":"This feature is only available for sponsored Obituaries.","YouWillBeNotifiedOfDates":"You will be notified of the dates you selected.","WeWillWendYouEmail":"Select the special dates which you would like to be reminded of. We will send you an email a week before the special date as a reminder.","ThereAre":"There are","YouMust":"You must","ToUseThisFeature":"to use this feature","SubscribeMeToSelectedReminders":"Subscribe Me to the Selected Reminders","Reminder":"Reminder","ObituaryHasBeenAddedToYour":"This obituary has been added to your","ObituaryAlreadyAddedToYour":"This obituary is already in your","reset":"Reset","funerals":"Funerals","funeralhomes":"Funeral Homes","accountTitle":"Account Tools","accountHome":"Account Home","accountSettings":"Account Settings","cityNotifier":"City Notifier","clipboard":"Clipboard","purchaseHistory":"Purchase History","unfinishedInvoices":"Unfinished Invoices","directoryManager":"Directory Manager","selectNewspaperRegions":"Select which Newspaper Region(s) you would like to be notified of as updates become available.","toRemoveClipboardItem":"To remove an item from your clipboard, select the checkbox next to the name, and press the Delete button. The checkbox next to the Name header will select all items in your clipboard on this page.","viewListing":"To view this listing, you will either have to subscribe to the archive service or sponsor the listing.","olderClipboardListing":"The listing is older than 90 days and is not sponsored.","obitCurrentlyViewable":"Obituary is currently viewable.","all":"All","purchases":"Purchases","sponsoredObits":"Sponsored Obits","sponsored":"Sponsored","purchased":"Purchased","photos":"Photos","archive":"Archive","purchases":"Purchases","online":"Online","submissions":"Submissions","directory":"Directory","purchaseDate":"Purchase Date","description":"Description","noUnfinishedSales":"There are no unfinished sales.","completeInvoices":"Purchases are for complete invoices, not individual items within an invoice. Multiple transactions can be on one invoice.","total":"Total","purchase":"Purchase","item":"Item","price":"Price","qty":"Qty.","amount":"Amount","remove":"Remove","cityListUpdated":"City notification list updated","itemRemovedFromClipboard":"Selected item(s) have been removed from clipboard","privacy":"Privacy","terms":"Terms & Conditions","top":"Top","addobit":"Submit a Moment","archives":"Archives","ccstuff":"CC Stuff","confirm_page":"Confirm","confirmcondolence_page":"Confirm Condolence","confirmdirapp_page":"Condirm Directory","confirmemail_page":"Confirm Email","confirmgallery_page":"Confirm Gallery","confirmobit_page":"Confirm Obituary","confirmSubscription_page":"Sign Up - Sign In","directory_page":"Service Directory","enlarge_page":"Enlarge","message_page":"Message","mycart_page":"My Cart","oaddcondolence_page":"Add Condolence","oeditcondolence_page":"Edit Condolence","oaddgallery_page":"Add Photo","obituary_page":"Obituaries","ocandles_page":"Candles","ocontent_page":"Content","oeditcontent_page":"Edit Content","ogallery_page":"Gallery","ospecialdates_page":"Special Dates","printer_friendle_obituary_page":"Printer Friendly Version","pu_msg_page":"PU Message","resend_activation_page":"Resend Activation","resendpw_page":"Resend Password","results_page":"Search Results","search_page":"Search","sponsorinfo_page":"Sponsor Information","sponsorobit_page":"Sponsor Obituary","clipboard_page":"Clipboard","details_page":"Details","purchaseHistory_page":"Purchase History","settings_page":"Settings","myCart_page":"My Cart","Account_page":"Account","mail_edit_page":"Edit Mail","confirm_email":"Confirm Email","confirm_pass":"Confirm Password","done":"Executor Application Completed","executor":"Executor Application","requestExecutor":"Request Executor Status","youAreExec":"You are the Executor of the following Obituaries:","ChangeCity":"Change Default City","find":"Find","jan":"January","feb":"February","mar":"March","apr":"April","may":"May","june":"June","july":"July","aug":"August","sept":"September","oct":"October","nov":"November","dec":"December","sbmtPageTitle":"Submit a life moment","sbmtOnlineOnly":"Submissions will be displayed ONLINE ONLY.","noText":"Text is required","sun":"Sun","mon":"Mon","tue":"Tue","wed":"Wed","thu":"Thur","fri":"Fri","sat":"Sat","prevlink":"Go to the previous month","nextlink":"Go to the next month","phNoPhotosMsg":"Add a Photo Memory.","prevlink":"Go to the previous month","nextlink":"Go to the next month","candlesMsg":"Post a Message and Light a Candle.","confirm_email":"Confirm Email","confirm_pass":"Confirm Password","done":"Executor Application Completed","executor":"Executor Application","executor_done_msg1":"You have successfully applied to be the executor on this obituary.","executor_done_msg2":"You will be notified at the following email address if you have been named executor:","expandingText":"YourLifeMoments.ca will expand and evolve throughout 2009. Check back regularly as we add new content including: Births, Anniversaries, Graduations and more. Have comments? You can contact us","exapandingHere":"here","comingSoon":"Coming Soon","clickHere":"click here","comingSoonText1":"We will be expanding our obituaries site into","comingSoonText2":"a full service milestones site throughout 2009.","comingSoonText3":"Keep checking back","comingSoonText4":"In the meantime","comingSoonText5":"to see milestone ads on Classified Extra","dirTitle":"Directory Application","dirListMsg":"Fill out the quick and easy form below to have your business listed on the YourLifeMoments.ca directory.","dirMonthMsg":"List my business for a month","dirYearMsg":"List my business for a year","dirRegionMsg1":"There is an additional","dirRegionMsg2":"charge for each region selected beyond the first.","dirBusType":"Business Type","dirListLngth":"Listing Length","dirRegion":"Region","dirBusName":"Business Name","dirMainName":"Main Contact Name","dirMainTitle":"Main Contact Title","dirCity":"City","dirPhone":"Phone","dirPager":"Pager","dirFax":"Fax","dirURL":"URL","dirOtherInfo":"Other Info / Description","dirMaxChar":"Maximum of 500 Characters","dirReqFields":"required fields","dirSubmitApp":"Submit Application","shops":"Shops","flowers":"Flowers","listBusiness":"List your business in this directory","dir":"","noEntries":"No Entries found for","displaying":"Displaying","email":"Email","msgTitleSignUp":"yourlifemoments.ca Member Sign-Up","msgSignUp":"Please check your email account to complete the sign-up process by verifying your email.","msgEmailVerify":"Please check your new email account to verify the email change.","msgPassChange":"Please check your email account to verify the password change.","msgPersonalInfo":"Your personal information is updated.","msgTitleError":"Application Error","msgError":"An unexpected error occured, please try again later.","emailUsedErr":"The email you selected is already used by someone else.","confirmEmailErr":"Confirm email did not match.","oeditcondolence_page":"Edit Condolence","cookieDisabled":"It appears that cookies are not enabled in your browser. Please enable cookies.","viewObit":"View Obituary","ylmArchive":"Your Life Moments Archives","AllowsToSearch90DaysOlder":"This service allows you to search Moments older than 90 days.","Benefits":"Benefits","Benefit1":"Search Obituaries from across Ontario","Benefit2":"View over 80,000 records dating to 2002","Benefit3":"View all posted messages (condolonces, candles)","HowDoesItWork":"How does it work?","HowDoesItWork1a":"You must be","HowDoesItWork1b":"logged","HowDoesItWork1c":"into your account to use this feature","HowDoesItWork2":"Go to the search section, and it will be active.","YouHaveNotPurchasedSubs":"You have not purchased a subscription to the archive service.","ItsThatSimple":"It is that simple.","YouHavePurchasedUnlimitedSubs":"You have purchased an unlimited subscription to the archive services.","HowToSubscribe":"How to subscribe?","TermsAndConditions1":"See","TermsAndConditions2":"terms and conditions","ChooseAPlan":"Choose a plan below and follow the steps.","Plan1":"30 Day Subscription","Plan2":"12 Month Subscription","Plan3a":"Unlimited Access","Plan3b":"Never Expires","IAcknowledge2002":"I acknowledge that the archives only go back to 2002.","YouMustAcknowledge2002":"You must acknowledge that the archives only go back to 2002.","obitadmin":"Obituaries Admin","adminNewCandles":"New Candles","adminNewCondolences":"New Condolences","adminNewPhotos":"New Photos","adminNewContent":"New Content","adminNewObits24hr":"New Obits from past 24 hours","adminInactiveObits":"Inactive Obits","adminActiveObits":"Active Obits","adminRemovedObits":"Removed Obits","adminAddObit":"Add an Obit","adminExecutor":"Executors","adminExecutorReqs":"Executor Requests","adminOtherContent":"Other Content","adminModifyBanner":"Modify Banners","adminDirectoryShops":"Directory/Shops","adminEntries":"Entries","adminModifyCategories":"Modify Categories","adminStaticPages":"Static Pages","adminRecreateCityList":"Recreate Current City Obits List","adminRecreateDirectory":"Recreate Directory Pages","adminImportObits":"Import New Obits","adminImportObitsByDate":"Import Obits by Date","adminUsers":"Users","adminSearch":"Search","adminReports":"Reports","adminTransReport":"Transaction Report","adminCandles":"Candles","adminCondolences":"Condolences","adminObits":"Obits","adminDirectoryItems":"Directory Items","adminNoNewCandles":"No New Candles","adminCandle":"Candle","adminNoCandleSelected":"No Candles selected!","adminCandlesDeleted":"Selected Candles have been deleted.","adminCandlesActivated":"Selected Candles have been activated.","adminCandleDeleteConfirm":"Are you sure you wish to delete the selected Candles?","adminSetCandleActive":"Set Candles to Active","adminRemoveCandles":"Remove Candles","adminCondolence":"Condolence","adminNoNewCondolences":"No New Condolences","adminRemoveCondolences":"Remove Condolences","adminSetCondolencesActive":"Set Condolences to Active","adminCondolencesActivated":"Selected Condolences have been activated.","adminCondolencesDeleted":"Selected Condolences have been deleted.","adminNoCondolenceSelected":"No Condolences selected!","adminCondolencesDeleteConfirm":"Are you sure you wish to delete the selected Condolences?","adminThumnail":"Thumbnail","adminSetPhotoActive":"Set Photos to Active","adminPhotoDeleteConfirm":"Are you sure you wish to delete the selected Photos?","adminNoNewPhotos":"No New Photos","adminNoPhotosSelected":"No Photos selected!","adminPhotosActivated":"Selected Photos have been activated.","adminPhotosDeleted":"Selected Photos have been deleted.","adminRemovePhotos":"Remove Photos","adminContent":"Content","adminNoNewContent":"No New Content","adminRemoveContent":"Remove Content","adminSetContentActive":"Set Content to Active","adminContentActivated":"Selected Content have been activated.","adminContentDeleted":"Selected Content have been deleted.","adminNoContentSelected":"No Content selected!","adminContentDeleteConfirm":"Are you sure you wish to delete the selected Content?","adminExec":"Exec","adminNobody":"Nobody","adminSetExecutor":"Set Executor","adminSelectExecutor":"Select an executor","adminExecutorDontExists":"Executor doesn't exist","admnExecutorApplicants":"Executor Applicants","adminMemorialInfo":"Memorial Info","adminFirst300":"(First 300 bytes)","adminHideUnhide":"Hide/Unhide","adminErrorNoID":"Error: No ID","adminBannerInfoSaved":"Banner info has been saved.","adminBannerEntries":"Banner Entries","adminAddBanner":"Add a Banner","adminNoNewspaper":"No Newspapers","adminNoBannerType":"No Banners Types","adminNewspaper":"Newspaper","adminZone":"Zone","admin150Chars":"(150 Characters or less)","adminBanner":"Banner","adminNote":"Note","adminSize":"Size","adminExistingEntries":"Existing Entries","adminNoCategories":"No Categories","adminFromPast7Days":"From past 7 days","adminAddNewBusiness":"Add a New Business","adminCategory":"Category","adminBusinessName":"Business Name","adminOwnerUsername":"Owners Username","adminUsernameMustExists":"Username must exist first before you proceed","adminDirectoryEntries":"Directory Entries","adminCategoryAdded":"Category has been added.","adminCategoryChanged":"Category has been changed.","adminCategoryDeleted":"Category has been deleted.","adminDirectoryCategories":"Directory Categories","adminAddCategory":"Add a Category","adminCategoryName":"Category Name","adminEditCategory":"Edit Category","adminExistingCategories":"Existing Categories","adminDirectoryAdded":"Directory entry has been added.","adminCurrentPhotoThumnail":"Current Photo Thumbnail","adminReplacePhoto":"Replace Photo","adminRemovePhoto":"Remove Photo","adminUploadPhoto":"Upload","adminMainContactName":"Main Contact Name","adminMainContactTitle":"Main Contact Title","adminOtherInfo":"Other Info","adminAddEditor":"Add Editor","adminCurrentEditor":"Current Editor","adminRemoveEditor":"Remove Editor","adminOnlineSubmissions":"Online Submissions","adminCharLimit500":"The character limit is 500 characters for fields ( Other Info & Note )","adminSponsors":"Sponsors","adminSetActive":"Set to Active","adminSetInactive":"Set to Inactive","adminRemovedFromSite":"Removed from the site","adminContentUpdated":"Content updated","adminMissingObitID":"Missing Obit ID!","adminReportCriteria":"Report Criteria","adminShowDailyBreakDowns":"Show daily break downs","adminViewReports":"View Reports","adminRemovedCandles":"Removed Candles","adminRemovedCondolences":"Removed Condolences","adminItemDesc":"Item Description","adminPurchaseDate":"Purchase Date","adminQty":"Qty","adminPriceWithTax":"Price w/tax","adminSearchByName":"Search By name","adminFirstName":"First Name","adminLastName":"Last Name","adminEdit":"Edit","adminTransactions":"Transactions","adminNewsletter":"Newsletter","adminUserLevel":"User Level","adminModules":"Modules","adminListOfModules":"The following is a list of modules this user will be given access to.","adminCorrespondsToMainMenu":"Each corresponds to a main menu header on the left","adminApplicationName":"Application Name","adminMember":"Member","adminApplicationID":"Application ID","adminSubscribeUserTo":"Subscribe user to","adminSuperAdmin":"Super Admin","adminAdmin":"Admin","adminModerator":"Moderator","adminDailyAdmin":"Daily Admin","adminGeneralUser":"General User","adminViewUserTransactions":"View User's Transactions","adminNoRowsReturned":"No rows returned","adminMustSelectNewspaper":"You must select a newspaper for this user","adminMustSelectModule":"You must select at least one module for this user","adminSubmitNew":"Submit NEW","adminNew":"New","adminObitMemo":"Obituary / Memoriam","adminFillInfoBelow":"Fill out the fields below.  All items with a '<span >&raquo;</span>' are required. Once you have completed entering all your ads you must","adminPublishNew":"Publish NEW Obits","adminMiddleName":"Middle Name/Initial","adminSex":"Sex","adminDOB":"Date of Birth","adminDOP":"Date of Passing","adminText":"Text","adminFemale":"Female","adminMale":"Male","adminMax8000Chars":"Maximum of 8000 Characters","adminCharities":"Charities","adminCharityName":"Charity Name","adminCharityWebsite":"Charity Website Url","adminLinkACharity":"Link a charity of your choice - select &quot;Other&quot; to define your own.","adminOptional":"Optional","adminControlPanel":"Control Panel","adminExisting":"Existing","adminListingSaved":"Listing saved!","adminClickHere":"Click here","adminToEditIt":"to edit it","adminSelectObitsStatusUpdated":"Selected Obits Status have been updated.","adminDeceased":"Deceased","adminSubmitted":"Submitted","adminNoItemForPat3Months":"No items for the past 3 months","adminPermissionDenied":"Permission denied.","adminAdsHighlightedInYellow":"Ads hilighted in yellow are Online Submissions","adminObitDoesNotExists":"Obit doesn't exist!","adminByWhom":"By Whom","adminMissingObitID":"Missing Obit ID","adminNo":"No","adminShow":"Show","adminRemoved":"Removed","adminTributes":"Tribute","adminTitle":"Title","adminLength":"Length","adminRemovedFromSite":"Removed from Site","adminMissingContentID":"Missing content ID","adminCreated":"Created","adminPublished":"Published","adminSelectObitActive":"Selected Obits have been set to Active","adminSelectObitInactvie":"Selected Obits have been set to Inactive.","adminSelectedObitRemoved":"Selected Obits have been Removed.","adminLast6Months":"(Last 6 Months)","adminMustEnterLastFirstName":"Must enter a Last or First Name","adminNoObitSelected":"No Obits selected!","adminLocation":"Location","adminDeathDate":"Death Date","adminGallery":"Gallery","adminCurrentPhoto":"Current Photo","adminUploaded":"Uploaded","adminBack":"Back","adminPhotoType":"Photo Type","adminCaption":"Caption","adminImagePath":"Image Path","adminPhotoDoesNotExist":"Photo doesn't exist","adminMissingPhotoID":"Missing Photo Id","adminSponsorName":"Sponsor Name","adminSponsorEndDate":"Sponsor End Date","adminNoSponsors":"No sponsors","adminNamesFlaggedAsRemoved":"Names have been flagged as 'removed'.","adminWhatDateToImportFor":"What date did you want to import ads for?","adminImport":"Import","adminBackToAdminPanel":"Back to Admin Panel","adminSignOut":"Sign out","adminUsername":"Username","adminPassword":"Password","adminSubmit":"Submit","adminSignedOut":"You have signed out successfully!","adminNoAccess":"You do not have access to log in.","adminUsernamePasswordIncorrect":"Username and Password does not match!","adminSignedInAs":"Signed in as","adminSearch":"Search","adminObitID":"Obit ID","adminBy":"By","adminPostedBy":"Posted by","adminPostedOn":"Posted on","adminSelect":"Select","adminAll":"All","adminNone":"None","adminOf":"of","adminTo":"to","adminUserID":"User ID","adminType":"Type","adminInfo":"Info","adminName":"Name","adminRelation":"Relation","adminStatus":"Status","adminActive":"Active","adminInactive":"Inactive","adminUnpaid":"Unpaid","adminBanned":"Banned","adminCancel":"Cancel","adminSave":"Save","adminAddress":"Address","adminCity":"City","adminProvince":"Province","adminCountry":"Country","adminPostal":"Postal","adminPhone":"Phone","adminMobile":"Mobile","adminPager":"Pager","adminFax":"Fax","adminEmail":"Email","adminURL":"URL","adminChangesSaved":"Changes have been saved.","adminCloseWindow":"Close Window","adminDate":"Date","adminFrom":"From","adminTo":"To","adminSuite":"Suite","adminUpdate":"Update","adminAdd":"Add","adminSelectNewspaper":"Select a Newspaper","adminRemove":"Remove","adminYes":"Yes","adminNo":"No","adminDeleteSelected":"Delete Selected","adminSelectedEntryDeleted":"Selected entries have been deleted.","adminNewest":"Newest","adminNewer":"Newer","adminOlder":"Older","adminOldest":"Oldest","advSearch":"Advanced Search","selACity1":"By selecting a city below, you are choosing what city you want to view listings from each time you visit YourLifeMoments.ca. This city will be saved for the next time you visit.","dirWeb":"Web","USettingMessage":"You may change any of your user details here.","USettingNotice":"If you are changing your password, you will need to verify the change through your currently registered email account. If you are changing your email, you will need to verify the change through  the new email address you have entered.","USettingUserDetails":"User Details","UDetails":"User Details","UCurrentEmail":"Current Email","UChangeEmail":"Change Email","UConfirmNewemail":"Confirm New Email","UNotice":"(leave blank for no change)","UPersonalInformation":"Personal Information","UAddress":"Address","UUserOptions":"User Options","UShowBusinessName":"Show Business Name","UShowtitle":"Show Title","UShowUrName":"Show Your Name","UShowAddress":"Show Address","UShowEmail":"Show Email","UShowPhone":"Show Phone","UShowMobile":"Show Mobile","UShowFax":"Show Fax","UShowPager":"Show Pager","ULikePromotions":"I would like to receive promotions and newsletters","UApplyChanges":"Apply Changes","UpassChange":"Password Change","visitWeb":"Visit website","thanks":"Thank you for submission.","thanks2":"We will contact you within 2 business days via email to answer any questions or concerns you may have.","unsubscribeObit":"You must enter an email address in order to unsubscribe.","omniObits":"obits","omniChooseCity":"set default","omniSubmitMoment":"submitmoment","omniForgotPassword":"forgotpassword","omniDirectory":"directory","omniTerms":"terms","omniDirBusiness":"directorybusiness","noCandles":"No Candles","noCondolences":"No Condolences","pastDays":"the past 7 days."};
function getLabel(name) {return lang[name]; }/*
 * jQuery JavaScript Library v1.3.2
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
 * Revision: 6246
 */
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
/*
 * Sizzle CSS Selector Engine - v0.9.3
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
/**
* @author Remy Sharp
* @url http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/
*/

(function ($) {

$.fn.hint = function (blurClass) {
    
  return this.each(function () {
    // get jQuery version of 'this'
    var $input = $(this),
    
    // capture the rest of the variable to allow for reuse
      title = $input.attr('title'),
      $form = $(this.form),
      $win = $(window); 

    function remove() {
      if ($input.val() === title ) {
        $input.val('');//.removeClass(blurClass);
      }
    }

    // only apply logic if the element has the attribute
    if (title) { 
      // on blur, set value to title attr if text is blank
      $input.blur(function () {
        if (this.value === '') {
          $input.val(title);
        }
      }).focus(remove).blur(); // now change all inputs to title
      
      // clear the pre-defined text when form is submitted
      //$form.submit(remove);
      $win.unload(remove); // handles Firefox's autocomplete
    }
  });
};

})(jQuery);
function
popUp(a, b, c) {
	var d = "status=1,menubar=0,width=" + b + ",height=" + c;
	window.open(a, "obits", d);
}

function
toggleDiv (a) {
	var b = document.getElementById(a);
	var c = (b.style.display == "block")?1:0;
	
	if (c == 1) 
		b.style.display = "none";
	else
		b.style.display = "block";
		
}


function 
w(){
	var a=null;
	try{
		a=new ActiveXObject("Msxml2.XMLHTTP")
	}catch(c){
		try{
			a=new ActiveXObject("Microsoft.XMLHTTP")
		}catch(b){
			a=null
		}
	}
	if(!a&&typeof XMLHttpRequest!="undefined"){
		a=new XMLHttpRequest()
	}
	return a
}

function 
sendx(a){
	var c=w();
	if(c){
		c.open("GET",a,true);
		c.send(null)
	}
}

//Initialize header related javascript
$(document).ready(function() {	
	$("#signInUser").hint();
	$("#signInPass").hint();
	$("#keyword").hint();	
});
/***********************************************
 Fool-Proof Date Input Script with DHTML Calendar
 by Jason Moon - calendar@moonscript.com
 ************************************************/

// Customizable variables
var DefaultDateFormat = 'MM/DD/YYYY'; // If no date format is supplied, this will be used instead
var HideWait = 3; // Number of seconds before the calendar will disappear
var Y2kPivotPoint = 76; // 2-digit years before this point will be created in the 21st century
var UnselectedMonthText = ''; // Text to display in the 1st month list item when the date isn't required
var FontSize = 11; // In pixels
var FontFamily = 'helvetica';
var CellWidth = 18;
var CellHeight = 18;
var ImageURL = '/images/calendar.jpg';
var NextURL = '/images/next.gif';
var PrevURL = '/images/prev.gif';
var CalBGColor = 'white';
var TopRowBGColor = '#A3D39C';
var DayBGColor = '#A3D39C';

// Global variables
var ZCounter = 100;
var Today = new Date();
var WeekDays = new Array('S','M','T','W','T','F','S');
var MonthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var MonthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

// Write out the stylesheet definition for the calendar
with (document) {
   writeln('<style>');
   writeln('td.calendarDateInput {letter-spacing:normal;line-height:normal;font-family:' + FontFamily + ',Sans-Serif;font-size:' + FontSize + 'px;}');
   writeln('select.calendarDateInput {letter-spacing:.06em;font-family:Verdana,Sans-Serif;font-size:11px;}');
   writeln('input.calendarDateInput {letter-spacing:.06em;font-family:Verdana,Sans-Serif;font-size:11px;}');
   writeln('</style>');
}

// Only allows certain keys to be used in the date field
function YearDigitsOnly(e) {
   var KeyCode = (e.keyCode) ? e.keyCode : e.which;
   return ((KeyCode == 8) // backspace
        || (KeyCode == 9) // tab
        || (KeyCode == 37) // left arrow
        || (KeyCode == 39) // right arrow
        || (KeyCode == 46) // delete
        || ((KeyCode > 47) && (KeyCode < 58)) // 0 - 9
   );
}

// Gets the absolute pixel position of the supplied element
function GetTagPixels(StartTag, Direction) {
   var PixelAmt = (Direction == 'LEFT') ? StartTag.offsetLeft : StartTag.offsetTop;
   while ((StartTag.tagName != 'BODY') && (StartTag.tagName != 'HTML')) {
      StartTag = StartTag.offsetParent;
      PixelAmt += (Direction == 'LEFT') ? StartTag.offsetLeft : StartTag.offsetTop;
   }
   return PixelAmt;
}

// Is the specified select-list behind the calendar?
function BehindCal(SelectList, CalLeftX, CalRightX, CalTopY, CalBottomY, ListTopY) {
   var ListLeftX = GetTagPixels(SelectList, 'LEFT');
   var ListRightX = ListLeftX + SelectList.offsetWidth;
   var ListBottomY = ListTopY + SelectList.offsetHeight;
   return (((ListTopY < CalBottomY) && (ListBottomY > CalTopY)) && ((ListLeftX < CalRightX) && (ListRightX > CalLeftX)));
}

// For IE, hides any select-lists that are behind the calendar
function FixSelectLists(Over) {
   if (navigator.appName == 'Microsoft Internet Explorer') {
      var CalDiv = this.getCalendar();
      var CalLeftX = CalDiv.offsetLeft;
      var CalRightX = CalLeftX + CalDiv.offsetWidth;
      var CalTopY = CalDiv.offsetTop;
      var CalBottomY = CalTopY + (CellHeight * 9);
      var FoundCalInput = false;
      formLoop :
      for (var j=this.formNumber;j<document.forms.length;j++) {
         for (var i=0;i<document.forms[j].elements.length;i++) {
            if (typeof document.forms[j].elements[i].type == 'string') {
               if ((document.forms[j].elements[i].type == 'hidden') && (document.forms[j].elements[i].name == this.hiddenFieldName)) {
                  FoundCalInput = true;
                  i += 3; // 3 elements between the 1st hidden field and the last year input field
               }
               if (FoundCalInput) {
                  if (document.forms[j].elements[i].type.substr(0,6) == 'select') {
                     ListTopY = GetTagPixels(document.forms[j].elements[i], 'TOP');
                     if (ListTopY < CalBottomY) {
                        if (BehindCal(document.forms[j].elements[i], CalLeftX, CalRightX, CalTopY, CalBottomY, ListTopY)) {
                           document.forms[j].elements[i].style.visibility = (Over) ? 'hidden' : 'visible';
                        }
                     }
                     else break formLoop;
                  }
               }
            }
         }
      }
   }
}

// Displays a message in the status bar when hovering over the calendar days
function DayCellHover(Cell, Over, Color, HoveredDay) {
   Cell.style.backgroundColor = (Over) ? DayBGColor : Color;
   if (Over) {
      if ((this.yearValue == Today.getFullYear()) && (this.monthIndex == Today.getMonth()) && (HoveredDay == Today.getDate())) self.status = 'Click to select today';
      else {
         var Suffix = HoveredDay.toString();
         switch (Suffix.substr(Suffix.length - 1, 1)) {
            case '1' : Suffix += (HoveredDay == 11) ? 'th' : 'st'; break;
            case '2' : Suffix += (HoveredDay == 12) ? 'th' : 'nd'; break;
            case '3' : Suffix += (HoveredDay == 13) ? 'th' : 'rd'; break;
            default : Suffix += 'th'; break;
         }
         self.status = 'Click to select ' + this.monthName + ' ' + Suffix;
      }
   }
   else self.status = '';
   return true;
}

// Sets the form elements after a day has been picked from the calendar
function PickDisplayDay(ClickedDay) {
   this.show();
   var MonthList = this.getMonthList();
   var DayList = this.getDayList();
   var YearField = this.getYearField();
   FixDayList(DayList, GetDayCount(this.displayed.yearValue, this.displayed.monthIndex));
   // Select the month and day in the lists
   for (var i=0;i<MonthList.length;i++) {
      if (MonthList.options[i].value == this.displayed.monthIndex) MonthList.options[i].selected = true;
   }
   for (var j=1;j<=DayList.length;j++) {
      if (j == ClickedDay) DayList.options[j-1].selected = true;
   }
   this.setPicked(this.displayed.yearValue, this.displayed.monthIndex, ClickedDay);
   // Change the year, if necessary
   YearField.value = this.picked.yearPad;
   YearField.defaultValue = YearField.value;
}

// Builds the HTML for the calendar days
function BuildCalendarDays() {
   var Rows = 5;
   if (((this.displayed.dayCount == 31) && (this.displayed.firstDay > 4)) || ((this.displayed.dayCount == 30) && (this.displayed.firstDay == 6))) Rows = 6;
   else if ((this.displayed.dayCount == 28) && (this.displayed.firstDay == 0)) Rows = 4;
   var HTML = '<table width="' + (CellWidth * 7) + '" cellspacing="0" cellpadding="1" style="cursor:default">';
   for (var j=0;j<Rows;j++) {
      HTML += '<tr>';
      for (var i=1;i<=7;i++) {
         Day = (j * 7) + (i - this.displayed.firstDay);
         if ((Day >= 1) && (Day <= this.displayed.dayCount)) {
            if ((this.displayed.yearValue == this.picked.yearValue) && (this.displayed.monthIndex == this.picked.monthIndex) && (Day == this.picked.day)) {
               TextStyle = 'color:white;font-weight:bold;'
               BackColor = DayBGColor;
            }
            else {
               TextStyle = 'color:black;'
               BackColor = CalBGColor;
            }
            if ((this.displayed.yearValue == Today.getFullYear()) && (this.displayed.monthIndex == Today.getMonth()) && (Day == Today.getDate())) TextStyle += 'border:1px solid darkred;padding:0px;';
            HTML += '<td align="center" class="calendarDateInput" style="cursor:default;height:' + CellHeight + ';width:' + CellWidth + ';' + TextStyle + ';background-color:' + BackColor + '" onClick="' + this.objName + '.pickDay(' + Day + ')" onMouseOver="return ' + this.objName + '.displayed.dayHover(this,true,\'' + BackColor + '\',' + Day + ')" onMouseOut="return ' + this.objName + '.displayed.dayHover(this,false,\'' + BackColor + '\')">' + Day + '</td>';
         }
         else HTML += '<td class="calendarDateInput" style="height:' + CellHeight + '">&nbsp;</td>';
      }
      HTML += '</tr>';
   }
   return HTML += '</table>';
}

// Determines which century to use (20th or 21st) when dealing with 2-digit years
function GetGoodYear(YearDigits) {
   if (YearDigits.length == 4) return YearDigits;
   else {
      var Millennium = (YearDigits < Y2kPivotPoint) ? 2000 : 1900;
      return Millennium + parseInt(YearDigits,10);
   }
}

// Returns the number of days in a month (handles leap-years)
function GetDayCount(SomeYear, SomeMonth) {
   return ((SomeMonth == 1) && ((SomeYear % 400 == 0) || ((SomeYear % 4 == 0) && (SomeYear % 100 != 0)))) ? 29 : MonthDays[SomeMonth];
}

// Highlights the buttons
function VirtualButton(Cell, ButtonDown) {
   if (ButtonDown) {
      Cell.style.borderLeft = 'buttonshadow 1px solid';
      Cell.style.borderTop = 'buttonshadow 1px solid';
      Cell.style.borderBottom = 'buttonhighlight 1px solid';
      Cell.style.borderRight = 'buttonhighlight 1px solid';
   }
   else {
      Cell.style.borderLeft = 'buttonhighlight 1px solid';
      Cell.style.borderTop = 'buttonhighlight 1px solid';
      Cell.style.borderBottom = 'buttonshadow 1px solid';
      Cell.style.borderRight = 'buttonshadow 1px solid';
   }
}

// Mouse-over for the previous/next month buttons
function NeighborHover(Cell, Over, DateObj) {
   if (Over) {
      VirtualButton(Cell, false);
      self.status = 'Click to view ' + DateObj.fullName;
   }
   else {
      Cell.style.border = 'buttonface 1px solid';
      self.status = '';
   }
   return true;
}

// Adds/removes days from the day list, depending on the month/year
function FixDayList(DayList, NewDays) {
   var DayPick = DayList.selectedIndex + 1;
   if (NewDays != DayList.length) {
      var OldSize = DayList.length;
      for (var k=Math.min(NewDays,OldSize);k<Math.max(NewDays,OldSize);k++) {
         (k >= NewDays) ? DayList.options[NewDays] = null : DayList.options[k] = new Option(k+1, k+1);
      }
      DayPick = Math.min(DayPick, NewDays);
      DayList.options[DayPick-1].selected = true;
   }
   return DayPick;
}

// Resets the year to its previous valid value when something invalid is entered
function FixYearInput(YearField) {
   var YearRE = new RegExp('\\d{' + YearField.defaultValue.length + '}');
   if (!YearRE.test(YearField.value)) YearField.value = YearField.defaultValue;
}

// Displays a message in the status bar when hovering over the calendar icon
function CalIconHover(Over) {
   var Message = (this.isShowing()) ? 'hide' : 'show';
   self.status = (Over) ? 'Click to ' + Message + ' the calendar' : '';
   return true;
}

// Starts the timer over from scratch
function CalTimerReset() {
   eval('clearTimeout(' + this.timerID + ')');
   eval(this.timerID + '=setTimeout(\'' + this.objName + '.show()\',' + (HideWait * 1000) + ')');
}

// The timer for the calendar
function DoTimer(CancelTimer) {
   if (CancelTimer) eval('clearTimeout(' + this.timerID + ')');
   else {
      eval(this.timerID + '=null');
      this.resetTimer();
   }
}

// Show or hide the calendar
function ShowCalendar() {
   if (this.isShowing()) {
      var StopTimer = true;
      this.getCalendar().style.zIndex = --ZCounter;
      this.getCalendar().style.visibility = 'hidden';
      this.fixSelects(false);
   }
   else {
      var StopTimer = false;
      this.fixSelects(true);
      this.getCalendar().style.zIndex = ++ZCounter;
      this.getCalendar().style.visibility = 'visible';
   }
   this.handleTimer(StopTimer);
   self.status = '';
}

// Hides the input elements when the "blank" month is selected
function SetElementStatus(Hide) {
   this.getDayList().style.visibility = (Hide) ? 'hidden' : 'visible';
   this.getYearField().style.visibility = (Hide) ? 'hidden' : 'visible';
   this.getCalendarLink().style.visibility = (Hide) ? 'hidden' : 'visible';
}

// Sets the date, based on the month selected
function CheckMonthChange(MonthList) {
   var DayList = this.getDayList();
   if (MonthList.options[MonthList.selectedIndex].value == '') {
      DayList.selectedIndex = 0;
      this.hideElements(true);
      this.setHidden('');
   }
   else {
      this.hideElements(false);
      if (this.isShowing()) {
         this.resetTimer(); // Gives the user more time to view the calendar with the newly-selected month
         this.getCalendar().style.zIndex = ++ZCounter; // Make sure this calendar is on top of any other calendars
      }
      var DayPick = FixDayList(DayList, GetDayCount(this.picked.yearValue, MonthList.options[MonthList.selectedIndex].value));
      this.setPicked(this.picked.yearValue, MonthList.options[MonthList.selectedIndex].value, DayPick);
   }
}

// Sets the date, based on the day selected
function CheckDayChange(DayList) {
   if (this.isShowing()) this.show();
   this.setPicked(this.picked.yearValue, this.picked.monthIndex, DayList.selectedIndex+1);
}

// Changes the date when a valid year has been entered
function CheckYearInput(YearField) {
   if ((YearField.value.length == YearField.defaultValue.length) && (YearField.defaultValue != YearField.value)) {
      if (this.isShowing()) {
         this.resetTimer(); // Gives the user more time to view the calendar with the newly-entered year
         this.getCalendar().style.zIndex = ++ZCounter; // Make sure this calendar is on top of any other calendars
      }
      var NewYear = GetGoodYear(YearField.value);
      var MonthList = this.getMonthList();
      var NewDay = FixDayList(this.getDayList(), GetDayCount(NewYear, this.picked.monthIndex));
      this.setPicked(NewYear, this.picked.monthIndex, NewDay);
      YearField.defaultValue = YearField.value;
   }
}

// Holds characteristics about a date
function dateObject() {
   if (Function.call) { // Used when 'call' method of the Function object is supported
      var ParentObject = this;
      var ArgumentStart = 0;
   }
   else { // Used with 'call' method of the Function object is NOT supported
      var ParentObject = arguments[0];
      var ArgumentStart = 1;
   }
   ParentObject.date = (arguments.length == (ArgumentStart+1)) ? new Date(arguments[ArgumentStart+0]) : new Date(arguments[ArgumentStart+0], arguments[ArgumentStart+1], arguments[ArgumentStart+2]);
   ParentObject.yearValue = ParentObject.date.getFullYear();
   ParentObject.monthIndex = ParentObject.date.getMonth();
   ParentObject.monthName = MonthNames[ParentObject.monthIndex];
   ParentObject.fullName = ParentObject.monthName + ' ' + ParentObject.yearValue;
   ParentObject.day = ParentObject.date.getDate();
   ParentObject.dayCount = GetDayCount(ParentObject.yearValue, ParentObject.monthIndex);
   var FirstDate = new Date(ParentObject.yearValue, ParentObject.monthIndex, 1);
   ParentObject.firstDay = FirstDate.getDay();
}

// Keeps track of the date that goes into the hidden field
function storedMonthObject(DateFormat, DateYear, DateMonth, DateDay) {
   (Function.call) ? dateObject.call(this, DateYear, DateMonth, DateDay) : dateObject(this, DateYear, DateMonth, DateDay);
   this.yearPad = this.yearValue.toString();
   this.monthPad = (this.monthIndex < 9) ? '0' + String(this.monthIndex + 1) : this.monthIndex + 1;
   this.dayPad = (this.day < 10) ? '0' + this.day.toString() : this.day;
   this.monthShort = this.monthName.substr(0,3).toUpperCase();
   // Formats the year with 2 digits instead of 4
   if (DateFormat.indexOf('YYYY') == -1) this.yearPad = this.yearPad.substr(2);
   // Define the date-part delimiter
   if (DateFormat.indexOf('/') >= 0) var Delimiter = '/';
   else if (DateFormat.indexOf('-') >= 0) var Delimiter = '-';
   else var Delimiter = '';
   // Determine the order of the months and days
   if (/DD?.?((MON)|(MM?M?))/.test(DateFormat)) {
      this.formatted = this.dayPad + Delimiter;
      this.formatted += (RegExp.$1.length == 3) ? this.monthShort : this.monthPad;
   }
   else if (/((MON)|(MM?M?))?.?DD?/.test(DateFormat)) {
      this.formatted = (RegExp.$1.length == 3) ? this.monthShort : this.monthPad;
      this.formatted += Delimiter + this.dayPad;
   }
   // Either prepend or append the year to the formatted date
   this.formatted = (DateFormat.substr(0,2) == 'YY') ? this.yearPad + Delimiter + this.formatted : this.formatted + Delimiter + this.yearPad;
}

// Object for the current displayed month
function displayMonthObject(ParentObject, DateYear, DateMonth, DateDay) {
   (Function.call) ? dateObject.call(this, DateYear, DateMonth, DateDay) : dateObject(this, DateYear, DateMonth, DateDay);
   this.displayID = ParentObject.hiddenFieldName + '_Current_ID';
   this.getDisplay = new Function('return document.getElementById(this.displayID)');
   this.dayHover = DayCellHover;
   this.goCurrent = new Function(ParentObject.objName + '.getCalendar().style.zIndex=++ZCounter;' + ParentObject.objName + '.setDisplayed(Today.getFullYear(),Today.getMonth());');
   if (ParentObject.formNumber >= 0) this.getDisplay().innerHTML = this.fullName;
}

// Object for the previous/next buttons
function neighborMonthObject(ParentObject, IDText, DateMS) {
   (Function.call) ? dateObject.call(this, DateMS) : dateObject(this, DateMS);
   this.buttonID = ParentObject.hiddenFieldName + '_' + IDText + '_ID';
   this.hover = new Function('C','O','NeighborHover(C,O,this)');
   this.getButton = new Function('return document.getElementById(this.buttonID)');
   this.go = new Function(ParentObject.objName + '.getCalendar().style.zIndex=++ZCounter;' + ParentObject.objName + '.setDisplayed(this.yearValue,this.monthIndex);');
   if (ParentObject.formNumber >= 0) this.getButton().title = this.monthName;
}

// Sets the currently-displayed month object
function SetDisplayedMonth(DispYear, DispMonth) {
   this.displayed = new displayMonthObject(this, DispYear, DispMonth, 1);
   // Creates the previous and next month objects
   this.previous = new neighborMonthObject(this, 'Previous', this.displayed.date.getTime() - 86400000);
   this.next = new neighborMonthObject(this, 'Next', this.displayed.date.getTime() + (86400000 * (this.displayed.dayCount + 1)));
   // Creates the HTML for the calendar
   if (this.formNumber >= 0) this.getDayTable().innerHTML = this.buildCalendar();
}

// Sets the current selected date
function SetPickedMonth(PickedYear, PickedMonth, PickedDay) {
   this.picked = new storedMonthObject(this.format, PickedYear, PickedMonth, PickedDay);
   this.setHidden(this.picked.formatted);
   this.setDisplayed(PickedYear, PickedMonth);
}

// The calendar object
function calendarObject(DateName, DateFormat, DefaultDate) {

   /* Properties */
   this.hiddenFieldName = DateName;
   this.monthListID = DateName + '_Month_ID';
   this.dayListID = DateName + '_Day_ID';
   this.yearFieldID = DateName + '_Year_ID';
   this.monthDisplayID = DateName + '_Current_ID';
   this.calendarID = DateName + '_ID';
   this.dayTableID = DateName + '_DayTable_ID';
   this.calendarLinkID = this.calendarID + '_Link';
   this.timerID = this.calendarID + '_Timer';
   this.objName = DateName + '_Object';
   this.format = DateFormat;
   this.formNumber = -1;
   this.picked = null;
   this.displayed = null;
   this.previous = null;
   this.next = null;

   /* Methods */
   this.setPicked = SetPickedMonth;
   this.setDisplayed = SetDisplayedMonth;
   this.checkYear = CheckYearInput;
   this.fixYear = FixYearInput;
   this.changeMonth = CheckMonthChange;
   this.changeDay = CheckDayChange;
   this.resetTimer = CalTimerReset;
   this.hideElements = SetElementStatus;
   this.show = ShowCalendar;
   this.handleTimer = DoTimer;
   this.iconHover = CalIconHover;
   this.buildCalendar = BuildCalendarDays;
   this.pickDay = PickDisplayDay;
   this.fixSelects = FixSelectLists;
   this.setHidden = new Function('D','if (this.formNumber >= 0) this.getHiddenField().value=D');
   // Returns a reference to these elements
   this.getHiddenField = new Function('return document.forms[this.formNumber].elements[this.hiddenFieldName]');
   this.getMonthList = new Function('return document.getElementById(this.monthListID)');
   this.getDayList = new Function('return document.getElementById(this.dayListID)');
   this.getYearField = new Function('return document.getElementById(this.yearFieldID)');
   this.getCalendar = new Function('return document.getElementById(this.calendarID)');
   this.getDayTable = new Function('return document.getElementById(this.dayTableID)');
   this.getCalendarLink = new Function('return document.getElementById(this.calendarLinkID)');
   this.getMonthDisplay = new Function('return document.getElementById(this.monthDisplayID)');
   this.isShowing = new Function('return !(this.getCalendar().style.visibility != \'visible\')');

   /* Constructor */
   // Functions used only by the constructor
   function getMonthIndex(MonthAbbr) { // Returns the index (0-11) of the supplied month abbreviation
      for (var MonPos=0;MonPos<MonthNames.length;MonPos++) {
         if (MonthNames[MonPos].substr(0,3).toUpperCase() == MonthAbbr.toUpperCase()) break;
      }
      return MonPos;
   }
   function SetGoodDate(CalObj, Notify) { // Notifies the user about their bad default date, and sets the current system date
      CalObj.setPicked(Today.getFullYear(), Today.getMonth(), Today.getDate());
      if (Notify) alert('WARNING: The supplied date is not in valid \'' + DateFormat + '\' format: ' + DefaultDate + '.\nTherefore, the current system date will be used instead: ' + CalObj.picked.formatted);
   }
   // Main part of the constructor
   if (DefaultDate != '') {
      if ((this.format == 'YYYYMMDD') && (/^(\d{4})(\d{2})(\d{2})$/.test(DefaultDate))) this.setPicked(RegExp.$1, parseInt(RegExp.$2,10)-1, RegExp.$3);
      else {
         // Get the year
         if ((this.format.substr(0,2) == 'YY') && (/^(\d{2,4})(-|\/)/.test(DefaultDate))) { // Year is at the beginning
            var YearPart = GetGoodYear(RegExp.$1);
            // Determine the order of the months and days
            if (/(-|\/)(\w{1,3})(-|\/)(\w{1,3})$/.test(DefaultDate)) {
               var MidPart = RegExp.$2;
               var EndPart = RegExp.$4;
               if (/D$/.test(this.format)) { // Ends with days
                  var DayPart = EndPart;
                  var MonthPart = MidPart;
               }
               else {
                  var DayPart = MidPart;
                  var MonthPart = EndPart;
               }
               MonthPart = (/\d{1,2}/i.test(MonthPart)) ? parseInt(MonthPart,10)-1 : getMonthIndex(MonthPart);
               this.setPicked(YearPart, MonthPart, DayPart);
            }
            else SetGoodDate(this, true);
         }
         else if (/(-|\/)(\d{2,4})$/.test(DefaultDate)) { // Year is at the end
            var YearPart = GetGoodYear(RegExp.$2);
            // Determine the order of the months and days
            if (/^(\w{1,3})(-|\/)(\w{1,3})(-|\/)/.test(DefaultDate)) {
               if (this.format.substr(0,1) == 'D') { // Starts with days
                  var DayPart = RegExp.$1;
                  var MonthPart = RegExp.$3;
               }
               else { // Starts with months
                  var MonthPart = RegExp.$1;
                  var DayPart = RegExp.$3;
               }
               MonthPart = (/\d{1,2}/i.test(MonthPart)) ? parseInt(MonthPart,10)-1 : getMonthIndex(MonthPart);
               this.setPicked(YearPart, MonthPart, DayPart);
            }
            else SetGoodDate(this, true);
         }
         else SetGoodDate(this, true);
      }
   }
}

// Main function that creates the form elements
function DateInput(DateName, Required, DateFormat, DefaultDate) {
   if (arguments.length == 0) document.writeln('<span style="color:red;font-size:' + FontSize + 'px;font-family:' + FontFamily + ';">ERROR: Missing required parameter in call to \'DateInput\': [name of hidden date field].</span>');
   else {
      // Handle DateFormat
      if (arguments.length < 3) { // The format wasn't passed in, so use default
         DateFormat = DefaultDateFormat;
         if (arguments.length < 2) Required = false;
      }
      else if (/^(Y{2,4}(-|\/)?)?((MON)|(MM?M?)|(DD?))(-|\/)?((MON)|(MM?M?)|(DD?))((-|\/)Y{2,4})?$/i.test(DateFormat)) DateFormat = DateFormat.toUpperCase();
      else { // Passed-in DateFormat was invalid, use default format instead
         var AlertMessage = 'WARNING: The supplied date format for the \'' + DateName + '\' field is not valid: ' + DateFormat + '\nTherefore, the default date format will be used instead: ' + DefaultDateFormat;
         DateFormat = DefaultDateFormat;
         if (arguments.length == 4) { // DefaultDate was passed in with an invalid date format
            var CurrentDate = new storedMonthObject(DateFormat, Today.getFullYear(), Today.getMonth(), Today.getDate());
            AlertMessage += '\n\nThe supplied date (' + DefaultDate + ') cannot be interpreted with the invalid format.\nTherefore, the current system date will be used instead: ' + CurrentDate.formatted;
            DefaultDate = CurrentDate.formatted;
         }
         alert(AlertMessage);
      }
      // Define the current date if it wasn't set already
      if (!CurrentDate) var CurrentDate = new storedMonthObject(DateFormat, Today.getFullYear(), Today.getMonth(), Today.getDate());
      // Handle DefaultDate
      if (arguments.length < 4) { // The date wasn't passed in
         DefaultDate = (Required) ? CurrentDate.formatted : ''; // If required, use today's date
      }
      // Creates the calendar object!
      eval(DateName + '_Object=new calendarObject(\'' + DateName + '\',\'' + DateFormat + '\',\'' + DefaultDate + '\')');
      // Determine initial viewable state of day, year, and calendar icon
      if ((Required) || (arguments.length == 4)) {
         var InitialStatus = '';
         var InitialDate = eval(DateName + '_Object.picked.formatted');
      }
      else {
         var InitialStatus = ' style="visibility:hidden"';
         var InitialDate = '';
         eval(DateName + '_Object.setPicked(' + Today.getFullYear() + ',' + Today.getMonth() + ',' + Today.getDate() + ')');
      }
      // Create the form elements
      with (document) {
         writeln('<input type="hidden" name="' + DateName + '" value="' + InitialDate + '">');
         // Find this form number
         for (var f=0;f<forms.length;f++) {
            for (var e=0;e<forms[f].elements.length;e++) {
               if (typeof forms[f].elements[e].type == 'string') {
                  if ((forms[f].elements[e].type == 'hidden') && (forms[f].elements[e].name == DateName)) {
                     eval(DateName + '_Object.formNumber='+f);
                     break;
                  }
               }
            }
         }
         writeln('<table cellpadding="0" cellspacing="2"><tr>' + String.fromCharCode(13) + '<td valign="middle">');
         writeln('<select class="calendarDateInput" id="' + DateName + '_Month_ID" onChange="' + DateName + '_Object.changeMonth(this)">');
         if (!Required) {
            var NoneSelected = (DefaultDate == '') ? ' selected' : '';
            writeln('<option value=""' + NoneSelected + '>' + UnselectedMonthText + '</option>');
         }
         for (var i=0;i<12;i++) {
            MonthSelected = ((DefaultDate != '') && (eval(DateName + '_Object.picked.monthIndex') == i)) ? ' selected' : '';
            writeln('<option value="' + i + '"' + MonthSelected + '>' + MonthNames[i].substr(0,3) + '</option>');
         }
         writeln('</select>' + String.fromCharCode(13) + '</td>' + String.fromCharCode(13) + '<td valign="middle">');
         writeln('<select' + InitialStatus + ' class="calendarDateInput" id="' + DateName + '_Day_ID" onChange="' + DateName + '_Object.changeDay(this)">');
         for (var j=1;j<=eval(DateName + '_Object.picked.dayCount');j++) {
            DaySelected = ((DefaultDate != '') && (eval(DateName + '_Object.picked.day') == j)) ? ' selected' : '';
            writeln('<option' + DaySelected + '>' + j + '</option>');
         }
         writeln('</select>' + String.fromCharCode(13) + '</td>' + String.fromCharCode(13) + '<td valign="middle">');
         writeln('<input' + InitialStatus + ' class="calendarDateInput" type="text" id="' + DateName + '_Year_ID" size="' + eval(DateName + '_Object.picked.yearPad.length') + '" maxlength="' + eval(DateName + '_Object.picked.yearPad.length') + '" title="Year" value="' + eval(DateName + '_Object.picked.yearPad') + '" onKeyPress="return YearDigitsOnly(window.event)" onKeyUp="' + DateName + '_Object.checkYear(this)" onBlur="' + DateName + '_Object.fixYear(this)">');
         write('<td valign="middle">' + String.fromCharCode(13) + '<a' + InitialStatus + ' id="' + DateName + '_ID_Link" href="javascript:' + DateName + '_Object.show()" onMouseOver="return ' + DateName + '_Object.iconHover(true)" onMouseOut="return ' + DateName + '_Object.iconHover(false)"><img src="' + ImageURL + '" align="baseline" title="Calendar" border="0"></a>&nbsp;');
         writeln('<span id="' + DateName + '_ID" style="position:absolute;visibility:hidden;width:' + (CellWidth * 7) + 'px;background-color:' + CalBGColor + ';border:1px solid dimgray;" onMouseOver="' + DateName + '_Object.handleTimer(true)" onMouseOut="' + DateName + '_Object.handleTimer(false)">');
         writeln('<table width="' + (CellWidth * 7) + '" cellspacing="0" cellpadding="1">' + String.fromCharCode(13) + '<tr style="background-color:' + TopRowBGColor + ';">');
         writeln('<td id="' + DateName + '_Previous_ID" style="cursor:default" align="center" class="calendarDateInput" style="height:' + CellHeight + '" onClick="' + DateName + '_Object.previous.go()" onMouseDown="VirtualButton(this,true)" onMouseUp="VirtualButton(this,false)" onMouseOver="return ' + DateName + '_Object.previous.hover(this,true)" onMouseOut="return ' + DateName + '_Object.previous.hover(this,false)" title="' + eval(DateName + '_Object.previous.monthName') + '"><img src="' + PrevURL + '"></td>');
         writeln('<td id="' + DateName + '_Current_ID" style="cursor:pointer" align="center" class="calendarDateInput" style="height:' + CellHeight + '" colspan="5" onClick="' + DateName + '_Object.displayed.goCurrent()" onMouseOver="self.status=\'Click to view ' + CurrentDate.fullName + '\';return true;" onMouseOut="self.status=\'\';return true;" title="Show Current Month">' + eval(DateName + '_Object.displayed.fullName') + '</td>');
         writeln('<td id="' + DateName + '_Next_ID" style="cursor:default" align="center" class="calendarDateInput" style="height:' + CellHeight + '" onClick="' + DateName + '_Object.next.go()" onMouseDown="VirtualButton(this,true)" onMouseUp="VirtualButton(this,false)" onMouseOver="return ' + DateName + '_Object.next.hover(this,true)" onMouseOut="return ' + DateName + '_Object.next.hover(this,false)" title="' + eval(DateName + '_Object.next.monthName') + '"><img src="' + NextURL + '"></td></tr>' + String.fromCharCode(13) + '<tr>');
         for (var w=0;w<7;w++) writeln('<td width="' + CellWidth + '" align="center" class="calendarDateInput" style="height:' + CellHeight + ';width:' + CellWidth + ';font-weight:bold;border-top:1px solid dimgray;border-bottom:1px solid dimgray;">' + WeekDays[w] + '</td>');
         writeln('</tr>' + String.fromCharCode(13) + '</table>' + String.fromCharCode(13) + '<span id="' + DateName + '_DayTable_ID">' + eval(DateName + '_Object.buildCalendar()') + '</span>' + String.fromCharCode(13) + '</span>' + String.fromCharCode(13) + '</td>' + String.fromCharCode(13) + '</tr>' + String.fromCharCode(13) + '</table>');
      }
   }
}
function 
bookmarksite(title, url) {
	if (document.all)
		window.external.AddFavorite(url, title);
	else if (window.sidebar)
		window.sidebar.addPanel(title, url, "")
}

function
submitActn(a, b) {
	var sFormActn = "/sitepages/account/";
	
	if (b == "pg") {
		sFormActn += "obits/photos.asp";
		
	} else if (b == "ob") {
		sFormActn += "obits/obits.asp";

		
	} else if (b == "co") {
		sFormActn += "obits/condolences.asp";
	
	} else if (b == "ca") {
		sFormActn += "obits/candles.asp";
	
	} else if ((b == "eg") || (b == "lg") || (b == "ls") || (b == "tl") || (b == "ms")){
		sFormActn += "obits/content.asp";
	
	} else if (b == "mm") {
		sFormActn += "obits/memorium.asp";
	
	} else if (b == "ch") {
		sFormActn += "obits/charity.asp";

	} else if (b == "sd") {
		sFormActn += "obits/specialdates.asp";
	
	}
	
	if (b == "can") {
		window.location.href = "/sitepages/account/";
	} else if (b == "vo") {
		window.location.href = "/sitepages/obituary.asp?oId=" + a.oId.value;

	} else {
		if (sFormActn != "/sitepages/account/") {
			a.action = sFormActn;
			a.submit();
		}
	}
}

/*
 * jQuery UI 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI
 */
;jQuery.ui || (function($) {

var _remove = $.fn.remove,
	isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);

//Helper functions and ui object
$.ui = {
	version: "1.7.2",

	// $.ui.plugin is deprecated.  Use the proxy pattern instead.
	plugin: {
		add: function(module, option, set) {
			var proto = $.ui[module].prototype;
			for(var i in set) {
				proto.plugins[i] = proto.plugins[i] || [];
				proto.plugins[i].push([option, set[i]]);
			}
		},
		call: function(instance, name, args) {
			var set = instance.plugins[name];
			if(!set || !instance.element[0].parentNode) { return; }

			for (var i = 0; i < set.length; i++) {
				if (instance.options[set[i][0]]) {
					set[i][1].apply(instance.element, args);
				}
			}
		}
	},

	contains: function(a, b) {
		return document.compareDocumentPosition
			? a.compareDocumentPosition(b) & 16
			: a !== b && a.contains(b);
	},

	hasScroll: function(el, a) {

		//If overflow is hidden, the element might have extra content, but the user wants to hide it
		if ($(el).css('overflow') == 'hidden') { return false; }

		var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
			has = false;

		if (el[scroll] > 0) { return true; }

		// TODO: determine which cases actually cause this to happen
		// if the element doesn't have the scroll set, see if it's possible to
		// set the scroll
		el[scroll] = 1;
		has = (el[scroll] > 0);
		el[scroll] = 0;
		return has;
	},

	isOverAxis: function(x, reference, size) {
		//Determines when x coordinate is over "b" element axis
		return (x > reference) && (x < (reference + size));
	},

	isOver: function(y, x, top, left, height, width) {
		//Determines when x, y coordinates is over "b" element
		return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
	},

	keyCode: {
		BACKSPACE: 8,
		CAPS_LOCK: 20,
		COMMA: 188,
		CONTROL: 17,
		DELETE: 46,
		DOWN: 40,
		END: 35,
		ENTER: 13,
		ESCAPE: 27,
		HOME: 36,
		INSERT: 45,
		LEFT: 37,
		NUMPAD_ADD: 107,
		NUMPAD_DECIMAL: 110,
		NUMPAD_DIVIDE: 111,
		NUMPAD_ENTER: 108,
		NUMPAD_MULTIPLY: 106,
		NUMPAD_SUBTRACT: 109,
		PAGE_DOWN: 34,
		PAGE_UP: 33,
		PERIOD: 190,
		RIGHT: 39,
		SHIFT: 16,
		SPACE: 32,
		TAB: 9,
		UP: 38
	}
};

// WAI-ARIA normalization
if (isFF2) {
	var attr = $.attr,
		removeAttr = $.fn.removeAttr,
		ariaNS = "http://www.w3.org/2005/07/aaa",
		ariaState = /^aria-/,
		ariaRole = /^wairole:/;

	$.attr = function(elem, name, value) {
		var set = value !== undefined;

		return (name == 'role'
			? (set
				? attr.call(this, elem, name, "wairole:" + value)
				: (attr.apply(this, arguments) || "").replace(ariaRole, ""))
			: (ariaState.test(name)
				? (set
					? elem.setAttributeNS(ariaNS,
						name.replace(ariaState, "aaa:"), value)
					: attr.call(this, elem, name.replace(ariaState, "aaa:")))
				: attr.apply(this, arguments)));
	};

	$.fn.removeAttr = function(name) {
		return (ariaState.test(name)
			? this.each(function() {
				this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));
			}) : removeAttr.call(this, name));
	};
}

//jQuery plugins
$.fn.extend({
	remove: function() {
		// Safari has a native remove event which actually removes DOM elements,
		// so we have to use triggerHandler instead of trigger (#3037).
		$("*", this).add(this).each(function() {
			$(this).triggerHandler("remove");
		});
		return _remove.apply(this, arguments );
	},

	enableSelection: function() {
		return this
			.attr('unselectable', 'off')
			.css('MozUserSelect', '')
			.unbind('selectstart.ui');
	},

	disableSelection: function() {
		return this
			.attr('unselectable', 'on')
			.css('MozUserSelect', 'none')
			.bind('selectstart.ui', function() { return false; });
	},

	scrollParent: function() {
		var scrollParent;
		if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
			scrollParent = this.parents().filter(function() {
				return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
			}).eq(0);
		} else {
			scrollParent = this.parents().filter(function() {
				return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
			}).eq(0);
		}

		return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
	}
});


//Additional selectors
$.extend($.expr[':'], {
	data: function(elem, i, match) {
		return !!$.data(elem, match[3]);
	},

	focusable: function(element) {
		var nodeName = element.nodeName.toLowerCase(),
			tabIndex = $.attr(element, 'tabindex');
		return (/input|select|textarea|button|object/.test(nodeName)
			? !element.disabled
			: 'a' == nodeName || 'area' == nodeName
				? element.href || !isNaN(tabIndex)
				: !isNaN(tabIndex))
			// the element and all of its ancestors must be visible
			// the browser may report that the area is hidden
			&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
	},

	tabbable: function(element) {
		var tabIndex = $.attr(element, 'tabindex');
		return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
	}
});


// $.widget is a factory to create jQuery plugins
// taking some boilerplate code out of the plugin code
function getter(namespace, plugin, method, args) {
	function getMethods(type) {
		var methods = $[namespace][plugin][type] || [];
		return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);
	}

	var methods = getMethods('getter');
	if (args.length == 1 && typeof args[0] == 'string') {
		methods = methods.concat(getMethods('getterSetter'));
	}
	return ($.inArray(method, methods) != -1);
}

$.widget = function(name, prototype) {
	var namespace = name.split(".")[0];
	name = name.split(".")[1];

	// create plugin method
	$.fn[name] = function(options) {
		var isMethodCall = (typeof options == 'string'),
			args = Array.prototype.slice.call(arguments, 1);

		// prevent calls to internal methods
		if (isMethodCall && options.substring(0, 1) == '_') {
			return this;
		}

		// handle getter methods
		if (isMethodCall && getter(namespace, name, options, args)) {
			var instance = $.data(this[0], name);
			return (instance ? instance[options].apply(instance, args)
				: undefined);
		}

		// handle initialization and non-getter methods
		return this.each(function() {
			var instance = $.data(this, name);

			// constructor
			(!instance && !isMethodCall &&
				$.data(this, name, new $[namespace][name](this, options))._init());

			// method call
			(instance && isMethodCall && $.isFunction(instance[options]) &&
				instance[options].apply(instance, args));
		});
	};

	// create widget constructor
	$[namespace] = $[namespace] || {};
	$[namespace][name] = function(element, options) {
		var self = this;

		this.namespace = namespace;
		this.widgetName = name;
		this.widgetEventPrefix = $[namespace][name].eventPrefix || name;
		this.widgetBaseClass = namespace + '-' + name;

		this.options = $.extend({},
			$.widget.defaults,
			$[namespace][name].defaults,
			$.metadata && $.metadata.get(element)[name],
			options);

		this.element = $(element)
			.bind('setData.' + name, function(event, key, value) {
				if (event.target == element) {
					return self._setData(key, value);
				}
			})
			.bind('getData.' + name, function(event, key) {
				if (event.target == element) {
					return self._getData(key);
				}
			})
			.bind('remove', function() {
				return self.destroy();
			});
	};

	// add widget prototype
	$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);

	// TODO: merge getter and getterSetter properties from widget prototype
	// and plugin prototype
	$[namespace][name].getterSetter = 'option';
};

$.widget.prototype = {
	_init: function() {},
	destroy: function() {
		this.element.removeData(this.widgetName)
			.removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')
			.removeAttr('aria-disabled');
	},

	option: function(key, value) {
		var options = key,
			self = this;

		if (typeof key == "string") {
			if (value === undefined) {
				return this._getData(key);
			}
			options = {};
			options[key] = value;
		}

		$.each(options, function(key, value) {
			self._setData(key, value);
		});
	},
	_getData: function(key) {
		return this.options[key];
	},
	_setData: function(key, value) {
		this.options[key] = value;

		if (key == 'disabled') {
			this.element
				[value ? 'addClass' : 'removeClass'](
					this.widgetBaseClass + '-disabled' + ' ' +
					this.namespace + '-state-disabled')
				.attr("aria-disabled", value);
		}
	},

	enable: function() {
		this._setData('disabled', false);
	},
	disable: function() {
		this._setData('disabled', true);
	},

	_trigger: function(type, event, data) {
		var callback = this.options[type],
			eventName = (type == this.widgetEventPrefix
				? type : this.widgetEventPrefix + type);

		event = $.Event(event);
		event.type = eventName;

		// copy original event properties over to the new event
		// this would happen if we could call $.event.fix instead of $.Event
		// but we don't have a way to force an event to be fixed multiple times
		if (event.originalEvent) {
			for (var i = $.event.props.length, prop; i;) {
				prop = $.event.props[--i];
				event[prop] = event.originalEvent[prop];
			}
		}

		this.element.trigger(event, data);

		return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false
			|| event.isDefaultPrevented());
	}
};

$.widget.defaults = {
	disabled: false
};


/** Mouse Interaction Plugin **/

$.ui.mouse = {
	_mouseInit: function() {
		var self = this;

		this.element
			.bind('mousedown.'+this.widgetName, function(event) {
				return self._mouseDown(event);
			})
			.bind('click.'+this.widgetName, function(event) {
				if(self._preventClickEvent) {
					self._preventClickEvent = false;
					event.stopImmediatePropagation();
					return false;
				}
			});

		// Prevent text selection in IE
		if ($.browser.msie) {
			this._mouseUnselectable = this.element.attr('unselectable');
			this.element.attr('unselectable', 'on');
		}

		this.started = false;
	},

	// TODO: make sure destroying one instance of mouse doesn't mess with
	// other instances of mouse
	_mouseDestroy: function() {
		this.element.unbind('.'+this.widgetName);

		// Restore text selection in IE
		($.browser.msie
			&& this.element.attr('unselectable', this._mouseUnselectable));
	},

	_mouseDown: function(event) {
		// don't let more than one widget handle mouseStart
		// TODO: figure out why we have to use originalEvent
		event.originalEvent = event.originalEvent || {};
		if (event.originalEvent.mouseHandled) { return; }

		// we may have missed mouseup (out of window)
		(this._mouseStarted && this._mouseUp(event));

		this._mouseDownEvent = event;

		var self = this,
			btnIsLeft = (event.which == 1),
			elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
			return true;
		}

		this.mouseDelayMet = !this.options.delay;
		if (!this.mouseDelayMet) {
			this._mouseDelayTimer = setTimeout(function() {
				self.mouseDelayMet = true;
			}, this.options.delay);
		}

		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
			this._mouseStarted = (this._mouseStart(event) !== false);
			if (!this._mouseStarted) {
				event.preventDefault();
				return true;
			}
		}

		// these delegates are required to keep context
		this._mouseMoveDelegate = function(event) {
			return self._mouseMove(event);
		};
		this._mouseUpDelegate = function(event) {
			return self._mouseUp(event);
		};
		$(document)
			.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
			.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);

		// preventDefault() is used to prevent the selection of text here -
		// however, in Safari, this causes select boxes not to be selectable
		// anymore, so this fix is needed
		($.browser.safari || event.preventDefault());

		event.originalEvent.mouseHandled = true;
		return true;
	},

	_mouseMove: function(event) {
		// IE mouseup check - mouseup happened when mouse was out of window
		if ($.browser.msie && !event.button) {
			return this._mouseUp(event);
		}

		if (this._mouseStarted) {
			this._mouseDrag(event);
			return event.preventDefault();
		}

		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
			this._mouseStarted =
				(this._mouseStart(this._mouseDownEvent, event) !== false);
			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
		}

		return !this._mouseStarted;
	},

	_mouseUp: function(event) {
		$(document)
			.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
			.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);

		if (this._mouseStarted) {
			this._mouseStarted = false;
			this._preventClickEvent = (event.target == this._mouseDownEvent.target);
			this._mouseStop(event);
		}

		return false;
	},

	_mouseDistanceMet: function(event) {
		return (Math.max(
				Math.abs(this._mouseDownEvent.pageX - event.pageX),
				Math.abs(this._mouseDownEvent.pageY - event.pageY)
			) >= this.options.distance
		);
	},

	_mouseDelayMet: function(event) {
		return this.mouseDelayMet;
	},

	// These are placeholder methods, to be overriden by extending plugin
	_mouseStart: function(event) {},
	_mouseDrag: function(event) {},
	_mouseStop: function(event) {},
	_mouseCapture: function(event) { return true; }
};

$.ui.mouse.defaults = {
	cancel: null,
	distance: 1,
	delay: 0
};

})(jQuery);

/*
 * jQuery UI Datepicker 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Datepicker
 *
 * Depends:
 *	ui.core.js
 */

(function($) { // hide the namespace

$.extend($.ui, { datepicker: { version: "1.7.2" } });

var PROP_NAME = 'datepicker';

/* Date picker manager.
   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
   Settings for (groups of) date pickers are maintained in an instance object,
   allowing multiple different settings on the same page. */

function Datepicker() {
	this.debug = false; // Change this to true to start debugging
	this._curInst = null; // The current instance in use
	this._keyEvent = false; // If the last event was a key event
	this._disabledInputs = []; // List of date picker inputs that have been disabled
	this._datepickerShowing = false; // True if the popup picker is showing , false if not
	this._inDialog = false; // True if showing within a "dialog", false if not
	this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division
	this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class
	this._appendClass = 'ui-datepicker-append'; // The name of the append marker class
	this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class
	this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class
	this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class
	this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class
	this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class
	this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class
	this.regional = []; // Available regional settings, indexed by language code
	this.regional[''] = { // Default regional settings
		closeText: 'Done', // Display text for close link
		prevText: 'Prev', // Display text for previous month link
		nextText: 'Next', // Display text for next month link
		currentText: 'Today', // Display text for current month link
		monthNames: ['January','February','March','April','May','June',
			'July','August','September','October','November','December'], // Names of months for drop-down and formatting
		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting
		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting
		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting
		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday
		dateFormat: 'mm/dd/yy', // See format options on parseDate
		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
		isRTL: false // True if right-to-left language, false if left-to-right
	};
	this._defaults = { // Global defaults for all the date picker instances
		showOn: 'focus', // 'focus' for popup on focus,
			// 'button' for trigger button, or 'both' for either
		showAnim: 'show', // Name of jQuery animation for popup
		showOptions: {}, // Options for enhanced animations
		defaultDate: null, // Used when field is blank: actual date,
			// +/-number for offset from today, null for today
		appendText: '', // Display text following the input box, e.g. showing the format
		buttonText: '...', // Text for trigger button
		buttonImage: '', // URL for trigger button image
		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
		hideIfNoPrevNext: false, // True to hide next/previous month links
			// if not applicable, false to just disable them
		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
		gotoCurrent: false, // True if today link goes back to current selection instead
		changeMonth: false, // True if month can be selected directly, false if only prev/next
		changeYear: false, // True if year can be selected directly, false if only prev/next
		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
		yearRange: '-10:+10', // Range of years to display in drop-down,
			// either relative to current year (-nn:+nn) or absolute (nnnn:nnnn)
		showOtherMonths: false, // True to show dates in other months, false to leave blank
		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
			// takes a Date and returns the number of the week for it
		shortYearCutoff: '+10', // Short year values < this are in the current century,
			// > this are in the previous century,
			// string value starting with '+' for current year + value
		minDate: null, // The earliest selectable date, or null for no limit
		maxDate: null, // The latest selectable date, or null for no limit
		duration: 'normal', // Duration of display/closure
		beforeShowDay: null, // Function that takes a date and returns an array with
			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',
			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
		beforeShow: null, // Function that takes an input field and
			// returns a set of custom settings for the date picker
		onSelect: null, // Define a callback function when a date is selected
		onChangeMonthYear: null, // Define a callback function when the month or year is changed
		onClose: null, // Define a callback function when the datepicker is closed
		numberOfMonths: 1, // Number of months to show at a time
		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
		stepMonths: 1, // Number of months to step back/forward
		stepBigMonths: 12, // Number of months to step back/forward for the big links
		altField: '', // Selector for an alternate field to store selected dates into
		altFormat: '', // The date format to use for the alternate field
		constrainInput: true, // The input is constrained by the current date format
		showButtonPanel: false // True to show button panel, false to not show it
	};
	$.extend(this._defaults, this.regional['']);
	this.dpDiv = $('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>');
}

$.extend(Datepicker.prototype, {
	/* Class name added to elements to indicate already configured with a date picker. */
	markerClassName: 'hasDatepicker',

	/* Debug logging (if enabled). */
	log: function () {
		if (this.debug)
			console.log.apply('', arguments);
	},

	/* Override the default settings for all instances of the date picker.
	   @param  settings  object - the new settings to use as defaults (anonymous object)
	   @return the manager object */
	setDefaults: function(settings) {
		extendRemove(this._defaults, settings || {});
		return this;
	},

	/* Attach the date picker to a jQuery selection.
	   @param  target    element - the target input field or division or span
	   @param  settings  object - the new settings to use for this date picker instance (anonymous) */
	_attachDatepicker: function(target, settings) {
		// check for settings on the control itself - in namespace 'date:'
		var inlineSettings = null;
		for (var attrName in this._defaults) {
			var attrValue = target.getAttribute('date:' + attrName);
			if (attrValue) {
				inlineSettings = inlineSettings || {};
				try {
					inlineSettings[attrName] = eval(attrValue);
				} catch (err) {
					inlineSettings[attrName] = attrValue;
				}
			}
		}
		var nodeName = target.nodeName.toLowerCase();
		var inline = (nodeName == 'div' || nodeName == 'span');
		if (!target.id)
			target.id = 'dp' + (++this.uuid);
		var inst = this._newInst($(target), inline);
		inst.settings = $.extend({}, settings || {}, inlineSettings || {});
		if (nodeName == 'input') {
			this._connectDatepicker(target, inst);
		} else if (inline) {
			this._inlineDatepicker(target, inst);
		}
	},

	/* Create a new instance object. */
	_newInst: function(target, inline) {
		var id = target[0].id.replace(/([:\[\]\.])/g, '\\\\$1'); // escape jQuery meta chars
		return {id: id, input: target, // associated target
			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
			drawMonth: 0, drawYear: 0, // month being drawn
			inline: inline, // is datepicker inline or not
			dpDiv: (!inline ? this.dpDiv : // presentation div
			$('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))};
	},

	/* Attach the date picker to an input field. */
	_connectDatepicker: function(target, inst) {
		var input = $(target);
		inst.append = $([]);
		inst.trigger = $([]);
		if (input.hasClass(this.markerClassName))
			return;
		var appendText = this._get(inst, 'appendText');
		var isRTL = this._get(inst, 'isRTL');
		if (appendText) {
			inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>');
			input[isRTL ? 'before' : 'after'](inst.append);
		}
		var showOn = this._get(inst, 'showOn');
		if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field
			input.focus(this._showDatepicker);
		if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked
			var buttonText = this._get(inst, 'buttonText');
			var buttonImage = this._get(inst, 'buttonImage');
			inst.trigger = $(this._get(inst, 'buttonImageOnly') ?
				$('<img/>').addClass(this._triggerClass).
					attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
				$('<button type="button"></button>').addClass(this._triggerClass).
					html(buttonImage == '' ? buttonText : $('<img/>').attr(
					{ src:buttonImage, alt:buttonText, title:buttonText })));
			input[isRTL ? 'before' : 'after'](inst.trigger);
			inst.trigger.click(function() {
				if ($.datepicker._datepickerShowing && $.datepicker._lastInput == target)
					$.datepicker._hideDatepicker();
				else
					$.datepicker._showDatepicker(target);
				return false;
			});
		}
		input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).
			bind("setData.datepicker", function(event, key, value) {
				inst.settings[key] = value;
			}).bind("getData.datepicker", function(event, key) {
				return this._get(inst, key);
			});
		$.data(target, PROP_NAME, inst);
	},

	/* Attach an inline date picker to a div. */
	_inlineDatepicker: function(target, inst) {
		var divSpan = $(target);
		if (divSpan.hasClass(this.markerClassName))
			return;
		divSpan.addClass(this.markerClassName).append(inst.dpDiv).
			bind("setData.datepicker", function(event, key, value){
				inst.settings[key] = value;
			}).bind("getData.datepicker", function(event, key){
				return this._get(inst, key);
			});
		$.data(target, PROP_NAME, inst);
		this._setDate(inst, this._getDefaultDate(inst));
		this._updateDatepicker(inst);
		this._updateAlternate(inst);
	},

	/* Pop-up the date picker in a "dialog" box.
	   @param  input     element - ignored
	   @param  dateText  string - the initial date to display (in the current format)
	   @param  onSelect  function - the function(dateText) to call when a date is selected
	   @param  settings  object - update the dialog date picker instance's settings (anonymous object)
	   @param  pos       int[2] - coordinates for the dialog's position within the screen or
	                     event - with x/y coordinates or
	                     leave empty for default (screen centre)
	   @return the manager object */
	_dialogDatepicker: function(input, dateText, onSelect, settings, pos) {
		var inst = this._dialogInst; // internal instance
		if (!inst) {
			var id = 'dp' + (++this.uuid);
			this._dialogInput = $('<input type="text" id="' + id +
				'" size="1" style="position: absolute; top: -100px;"/>');
			this._dialogInput.keydown(this._doKeyDown);
			$('body').append(this._dialogInput);
			inst = this._dialogInst = this._newInst(this._dialogInput, false);
			inst.settings = {};
			$.data(this._dialogInput[0], PROP_NAME, inst);
		}
		extendRemove(inst.settings, settings || {});
		this._dialogInput.val(dateText);

		this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
		if (!this._pos) {
			var browserWidth = window.innerWidth || document.documentElement.clientWidth ||	document.body.clientWidth;
			var browserHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
			var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
			var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
			this._pos = // should use actual width/height below
				[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
		}

		// move input on screen for focus, but hidden behind dialog
		this._dialogInput.css('left', this._pos[0] + 'px').css('top', this._pos[1] + 'px');
		inst.settings.onSelect = onSelect;
		this._inDialog = true;
		this.dpDiv.addClass(this._dialogClass);
		this._showDatepicker(this._dialogInput[0]);
		if ($.blockUI)
			$.blockUI(this.dpDiv);
		$.data(this._dialogInput[0], PROP_NAME, inst);
		return this;
	},

	/* Detach a datepicker from its control.
	   @param  target    element - the target input field or division or span */
	_destroyDatepicker: function(target) {
		var $target = $(target);
		var inst = $.data(target, PROP_NAME);
		if (!$target.hasClass(this.markerClassName)) {
			return;
		}
		var nodeName = target.nodeName.toLowerCase();
		$.removeData(target, PROP_NAME);
		if (nodeName == 'input') {
			inst.append.remove();
			inst.trigger.remove();
			$target.removeClass(this.markerClassName).
				unbind('focus', this._showDatepicker).
				unbind('keydown', this._doKeyDown).
				unbind('keypress', this._doKeyPress);
		} else if (nodeName == 'div' || nodeName == 'span')
			$target.removeClass(this.markerClassName).empty();
	},

	/* Enable the date picker to a jQuery selection.
	   @param  target    element - the target input field or division or span */
	_enableDatepicker: function(target) {
		var $target = $(target);
		var inst = $.data(target, PROP_NAME);
		if (!$target.hasClass(this.markerClassName)) {
			return;
		}
		var nodeName = target.nodeName.toLowerCase();
		if (nodeName == 'input') {
			target.disabled = false;
			inst.trigger.filter('button').
				each(function() { this.disabled = false; }).end().
				filter('img').css({opacity: '1.0', cursor: ''});
		}
		else if (nodeName == 'div' || nodeName == 'span') {
			var inline = $target.children('.' + this._inlineClass);
			inline.children().removeClass('ui-state-disabled');
		}
		this._disabledInputs = $.map(this._disabledInputs,
			function(value) { return (value == target ? null : value); }); // delete entry
	},

	/* Disable the date picker to a jQuery selection.
	   @param  target    element - the target input field or division or span */
	_disableDatepicker: function(target) {
		var $target = $(target);
		var inst = $.data(target, PROP_NAME);
		if (!$target.hasClass(this.markerClassName)) {
			return;
		}
		var nodeName = target.nodeName.toLowerCase();
		if (nodeName == 'input') {
			target.disabled = true;
			inst.trigger.filter('button').
				each(function() { this.disabled = true; }).end().
				filter('img').css({opacity: '0.5', cursor: 'default'});
		}
		else if (nodeName == 'div' || nodeName == 'span') {
			var inline = $target.children('.' + this._inlineClass);
			inline.children().addClass('ui-state-disabled');
		}
		this._disabledInputs = $.map(this._disabledInputs,
			function(value) { return (value == target ? null : value); }); // delete entry
		this._disabledInputs[this._disabledInputs.length] = target;
	},

	/* Is the first field in a jQuery collection disabled as a datepicker?
	   @param  target    element - the target input field or division or span
	   @return boolean - true if disabled, false if enabled */
	_isDisabledDatepicker: function(target) {
		if (!target) {
			return false;
		}
		for (var i = 0; i < this._disabledInputs.length; i++) {
			if (this._disabledInputs[i] == target)
				return true;
		}
		return false;
	},

	/* Retrieve the instance data for the target control.
	   @param  target  element - the target input field or division or span
	   @return  object - the associated instance data
	   @throws  error if a jQuery problem getting data */
	_getInst: function(target) {
		try {
			return $.data(target, PROP_NAME);
		}
		catch (err) {
			throw 'Missing instance data for this datepicker';
		}
	},

	/* Update or retrieve the settings for a date picker attached to an input field or division.
	   @param  target  element - the target input field or division or span
	   @param  name    object - the new settings to update or
	                   string - the name of the setting to change or retrieve,
	                   when retrieving also 'all' for all instance settings or
	                   'defaults' for all global defaults
	   @param  value   any - the new value for the setting
	                   (omit if above is an object or to retrieve a value) */
	_optionDatepicker: function(target, name, value) {
		var inst = this._getInst(target);
		if (arguments.length == 2 && typeof name == 'string') {
			return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :
				(inst ? (name == 'all' ? $.extend({}, inst.settings) :
				this._get(inst, name)) : null));
		}
		var settings = name || {};
		if (typeof name == 'string') {
			settings = {};
			settings[name] = value;
		}
		if (inst) {
			if (this._curInst == inst) {
				this._hideDatepicker(null);
			}
			var date = this._getDateDatepicker(target);
			extendRemove(inst.settings, settings);
			this._setDateDatepicker(target, date);
			this._updateDatepicker(inst);
		}
	},

	// change method deprecated
	_changeDatepicker: function(target, name, value) {
		this._optionDatepicker(target, name, value);
	},

	/* Redraw the date picker attached to an input field or division.
	   @param  target  element - the target input field or division or span */
	_refreshDatepicker: function(target) {
		var inst = this._getInst(target);
		if (inst) {
			this._updateDatepicker(inst);
		}
	},

	/* Set the dates for a jQuery selection.
	   @param  target   element - the target input field or division or span
	   @param  date     Date - the new date
	   @param  endDate  Date - the new end date for a range (optional) */
	_setDateDatepicker: function(target, date, endDate) {
		var inst = this._getInst(target);
		if (inst) {
			this._setDate(inst, date, endDate);
			this._updateDatepicker(inst);
			this._updateAlternate(inst);
		}
	},

	/* Get the date(s) for the first entry in a jQuery selection.
	   @param  target  element - the target input field or division or span
	   @return Date - the current date or
	           Date[2] - the current dates for a range */
	_getDateDatepicker: function(target) {
		var inst = this._getInst(target);
		if (inst && !inst.inline)
			this._setDateFromField(inst);
		return (inst ? this._getDate(inst) : null);
	},

	/* Handle keystrokes. */
	_doKeyDown: function(event) {
		var inst = $.datepicker._getInst(event.target);
		var handled = true;
		var isRTL = inst.dpDiv.is('.ui-datepicker-rtl');
		inst._keyEvent = true;
		if ($.datepicker._datepickerShowing)
			switch (event.keyCode) {
				case 9:  $.datepicker._hideDatepicker(null, '');
						break; // hide on tab out
				case 13: var sel = $('td.' + $.datepicker._dayOverClass +
							', td.' + $.datepicker._currentClass, inst.dpDiv);
						if (sel[0])
							$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
						else
							$.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration'));
						return false; // don't submit the form
						break; // select the value on enter
				case 27: $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration'));
						break; // hide on escape
				case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
							-$.datepicker._get(inst, 'stepBigMonths') :
							-$.datepicker._get(inst, 'stepMonths')), 'M');
						break; // previous month/year on page up/+ ctrl
				case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
							+$.datepicker._get(inst, 'stepBigMonths') :
							+$.datepicker._get(inst, 'stepMonths')), 'M');
						break; // next month/year on page down/+ ctrl
				case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);
						handled = event.ctrlKey || event.metaKey;
						break; // clear on ctrl or command +end
				case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);
						handled = event.ctrlKey || event.metaKey;
						break; // current on ctrl or command +home
				case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');
						handled = event.ctrlKey || event.metaKey;
						// -1 day on ctrl or command +left
						if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
									-$.datepicker._get(inst, 'stepBigMonths') :
									-$.datepicker._get(inst, 'stepMonths')), 'M');
						// next month/year on alt +left on Mac
						break;
				case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');
						handled = event.ctrlKey || event.metaKey;
						break; // -1 week on ctrl or command +up
				case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');
						handled = event.ctrlKey || event.metaKey;
						// +1 day on ctrl or command +right
						if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
									+$.datepicker._get(inst, 'stepBigMonths') :
									+$.datepicker._get(inst, 'stepMonths')), 'M');
						// next month/year on alt +right
						break;
				case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');
						handled = event.ctrlKey || event.metaKey;
						break; // +1 week on ctrl or command +down
				default: handled = false;
			}
		else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home
			$.datepicker._showDatepicker(this);
		else {
			handled = false;
		}
		if (handled) {
			event.preventDefault();
			event.stopPropagation();
		}
	},

	/* Filter entered characters - based on date format. */
	_doKeyPress: function(event) {
		var inst = $.datepicker._getInst(event.target);
		if ($.datepicker._get(inst, 'constrainInput')) {
			var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));
			var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);
			return event.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);
		}
	},

	/* Pop-up the date picker for a given input field.
	   @param  input  element - the input field attached to the date picker or
	                  event - if triggered by focus */
	_showDatepicker: function(input) {
		input = input.target || input;
		if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger
			input = $('input', input.parentNode)[0];
		if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here
			return;
		var inst = $.datepicker._getInst(input);
		var beforeShow = $.datepicker._get(inst, 'beforeShow');
		extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {}));
		$.datepicker._hideDatepicker(null, '');
		$.datepicker._lastInput = input;
		$.datepicker._setDateFromField(inst);
		if ($.datepicker._inDialog) // hide cursor
			input.value = '';
		if (!$.datepicker._pos) { // position below input
			$.datepicker._pos = $.datepicker._findPos(input);
			$.datepicker._pos[1] += input.offsetHeight; // add the height
		}
		var isFixed = false;
		$(input).parents().each(function() {
			isFixed |= $(this).css('position') == 'fixed';
			return !isFixed;
		});
		if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled
			$.datepicker._pos[0] -= document.documentElement.scrollLeft;
			$.datepicker._pos[1] -= document.documentElement.scrollTop;
		}
		var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
		$.datepicker._pos = null;
		inst.rangeStart = null;
		// determine sizing offscreen
		inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});
		$.datepicker._updateDatepicker(inst);
		// fix width for dynamic number of date pickers
		// and adjust position before showing
		offset = $.datepicker._checkOffset(inst, offset, isFixed);
		inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
			'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',
			left: offset.left + 'px', top: offset.top + 'px'});
		if (!inst.inline) {
			var showAnim = $.datepicker._get(inst, 'showAnim') || 'show';
			var duration = $.datepicker._get(inst, 'duration');
			var postProcess = function() {
				$.datepicker._datepickerShowing = true;
				if ($.browser.msie && parseInt($.browser.version,10) < 7) // fix IE < 7 select problems
					$('iframe.ui-datepicker-cover').css({width: inst.dpDiv.width() + 4,
						height: inst.dpDiv.height() + 4});
			};
			if ($.effects && $.effects[showAnim])
				inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
			else
				inst.dpDiv[showAnim](duration, postProcess);
			if (duration == '')
				postProcess();
			if (inst.input[0].type != 'hidden')
				inst.input[0].focus();
			$.datepicker._curInst = inst;
		}
	},

	/* Generate the date picker content. */
	_updateDatepicker: function(inst) {
		var dims = {width: inst.dpDiv.width() + 4,
			height: inst.dpDiv.height() + 4};
		var self = this;
		inst.dpDiv.empty().append(this._generateHTML(inst))
			.find('iframe.ui-datepicker-cover').
				css({width: dims.width, height: dims.height})
			.end()
			.find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a')
				.bind('mouseout', function(){
					$(this).removeClass('ui-state-hover');
					if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');
					if(this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');
				})
				.bind('mouseover', function(){
					if (!self._isDisabledDatepicker( inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) {
						$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');
						$(this).addClass('ui-state-hover');
						if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');
						if(this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');
					}
				})
			.end()
			.find('.' + this._dayOverClass + ' a')
				.trigger('mouseover')
			.end();
		var numMonths = this._getNumberOfMonths(inst);
		var cols = numMonths[1];
		var width = 17;
		if (cols > 1) {
			inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');
		} else {
			inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');
		}
		inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +
			'Class']('ui-datepicker-multi');
		inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +
			'Class']('ui-datepicker-rtl');
		if (inst.input && inst.input[0].type != 'hidden' && inst == $.datepicker._curInst)
			$(inst.input[0]).focus();
	},

	/* Check positioning to remain on screen. */
	_checkOffset: function(inst, offset, isFixed) {
		var dpWidth = inst.dpDiv.outerWidth();
		var dpHeight = inst.dpDiv.outerHeight();
		var inputWidth = inst.input ? inst.input.outerWidth() : 0;
		var inputHeight = inst.input ? inst.input.outerHeight() : 0;
		var viewWidth = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) + $(document).scrollLeft();
		var viewHeight = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) + $(document).scrollTop();

		offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);
		offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;
		offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;

		// now check if datepicker is showing outside window viewport - move to a better place if so.
		offset.left -= (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0;
		offset.top -= (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(offset.top + dpHeight + inputHeight*2 - viewHeight) : 0;

		return offset;
	},

	/* Find an object's position on the screen. */
	_findPos: function(obj) {
        while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) {
            obj = obj.nextSibling;
        }
        var position = $(obj).offset();
	    return [position.left, position.top];
	},

	/* Hide the date picker from view.
	   @param  input  element - the input field attached to the date picker
	   @param  duration  string - the duration over which to close the date picker */
	_hideDatepicker: function(input, duration) {
		var inst = this._curInst;
		if (!inst || (input && inst != $.data(input, PROP_NAME)))
			return;
		if (inst.stayOpen)
			this._selectDate('#' + inst.id, this._formatDate(inst,
				inst.currentDay, inst.currentMonth, inst.currentYear));
		inst.stayOpen = false;
		if (this._datepickerShowing) {
			duration = (duration != null ? duration : this._get(inst, 'duration'));
			var showAnim = this._get(inst, 'showAnim');
			var postProcess = function() {
				$.datepicker._tidyDialog(inst);
			};
			if (duration != '' && $.effects && $.effects[showAnim])
				inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'),
					duration, postProcess);
			else
				inst.dpDiv[(duration == '' ? 'hide' : (showAnim == 'slideDown' ? 'slideUp' :
					(showAnim == 'fadeIn' ? 'fadeOut' : 'hide')))](duration, postProcess);
			if (duration == '')
				this._tidyDialog(inst);
			var onClose = this._get(inst, 'onClose');
			if (onClose)
				onClose.apply((inst.input ? inst.input[0] : null),
					[(inst.input ? inst.input.val() : ''), inst]);  // trigger custom callback
			this._datepickerShowing = false;
			this._lastInput = null;
			if (this._inDialog) {
				this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });
				if ($.blockUI) {
					$.unblockUI();
					$('body').append(this.dpDiv);
				}
			}
			this._inDialog = false;
		}
		this._curInst = null;
	},

	/* Tidy up after a dialog display. */
	_tidyDialog: function(inst) {
		inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');
	},

	/* Close date picker if clicked elsewhere. */
	_checkExternalClick: function(event) {
		if (!$.datepicker._curInst)
			return;
		var $target = $(event.target);
		if (($target.parents('#' + $.datepicker._mainDivId).length == 0) &&
				!$target.hasClass($.datepicker.markerClassName) &&
				!$target.hasClass($.datepicker._triggerClass) &&
				$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI))
			$.datepicker._hideDatepicker(null, '');
	},

	/* Adjust one of the date sub-fields. */
	_adjustDate: function(id, offset, period) {
		var target = $(id);
		var inst = this._getInst(target[0]);
		if (this._isDisabledDatepicker(target[0])) {
			return;
		}
		this._adjustInstDate(inst, offset +
			(period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning
			period);
		this._updateDatepicker(inst);
	},

	/* Action for current link. */
	_gotoToday: function(id) {
		var target = $(id);
		var inst = this._getInst(target[0]);
		if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
			inst.selectedDay = inst.currentDay;
			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
			inst.drawYear = inst.selectedYear = inst.currentYear;
		}
		else {
		var date = new Date();
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		}
		this._notifyChange(inst);
		this._adjustDate(target);
	},

	/* Action for selecting a new month/year. */
	_selectMonthYear: function(id, select, period) {
		var target = $(id);
		var inst = this._getInst(target[0]);
		inst._selectingMonthYear = false;
		inst['selected' + (period == 'M' ? 'Month' : 'Year')] =
		inst['draw' + (period == 'M' ? 'Month' : 'Year')] =
			parseInt(select.options[select.selectedIndex].value,10);
		this._notifyChange(inst);
		this._adjustDate(target);
	},

	/* Restore input focus after not changing month/year. */
	_clickMonthYear: function(id) {
		var target = $(id);
		var inst = this._getInst(target[0]);
		if (inst.input && inst._selectingMonthYear && !$.browser.msie)
			inst.input[0].focus();
		inst._selectingMonthYear = !inst._selectingMonthYear;
	},

	/* Action for selecting a day. */
	_selectDay: function(id, month, year, td) {
		var target = $(id);
		if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
			return;
		}
		var inst = this._getInst(target[0]);
		inst.selectedDay = inst.currentDay = $('a', td).html();
		inst.selectedMonth = inst.currentMonth = month;
		inst.selectedYear = inst.currentYear = year;
		if (inst.stayOpen) {
			inst.endDay = inst.endMonth = inst.endYear = null;
		}
		this._selectDate(id, this._formatDate(inst,
			inst.currentDay, inst.currentMonth, inst.currentYear));
		if (inst.stayOpen) {
			inst.rangeStart = this._daylightSavingAdjust(
				new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
			this._updateDatepicker(inst);
		}
	},

	/* Erase the input field and hide the date picker. */
	_clearDate: function(id) {
		var target = $(id);
		var inst = this._getInst(target[0]);
		inst.stayOpen = false;
		inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null;
		this._selectDate(target, '');
	},

	/* Update the input field with the selected date. */
	_selectDate: function(id, dateStr) {
		var target = $(id);
		var inst = this._getInst(target[0]);
		dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
		if (inst.input)
			inst.input.val(dateStr);
		this._updateAlternate(inst);
		var onSelect = this._get(inst, 'onSelect');
		if (onSelect)
			onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback
		else if (inst.input)
			inst.input.trigger('change'); // fire the change event
		if (inst.inline)
			this._updateDatepicker(inst);
		else if (!inst.stayOpen) {
			this._hideDatepicker(null, this._get(inst, 'duration'));
			this._lastInput = inst.input[0];
			if (typeof(inst.input[0]) != 'object')
				inst.input[0].focus(); // restore focus
			this._lastInput = null;
		}
	},

	/* Update any alternate field to synchronise with the main field. */
	_updateAlternate: function(inst) {
		var altField = this._get(inst, 'altField');
		if (altField) { // update alternate field too
			var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');
			var date = this._getDate(inst);
			dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
			$(altField).each(function() { $(this).val(dateStr); });
		}
	},

	/* Set as beforeShowDay function to prevent selection of weekends.
	   @param  date  Date - the date to customise
	   @return [boolean, string] - is this date selectable?, what is its CSS class? */
	noWeekends: function(date) {
		var day = date.getDay();
		return [(day > 0 && day < 6), ''];
	},

	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
	   @param  date  Date - the date to get the week for
	   @return  number - the number of the week within the year that contains this date */
	iso8601Week: function(date) {
		var checkDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
		var firstMon = new Date(checkDate.getFullYear(), 1 - 1, 4); // First week always contains 4 Jan
		var firstDay = firstMon.getDay() || 7; // Day of week: Mon = 1, ..., Sun = 7
		firstMon.setDate(firstMon.getDate() + 1 - firstDay); // Preceding Monday
		if (firstDay < 4 && checkDate < firstMon) { // Adjust first three days in year if necessary
			checkDate.setDate(checkDate.getDate() - 3); // Generate for previous year
			return $.datepicker.iso8601Week(checkDate);
		} else if (checkDate > new Date(checkDate.getFullYear(), 12 - 1, 28)) { // Check last three days in year
			firstDay = new Date(checkDate.getFullYear() + 1, 1 - 1, 4).getDay() || 7;
			if (firstDay > 4 && (checkDate.getDay() || 7) < firstDay - 3) { // Adjust if necessary
				return 1;
			}
		}
		return Math.floor(((checkDate - firstMon) / 86400000) / 7) + 1; // Weeks to given date
	},

	/* Parse a string value into a date object.
	   See formatDate below for the possible formats.

	   @param  format    string - the expected format of the date
	   @param  value     string - the date in the above format
	   @param  settings  Object - attributes include:
	                     shortYearCutoff  number - the cutoff year for determining the century (optional)
	                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)
	                     dayNames         string[7] - names of the days from Sunday (optional)
	                     monthNamesShort  string[12] - abbreviated names of the months (optional)
	                     monthNames       string[12] - names of the months (optional)
	   @return  Date - the extracted date value or null if value is blank */
	parseDate: function (format, value, settings) {
		if (format == null || value == null)
			throw 'Invalid arguments';
		value = (typeof value == 'object' ? value.toString() : value + '');
		if (value == '')
			return null;
		var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;
		var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
		var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
		var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
		var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
		var year = -1;
		var month = -1;
		var day = -1;
		var doy = -1;
		var literal = false;
		// Check whether a format character is doubled
		var lookAhead = function(match) {
			var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
			if (matches)
				iFormat++;
			return matches;
		};
		// Extract a number from the string value
		var getNumber = function(match) {
			lookAhead(match);
			var origSize = (match == '@' ? 14 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2)));
			var size = origSize;
			var num = 0;
			while (size > 0 && iValue < value.length &&
					value.charAt(iValue) >= '0' && value.charAt(iValue) <= '9') {
				num = num * 10 + parseInt(value.charAt(iValue++),10);
				size--;
			}
			if (size == origSize)
				throw 'Missing number at position ' + iValue;
			return num;
		};
		// Extract a name from the string value and convert to an index
		var getName = function(match, shortNames, longNames) {
			var names = (lookAhead(match) ? longNames : shortNames);
			var size = 0;
			for (var j = 0; j < names.length; j++)
				size = Math.max(size, names[j].length);
			var name = '';
			var iInit = iValue;
			while (size > 0 && iValue < value.length) {
				name += value.charAt(iValue++);
				for (var i = 0; i < names.length; i++)
					if (name == names[i])
						return i + 1;
				size--;
			}
			throw 'Unknown name at position ' + iInit;
		};
		// Confirm that a literal character matches the string value
		var checkLiteral = function() {
			if (value.charAt(iValue) != format.charAt(iFormat))
				throw 'Unexpected literal at position ' + iValue;
			iValue++;
		};
		var iValue = 0;
		for (var iFormat = 0; iFormat < format.length; iFormat++) {
			if (literal)
				if (format.charAt(iFormat) == "'" && !lookAhead("'"))
					literal = false;
				else
					checkLiteral();
			else
				switch (format.charAt(iFormat)) {
					case 'd':
						day = getNumber('d');
						break;
					case 'D':
						getName('D', dayNamesShort, dayNames);
						break;
					case 'o':
						doy = getNumber('o');
						break;
					case 'm':
						month = getNumber('m');
						break;
					case 'M':
						month = getName('M', monthNamesShort, monthNames);
						break;
					case 'y':
						year = getNumber('y');
						break;
					case '@':
						var date = new Date(getNumber('@'));
						year = date.getFullYear();
						month = date.getMonth() + 1;
						day = date.getDate();
						break;
					case "'":
						if (lookAhead("'"))
							checkLiteral();
						else
							literal = true;
						break;
					default:
						checkLiteral();
				}
		}
		if (year == -1)
			year = new Date().getFullYear();
		else if (year < 100)
			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
				(year <= shortYearCutoff ? 0 : -100);
		if (doy > -1) {
			month = 1;
			day = doy;
			do {
				var dim = this._getDaysInMonth(year, month - 1);
				if (day <= dim)
					break;
				month++;
				day -= dim;
			} while (true);
		}
		var date = this._daylightSavingAdjust(new Date(year, month - 1, day));
		if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)
			throw 'Invalid date'; // E.g. 31/02/*
		return date;
	},

	/* Standard date formats. */
	ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)
	COOKIE: 'D, dd M yy',
	ISO_8601: 'yy-mm-dd',
	RFC_822: 'D, d M y',
	RFC_850: 'DD, dd-M-y',
	RFC_1036: 'D, d M y',
	RFC_1123: 'D, d M yy',
	RFC_2822: 'D, d M yy',
	RSS: 'D, d M y', // RFC 822
	TIMESTAMP: '@',
	W3C: 'yy-mm-dd', // ISO 8601

	/* Format a date object into a string value.
	   The format can be combinations of the following:
	   d  - day of month (no leading zero)
	   dd - day of month (two digit)
	   o  - day of year (no leading zeros)
	   oo - day of year (three digit)
	   D  - day name short
	   DD - day name long
	   m  - month of year (no leading zero)
	   mm - month of year (two digit)
	   M  - month name short
	   MM - month name long
	   y  - year (two digit)
	   yy - year (four digit)
	   @ - Unix timestamp (ms since 01/01/1970)
	   '...' - literal text
	   '' - single quote

	   @param  format    string - the desired format of the date
	   @param  date      Date - the date value to format
	   @param  settings  Object - attributes include:
	                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)
	                     dayNames         string[7] - names of the days from Sunday (optional)
	                     monthNamesShort  string[12] - abbreviated names of the months (optional)
	                     monthNames       string[12] - names of the months (optional)
	   @return  string - the date in the above format */
	formatDate: function (format, date, settings) {
		if (!date)
			return '';
		var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
		var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
		var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
		var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
		// Check whether a format character is doubled
		var lookAhead = function(match) {
			var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
			if (matches)
				iFormat++;
			return matches;
		};
		// Format a number, with leading zero if necessary
		var formatNumber = function(match, value, len) {
			var num = '' + value;
			if (lookAhead(match))
				while (num.length < len)
					num = '0' + num;
			return num;
		};
		// Format a name, short or long as requested
		var formatName = function(match, value, shortNames, longNames) {
			return (lookAhead(match) ? longNames[value] : shortNames[value]);
		};
		var output = '';
		var literal = false;
		if (date)
			for (var iFormat = 0; iFormat < format.length; iFormat++) {
				if (literal)
					if (format.charAt(iFormat) == "'" && !lookAhead("'"))
						literal = false;
					else
						output += format.charAt(iFormat);
				else
					switch (format.charAt(iFormat)) {
						case 'd':
							output += formatNumber('d', date.getDate(), 2);
							break;
						case 'D':
							output += formatName('D', date.getDay(), dayNamesShort, dayNames);
							break;
						case 'o':
							var doy = date.getDate();
							for (var m = date.getMonth() - 1; m >= 0; m--)
								doy += this._getDaysInMonth(date.getFullYear(), m);
							output += formatNumber('o', doy, 3);
							break;
						case 'm':
							output += formatNumber('m', date.getMonth() + 1, 2);
							break;
						case 'M':
							output += formatName('M', date.getMonth(), monthNamesShort, monthNames);
							break;
						case 'y':
							output += (lookAhead('y') ? date.getFullYear() :
								(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);
							break;
						case '@':
							output += date.getTime();
							break;
						case "'":
							if (lookAhead("'"))
								output += "'";
							else
								literal = true;
							break;
						default:
							output += format.charAt(iFormat);
					}
			}
		return output;
	},

	/* Extract all possible characters from the date format. */
	_possibleChars: function (format) {
		var chars = '';
		var literal = false;
		for (var iFormat = 0; iFormat < format.length; iFormat++)
			if (literal)
				if (format.charAt(iFormat) == "'" && !lookAhead("'"))
					literal = false;
				else
					chars += format.charAt(iFormat);
			else
				switch (format.charAt(iFormat)) {
					case 'd': case 'm': case 'y': case '@':
						chars += '0123456789';
						break;
					case 'D': case 'M':
						return null; // Accept anything
					case "'":
						if (lookAhead("'"))
							chars += "'";
						else
							literal = true;
						break;
					default:
						chars += format.charAt(iFormat);
				}
		return chars;
	},

	/* Get a setting value, defaulting if necessary. */
	_get: function(inst, name) {
		return inst.settings[name] !== undefined ?
			inst.settings[name] : this._defaults[name];
	},

	/* Parse existing date and initialise date picker. */
	_setDateFromField: function(inst) {
		var dateFormat = this._get(inst, 'dateFormat');
		var dates = inst.input ? inst.input.val() : null;
		inst.endDay = inst.endMonth = inst.endYear = null;
		var date = defaultDate = this._getDefaultDate(inst);
		var settings = this._getFormatConfig(inst);
		try {
			date = this.parseDate(dateFormat, dates, settings) || defaultDate;
		} catch (event) {
			this.log(event);
			date = defaultDate;
		}
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		inst.currentDay = (dates ? date.getDate() : 0);
		inst.currentMonth = (dates ? date.getMonth() : 0);
		inst.currentYear = (dates ? date.getFullYear() : 0);
		this._adjustInstDate(inst);
	},

	/* Retrieve the default date shown on opening. */
	_getDefaultDate: function(inst) {
		var date = this._determineDate(this._get(inst, 'defaultDate'), new Date());
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		date = (minDate && date < minDate ? minDate : date);
		date = (maxDate && date > maxDate ? maxDate : date);
		return date;
	},

	/* A date may be specified as an exact value or a relative one. */
	_determineDate: function(date, defaultDate) {
		var offsetNumeric = function(offset) {
			var date = new Date();
			date.setDate(date.getDate() + offset);
			return date;
		};
		var offsetString = function(offset, getDaysInMonth) {
			var date = new Date();
			var year = date.getFullYear();
			var month = date.getMonth();
			var day = date.getDate();
			var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
			var matches = pattern.exec(offset);
			while (matches) {
				switch (matches[2] || 'd') {
					case 'd' : case 'D' :
						day += parseInt(matches[1],10); break;
					case 'w' : case 'W' :
						day += parseInt(matches[1],10) * 7; break;
					case 'm' : case 'M' :
						month += parseInt(matches[1],10);
						day = Math.min(day, getDaysInMonth(year, month));
						break;
					case 'y': case 'Y' :
						year += parseInt(matches[1],10);
						day = Math.min(day, getDaysInMonth(year, month));
						break;
				}
				matches = pattern.exec(offset);
			}
			return new Date(year, month, day);
		};
		date = (date == null ? defaultDate :
			(typeof date == 'string' ? offsetString(date, this._getDaysInMonth) :
			(typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : date)));
		date = (date && date.toString() == 'Invalid Date' ? defaultDate : date);
		if (date) {
			date.setHours(0);
			date.setMinutes(0);
			date.setSeconds(0);
			date.setMilliseconds(0);
		}
		return this._daylightSavingAdjust(date);
	},

	/* Handle switch to/from daylight saving.
	   Hours may be non-zero on daylight saving cut-over:
	   > 12 when midnight changeover, but then cannot generate
	   midnight datetime, so jump to 1AM, otherwise reset.
	   @param  date  (Date) the date to check
	   @return  (Date) the corrected date */
	_daylightSavingAdjust: function(date) {
		if (!date) return null;
		date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
		return date;
	},

	/* Set the date(s) directly. */
	_setDate: function(inst, date, endDate) {
		var clear = !(date);
		var origMonth = inst.selectedMonth;
		var origYear = inst.selectedYear;
		date = this._determineDate(date, new Date());
		inst.selectedDay = inst.currentDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear();
		if (origMonth != inst.selectedMonth || origYear != inst.selectedYear)
			this._notifyChange(inst);
		this._adjustInstDate(inst);
		if (inst.input) {
			inst.input.val(clear ? '' : this._formatDate(inst));
		}
	},

	/* Retrieve the date(s) directly. */
	_getDate: function(inst) {
		var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :
			this._daylightSavingAdjust(new Date(
			inst.currentYear, inst.currentMonth, inst.currentDay)));
			return startDate;
	},

	/* Generate the HTML for the current state of the date picker. */
	_generateHTML: function(inst) {
		var today = new Date();
		today = this._daylightSavingAdjust(
			new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time
		var isRTL = this._get(inst, 'isRTL');
		var showButtonPanel = this._get(inst, 'showButtonPanel');
		var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');
		var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');
		var numMonths = this._getNumberOfMonths(inst);
		var showCurrentAtPos = this._get(inst, 'showCurrentAtPos');
		var stepMonths = this._get(inst, 'stepMonths');
		var stepBigMonths = this._get(inst, 'stepBigMonths');
		var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
		var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
			new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		var drawMonth = inst.drawMonth - showCurrentAtPos;
		var drawYear = inst.drawYear;
		if (drawMonth < 0) {
			drawMonth += 12;
			drawYear--;
		}
		if (maxDate) {
			var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
				maxDate.getMonth() - numMonths[1] + 1, maxDate.getDate()));
			maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
			while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
				drawMonth--;
				if (drawMonth < 0) {
					drawMonth = 11;
					drawYear--;
				}
			}
		}
		inst.drawMonth = drawMonth;
		inst.drawYear = drawYear;
		var prevText = this._get(inst, 'prevText');
		prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
			this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
			this._getFormatConfig(inst)));
		var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
			'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepMonths + ', \'M\');"' +
			' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' :
			(hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+ prevText +'"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>'));
		var nextText = this._get(inst, 'nextText');
		nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
			this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
			this._getFormatConfig(inst)));
		var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
			'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepMonths + ', \'M\');"' +
			' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' :
			(hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+ nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>'));
		var currentText = this._get(inst, 'currentText');
		var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);
		currentText = (!navigationAsDateFormat ? currentText :
			this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
		var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">' + this._get(inst, 'closeText') + '</button>' : '');
		var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') +
			(this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#' + inst.id + '\');"' +
			'>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';
		var firstDay = parseInt(this._get(inst, 'firstDay'),10);
		firstDay = (isNaN(firstDay) ? 0 : firstDay);
		var dayNames = this._get(inst, 'dayNames');
		var dayNamesShort = this._get(inst, 'dayNamesShort');
		var dayNamesMin = this._get(inst, 'dayNamesMin');
		var monthNames = this._get(inst, 'monthNames');
		var monthNamesShort = this._get(inst, 'monthNamesShort');
		var beforeShowDay = this._get(inst, 'beforeShowDay');
		var showOtherMonths = this._get(inst, 'showOtherMonths');
		var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;
		var endDate = inst.endDay ? this._daylightSavingAdjust(
			new Date(inst.endYear, inst.endMonth, inst.endDay)) : currentDate;
		var defaultDate = this._getDefaultDate(inst);
		var html = '';
		for (var row = 0; row < numMonths[0]; row++) {
			var group = '';
			for (var col = 0; col < numMonths[1]; col++) {
				var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
				var cornerClass = ' ui-corner-all';
				var calender = '';
				if (isMultiMonth) {
					calender += '<div class="ui-datepicker-group ui-datepicker-group-';
					switch (col) {
						case 0: calender += 'first'; cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;
						case numMonths[1]-1: calender += 'last'; cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;
						default: calender += 'middle'; cornerClass = ''; break;
					}
					calender += '">';
				}
				calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' +
					(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +
					(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +
					this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
					selectedDate, row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
					'</div><table class="ui-datepicker-calendar"><thead>' +
					'<tr>';
				var thead = '';
				for (var dow = 0; dow < 7; dow++) { // days of the week
					var day = (dow + firstDay) % 7;
					thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' +
						'<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>';
				}
				calender += thead + '</tr></thead><tbody>';
				var daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
				if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)
					inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
				var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
				var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate
				var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
				for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows
					calender += '<tr>';
					var tbody = '';
					for (var dow = 0; dow < 7; dow++) { // create date picker days
						var daySettings = (beforeShowDay ?
							beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
						var otherMonth = (printDate.getMonth() != drawMonth);
						var unselectable = otherMonth || !daySettings[0] ||
							(minDate && printDate < minDate) || (maxDate && printDate > maxDate);
						tbody += '<td class="' +
							((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends
							(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months
							((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key
							(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?
							// or defaultDate is current printedDate and defaultDate is selectedDate
							' ' + this._dayOverClass : '') + // highlight selected day
							(unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days
							(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates
							(printDate.getTime() >= currentDate.getTime() && printDate.getTime() <= endDate.getTime() ? // in current range
							' ' + this._currentClass : '') + // highlight selected day
							(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + // highlight today (if different)
							((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + // cell title
							(unselectable ? '' : ' onclick="DP_jQuery.datepicker._selectDay(\'#' +
							inst.id + '\',' + drawMonth + ',' + drawYear + ', this);return false;"') + '>' + // actions
							(otherMonth ? (showOtherMonths ? printDate.getDate() : '&#xa0;') : // display for other months
							(unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' +
							(printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +
							(printDate.getTime() >= currentDate.getTime() && printDate.getTime() <= endDate.getTime() ? // in current range
							' ui-state-active' : '') + // highlight selected day
							'" href="#">' + printDate.getDate() + '</a>')) + '</td>'; // display for this month
						printDate.setDate(printDate.getDate() + 1);
						printDate = this._daylightSavingAdjust(printDate);
					}
					calender += tbody + '</tr>';
				}
				drawMonth++;
				if (drawMonth > 11) {
					drawMonth = 0;
					drawYear++;
				}
				calender += '</tbody></table>' + (isMultiMonth ? '</div>' + 
							((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
				group += calender;
			}
			html += group;
		}
		html += buttonPanel + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ?
			'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : '');
		inst._keyEvent = false;
		return html;
	},

	/* Generate the month and year header. */
	_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
			selectedDate, secondary, monthNames, monthNamesShort) {
		minDate = (inst.rangeStart && minDate && selectedDate < minDate ? selectedDate : minDate);
		var changeMonth = this._get(inst, 'changeMonth');
		var changeYear = this._get(inst, 'changeYear');
		var showMonthAfterYear = this._get(inst, 'showMonthAfterYear');
		var html = '<div class="ui-datepicker-title">';
		var monthHtml = '';
		// month selection
		if (secondary || !changeMonth)
			monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span> ';
		else {
			var inMinYear = (minDate && minDate.getFullYear() == drawYear);
			var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
			monthHtml += '<select class="ui-datepicker-month" ' +
				'onchange="DP_jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' +
				'onclick="DP_jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
			 	'>';
			for (var month = 0; month < 12; month++) {
				if ((!inMinYear || month >= minDate.getMonth()) &&
						(!inMaxYear || month <= maxDate.getMonth()))
					monthHtml += '<option value="' + month + '"' +
						(month == drawMonth ? ' selected="selected"' : '') +
						'>' + monthNamesShort[month] + '</option>';
			}
			monthHtml += '</select>';
		}
		if (!showMonthAfterYear)
			html += monthHtml + ((secondary || changeMonth || changeYear) && (!(changeMonth && changeYear)) ? '&#xa0;' : '');
		// year selection
		if (secondary || !changeYear)
			html += '<span class="ui-datepicker-year">' + drawYear + '</span>';
		else {
			// determine range of years to display
			var years = this._get(inst, 'yearRange').split(':');
			var year = 0;
			var endYear = 0;
			if (years.length != 2) {
				year = drawYear - 10;
				endYear = drawYear + 10;
			} else if (years[0].charAt(0) == '+' || years[0].charAt(0) == '-') {
				year = drawYear + parseInt(years[0], 10);
				endYear = drawYear + parseInt(years[1], 10);
			} else {
				year = parseInt(years[0], 10);
				endYear = parseInt(years[1], 10);
			}
			year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
			endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
			html += '<select class="ui-datepicker-year" ' +
				'onchange="DP_jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
				'onclick="DP_jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
				'>';
			for (; year <= endYear; year++) {
				html += '<option value="' + year + '"' +
					(year == drawYear ? ' selected="selected"' : '') +
					'>' + year + '</option>';
			}
			html += '</select>';
		}
		if (showMonthAfterYear)
			html += (secondary || changeMonth || changeYear ? '&#xa0;' : '') + monthHtml;
		html += '</div>'; // Close datepicker_header
		return html;
	},

	/* Adjust one of the date sub-fields. */
	_adjustInstDate: function(inst, offset, period) {
		var year = inst.drawYear + (period == 'Y' ? offset : 0);
		var month = inst.drawMonth + (period == 'M' ? offset : 0);
		var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +
			(period == 'D' ? offset : 0);
		var date = this._daylightSavingAdjust(new Date(year, month, day));
		// ensure it is within the bounds set
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		date = (minDate && date < minDate ? minDate : date);
		date = (maxDate && date > maxDate ? maxDate : date);
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		if (period == 'M' || period == 'Y')
			this._notifyChange(inst);
	},

	/* Notify change of month/year. */
	_notifyChange: function(inst) {
		var onChange = this._get(inst, 'onChangeMonthYear');
		if (onChange)
			onChange.apply((inst.input ? inst.input[0] : null),
				[inst.selectedYear, inst.selectedMonth + 1, inst]);
	},

	/* Determine the number of months to show. */
	_getNumberOfMonths: function(inst) {
		var numMonths = this._get(inst, 'numberOfMonths');
		return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));
	},

	/* Determine the current maximum date - ensure no time components are set - may be overridden for a range. */
	_getMinMaxDate: function(inst, minMax, checkRange) {
		var date = this._determineDate(this._get(inst, minMax + 'Date'), null);
		return (!checkRange || !inst.rangeStart ? date :
			(!date || inst.rangeStart > date ? inst.rangeStart : date));
	},

	/* Find the number of days in a given month. */
	_getDaysInMonth: function(year, month) {
		return 32 - new Date(year, month, 32).getDate();
	},

	/* Find the day of the week of the first of a month. */
	_getFirstDayOfMonth: function(year, month) {
		return new Date(year, month, 1).getDay();
	},

	/* Determines if we should allow a "next/prev" month display change. */
	_canAdjustMonth: function(inst, offset, curYear, curMonth) {
		var numMonths = this._getNumberOfMonths(inst);
		var date = this._daylightSavingAdjust(new Date(
			curYear, curMonth + (offset < 0 ? offset : numMonths[1]), 1));
		if (offset < 0)
			date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
		return this._isInRange(inst, date);
	},

	/* Is the given date in the accepted range? */
	_isInRange: function(inst, date) {
		// during range selection, use minimum of selected date and range start
		var newMinDate = (!inst.rangeStart ? null : this._daylightSavingAdjust(
			new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)));
		newMinDate = (newMinDate && inst.rangeStart < newMinDate ? inst.rangeStart : newMinDate);
		var minDate = newMinDate || this._getMinMaxDate(inst, 'min');
		var maxDate = this._getMinMaxDate(inst, 'max');
		return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate));
	},

	/* Provide the configuration settings for formatting/parsing. */
	_getFormatConfig: function(inst) {
		var shortYearCutoff = this._get(inst, 'shortYearCutoff');
		shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :
			new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
		return {shortYearCutoff: shortYearCutoff,
			dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),
			monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};
	},

	/* Format the given date for display. */
	_formatDate: function(inst, day, month, year) {
		if (!day) {
			inst.currentDay = inst.selectedDay;
			inst.currentMonth = inst.selectedMonth;
			inst.currentYear = inst.selectedYear;
		}
		var date = (day ? (typeof day == 'object' ? day :
			this._daylightSavingAdjust(new Date(year, month, day))) :
			this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
		return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));
	}
});

/* jQuery extend now ignores nulls! */
function extendRemove(target, props) {
	$.extend(target, props);
	for (var name in props)
		if (props[name] == null || props[name] == undefined)
			target[name] = props[name];
	return target;
};

/* Determine whether an object is an array. */
function isArray(a) {
	return (a && (($.browser.safari && typeof a == 'object' && a.length) ||
		(a.constructor && a.constructor.toString().match(/\Array\(\)/))));
};

/* Invoke the datepicker functionality.
   @param  options  string - a command, optionally followed by additional parameters or
                    Object - settings for attaching new datepicker functionality
   @return  jQuery object */
$.fn.datepicker = function(options){

	/* Initialise the date picker. */
	if (!$.datepicker.initialized) {
		$(document).mousedown($.datepicker._checkExternalClick).
			find('body').append($.datepicker.dpDiv);
		$.datepicker.initialized = true;
	}

	var otherArgs = Array.prototype.slice.call(arguments, 1);
	if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate'))
		return $.datepicker['_' + options + 'Datepicker'].
			apply($.datepicker, [this[0]].concat(otherArgs));
	if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')
		return $.datepicker['_' + options + 'Datepicker'].
			apply($.datepicker, [this[0]].concat(otherArgs));
	return this.each(function() {
		typeof options == 'string' ?
			$.datepicker['_' + options + 'Datepicker'].
				apply($.datepicker, [this].concat(otherArgs)) :
			$.datepicker._attachDatepicker(this, options);
	});
};

$.datepicker = new Datepicker(); // singleton instance
$.datepicker.initialized = false;
$.datepicker.uuid = new Date().getTime();
$.datepicker.version = "1.7.2";

// Workaround for #4055
// Add another global to avoid noConflict issues with inline event handlers
window.DP_jQuery = $;

})(jQuery);

/**
 * jCarousel - Riding carousels with jQuery
 *   http://sorgalla.com/jcarousel/
 *
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 * Inspired by the "Carousel Component" by Bill Scott
 *   http://billwscott.com/carousel/
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(9($){$.1v.C=9(o){z 4.1b(9(){3p r(4,o)})};8 q={Z:F,25:1,21:1,u:7,1c:3,15:7,1K:\'2X\',2c:\'2Q\',1q:0,B:7,1j:7,1G:7,2F:7,2B:7,2z:7,2x:7,2v:7,2s:7,2p:7,1S:\'<P></P>\',1Q:\'<P></P>\',2m:\'2l\',2k:\'2l\',1O:7,1L:7};$.C=9(e,o){4.5=$.16({},q,o||{});4.Q=F;4.D=7;4.H=7;4.t=7;4.U=7;4.R=7;4.N=!4.5.Z?\'1H\':\'26\';4.E=!4.5.Z?\'24\':\'23\';8 a=\'\',1e=e.K.1e(\' \');1r(8 i=0;i<1e.I;i++){6(1e[i].2y(\'C-2w\')!=-1){$(e).1E(1e[i]);8 a=1e[i];1p}}6(e.2t==\'3o\'||e.2t==\'3n\'){4.t=$(e);4.D=4.t.19();6(4.D.1o(\'C-H\')){6(!4.D.19().1o(\'C-D\'))4.D=4.D.B(\'<P></P>\');4.D=4.D.19()}10 6(!4.D.1o(\'C-D\'))4.D=4.t.B(\'<P></P>\').19()}10{4.D=$(e);4.t=$(e).3h(\'>2o,>2n,P>2o,P>2n\')}6(a!=\'\'&&4.D.19()[0].K.2y(\'C-2w\')==-1)4.D.B(\'<P 3g=" \'+a+\'"></P>\');4.H=4.t.19();6(!4.H.I||!4.H.1o(\'C-H\'))4.H=4.t.B(\'<P></P>\').19();4.R=$(\'.C-11\',4.D);6(4.R.u()==0&&4.5.1Q!=7)4.R=4.H.1z(4.5.1Q).11();4.R.V(4.K(\'C-11\'));4.U=$(\'.C-17\',4.D);6(4.U.u()==0&&4.5.1S!=7)4.U=4.H.1z(4.5.1S).11();4.U.V(4.K(\'C-17\'));4.H.V(4.K(\'C-H\'));4.t.V(4.K(\'C-t\'));4.D.V(4.K(\'C-D\'));8 b=4.5.15!=7?1k.1P(4.1m()/4.5.15):7;8 c=4.t.32(\'1F\');8 d=4;6(c.u()>0){8 f=0,i=4.5.21;c.1b(9(){d.1I(4,i++);f+=d.S(4,b)});4.t.y(4.N,f+\'T\');6(!o||o.u===J)4.5.u=c.u()}4.D.y(\'1y\',\'1A\');4.U.y(\'1y\',\'1A\');4.R.y(\'1y\',\'1A\');4.2G=9(){d.17()};4.2b=9(){d.11()};4.1U=9(){d.2q()};6(4.5.1j!=7)4.5.1j(4,\'2a\');6($.2A.28){4.1f(F,F);$(27).1u(\'2I\',9(){d.1t()})}10 4.1t()};8 r=$.C;r.1v=r.2H={C:\'0.2.3\'};r.1v.16=r.16=$.16;r.1v.16({1t:9(){4.A=7;4.G=7;4.X=7;4.13=7;4.14=F;4.1d=7;4.O=7;4.W=F;6(4.Q)z;4.t.y(4.E,4.1s(4.5.21)+\'T\');8 p=4.1s(4.5.25);4.X=4.13=7;4.1i(p,F);$(27).22(\'2E\',4.1U).1u(\'2E\',4.1U)},2D:9(){4.t.2C();4.t.y(4.E,\'3u\');4.t.y(4.N,\'3t\');6(4.5.1j!=7)4.5.1j(4,\'2D\');4.1t()},2q:9(){6(4.O!=7&&4.W)4.t.y(4.E,r.M(4.t.y(4.E))+4.O);4.O=7;4.W=F;6(4.5.1G!=7)4.5.1G(4);6(4.5.15!=7){8 a=4;8 b=1k.1P(4.1m()/4.5.15),N=0,E=0;$(\'1F\',4.t).1b(9(i){N+=a.S(4,b);6(i+1<a.A)E=N});4.t.y(4.N,N+\'T\');4.t.y(4.E,-E+\'T\')}4.1c(4.A,F)},3s:9(){4.Q=1h;4.1f()},3r:9(){4.Q=F;4.1f()},u:9(s){6(s!=J){4.5.u=s;6(!4.Q)4.1f()}z 4.5.u},3q:9(i,a){6(a==J||!a)a=i;6(4.5.u!==7&&a>4.5.u)a=4.5.u;1r(8 j=i;j<=a;j++){8 e=4.L(j);6(!e.I||e.1o(\'C-1a-1D\'))z F}z 1h},L:9(i){z $(\'.C-1a-\'+i,4.t)},2u:9(i,s){8 e=4.L(i),20=0,2u=0;6(e.I==0){8 c,e=4.1B(i),j=r.M(i);1n(c=4.L(--j)){6(j<=0||c.I){j<=0?4.t.2r(e):c.1X(e);1p}}}10 20=4.S(e);e.1E(4.K(\'C-1a-1D\'));1R s==\'3l\'?e.3k(s):e.2C().3j(s);8 a=4.5.15!=7?1k.1P(4.1m()/4.5.15):7;8 b=4.S(e,a)-20;6(i>0&&i<4.A)4.t.y(4.E,r.M(4.t.y(4.E))-b+\'T\');4.t.y(4.N,r.M(4.t.y(4.N))+b+\'T\');z e},1V:9(i){8 e=4.L(i);6(!e.I||(i>=4.A&&i<=4.G))z;8 d=4.S(e);6(i<4.A)4.t.y(4.E,r.M(4.t.y(4.E))+d+\'T\');e.1V();4.t.y(4.N,r.M(4.t.y(4.N))-d+\'T\')},17:9(){4.1C();6(4.O!=7&&!4.W)4.1T(F);10 4.1c(((4.5.B==\'1Z\'||4.5.B==\'G\')&&4.5.u!=7&&4.G==4.5.u)?1:4.A+4.5.1c)},11:9(){4.1C();6(4.O!=7&&4.W)4.1T(1h);10 4.1c(((4.5.B==\'1Z\'||4.5.B==\'A\')&&4.5.u!=7&&4.A==1)?4.5.u:4.A-4.5.1c)},1T:9(b){6(4.Q||4.14||!4.O)z;8 a=r.M(4.t.y(4.E));!b?a-=4.O:a+=4.O;4.W=!b;4.X=4.A;4.13=4.G;4.1i(a)},1c:9(i,a){6(4.Q||4.14)z;4.1i(4.1s(i),a)},1s:9(i){6(4.Q||4.14)z;6(4.5.B!=\'18\')i=i<1?1:(4.5.u&&i>4.5.u?4.5.u:i);8 a=4.A>i;8 b=r.M(4.t.y(4.E));8 f=4.5.B!=\'18\'&&4.A<=1?1:4.A;8 c=a?4.L(f):4.L(4.G);8 j=a?f:f-1;8 e=7,l=0,p=F,d=0;1n(a?--j>=i:++j<i){e=4.L(j);p=!e.I;6(e.I==0){e=4.1B(j).V(4.K(\'C-1a-1D\'));c[a?\'1z\':\'1X\'](e)}c=e;d=4.S(e);6(p)l+=d;6(4.A!=7&&(4.5.B==\'18\'||(j>=1&&(4.5.u==7||j<=4.5.u))))b=a?b+d:b-d}8 g=4.1m();8 h=[];8 k=0,j=i,v=0;8 c=4.L(i-1);1n(++k){e=4.L(j);p=!e.I;6(e.I==0){e=4.1B(j).V(4.K(\'C-1a-1D\'));c.I==0?4.t.2r(e):c[a?\'1z\':\'1X\'](e)}c=e;8 d=4.S(e);6(d==0){3f(\'3e: 3d 1H/26 3c 1r 3b. 3a 39 38 37 36 35. 34...\');z 0}6(4.5.B!=\'18\'&&4.5.u!==7&&j>4.5.u)h.33(e);10 6(p)l+=d;v+=d;6(v>=g)1p;j++}1r(8 x=0;x<h.I;x++)h[x].1V();6(l>0){4.t.y(4.N,4.S(4.t)+l+\'T\');6(a){b-=l;4.t.y(4.E,r.M(4.t.y(4.E))-l+\'T\')}}8 n=i+k-1;6(4.5.B!=\'18\'&&4.5.u&&n>4.5.u)n=4.5.u;6(j>n){k=0,j=n,v=0;1n(++k){8 e=4.L(j--);6(!e.I)1p;v+=4.S(e);6(v>=g)1p}}8 o=n-k+1;6(4.5.B!=\'18\'&&o<1)o=1;6(4.W&&a){b+=4.O;4.W=F}4.O=7;6(4.5.B!=\'18\'&&n==4.5.u&&(n-k+1)>=1){8 m=r.Y(4.L(n),!4.5.Z?\'1l\':\'1N\');6((v-m)>g)4.O=v-g-m}1n(i-->o)b+=4.S(4.L(i));4.X=4.A;4.13=4.G;4.A=o;4.G=n;z b},1i:9(p,a){6(4.Q||4.14)z;4.14=1h;8 b=4;8 c=9(){b.14=F;6(p==0)b.t.y(b.E,0);6(b.5.B==\'1Z\'||b.5.B==\'G\'||b.5.u==7||b.G<b.5.u)b.2j();b.1f();b.1M(\'2i\')};4.1M(\'31\');6(!4.5.1K||a==F){4.t.y(4.E,p+\'T\');c()}10{8 o=!4.5.Z?{\'24\':p}:{\'23\':p};4.t.1i(o,4.5.1K,4.5.2c,c)}},2j:9(s){6(s!=J)4.5.1q=s;6(4.5.1q==0)z 4.1C();6(4.1d!=7)z;8 a=4;4.1d=30(9(){a.17()},4.5.1q*2Z)},1C:9(){6(4.1d==7)z;2Y(4.1d);4.1d=7},1f:9(n,p){6(n==J||n==7){8 n=!4.Q&&4.5.u!==0&&((4.5.B&&4.5.B!=\'A\')||4.5.u==7||4.G<4.5.u);6(!4.Q&&(!4.5.B||4.5.B==\'A\')&&4.5.u!=7&&4.G>=4.5.u)n=4.O!=7&&!4.W}6(p==J||p==7){8 p=!4.Q&&4.5.u!==0&&((4.5.B&&4.5.B!=\'G\')||4.A>1);6(!4.Q&&(!4.5.B||4.5.B==\'G\')&&4.5.u!=7&&4.A==1)p=4.O!=7&&4.W}8 a=4;4.U[n?\'1u\':\'22\'](4.5.2m,4.2G)[n?\'1E\':\'V\'](4.K(\'C-17-1w\')).1J(\'1w\',n?F:1h);4.R[p?\'1u\':\'22\'](4.5.2k,4.2b)[p?\'1E\':\'V\'](4.K(\'C-11-1w\')).1J(\'1w\',p?F:1h);6(4.U.I>0&&(4.U[0].1g==J||4.U[0].1g!=n)&&4.5.1O!=7){4.U.1b(9(){a.5.1O(a,4,n)});4.U[0].1g=n}6(4.R.I>0&&(4.R[0].1g==J||4.R[0].1g!=p)&&4.5.1L!=7){4.R.1b(9(){a.5.1L(a,4,p)});4.R[0].1g=p}},1M:9(a){8 b=4.X==7?\'2a\':(4.X<4.A?\'17\':\'11\');4.12(\'2F\',a,b);6(4.X!==4.A){4.12(\'2B\',a,b,4.A);4.12(\'2z\',a,b,4.X)}6(4.13!==4.G){4.12(\'2x\',a,b,4.G);4.12(\'2v\',a,b,4.13)}4.12(\'2s\',a,b,4.A,4.G,4.X,4.13);4.12(\'2p\',a,b,4.X,4.13,4.A,4.G)},12:9(a,b,c,d,e,f,g){6(4.5[a]==J||(1R 4.5[a]!=\'2h\'&&b!=\'2i\'))z;8 h=1R 4.5[a]==\'2h\'?4.5[a][b]:4.5[a];6(!$.2W(h))z;8 j=4;6(d===J)h(j,c,b);10 6(e===J)4.L(d).1b(9(){h(j,4,d,c,b)});10{1r(8 i=d;i<=e;i++)6(i!==7&&!(i>=f&&i<=g))4.L(i).1b(9(){h(j,4,i,c,b)})}},1B:9(i){z 4.1I(\'<1F></1F>\',i)},1I:9(e,i){8 a=$(e).V(4.K(\'C-1a\')).V(4.K(\'C-1a-\'+i));a.1J(\'2V\',i);z a},K:9(c){z c+\' \'+c+(!4.5.Z?\'-2U\':\'-Z\')},S:9(e,d){8 a=e.2g!=J?e[0]:e;8 b=!4.5.Z?a.1x+r.Y(a,\'2f\')+r.Y(a,\'1l\'):a.2e+r.Y(a,\'2d\')+r.Y(a,\'1N\');6(d==J||b==d)z b;8 w=!4.5.Z?d-r.Y(a,\'2f\')-r.Y(a,\'1l\'):d-r.Y(a,\'2d\')-r.Y(a,\'1N\');$(a).y(4.N,w+\'T\');z 4.S(a)},1m:9(){z!4.5.Z?4.H[0].1x-r.M(4.H.y(\'2T\'))-r.M(4.H.y(\'2S\')):4.H[0].2e-r.M(4.H.y(\'2R\'))-r.M(4.H.y(\'3i\'))},2P:9(i,s){6(s==J)s=4.5.u;z 1k.2O((((i-1)/s)-1k.2N((i-1)/s))*s)+1}});r.16({3m:9(d){z $.16(q,d||{})},Y:9(e,p){6(!e)z 0;8 a=e.2g!=J?e[0]:e;6(p==\'1l\'&&$.2A.28){8 b={\'1y\':\'1A\',\'2M\':\'2L\',\'1H\':\'1q\'},1Y,1W;$.29(a,b,9(){1Y=a.1x});b[\'1l\']=0;$.29(a,b,9(){1W=a.1x});z 1W-1Y}z r.M($.y(a,p))},M:9(v){v=2K(v);z 2J(v)?0:v}})})(3v);',62,218,'||||this|options|if|null|var|function||||||||||||||||||||list|size||||css|return|first|wrap|jcarousel|container|lt|false|last|clip|length|undefined|className|get|intval|wh|tail|div|locked|buttonPrev|dimension|px|buttonNext|addClass|inTail|prevFirst|margin|vertical|else|prev|callback|prevLast|animating|visible|extend|next|circular|parent|item|each|scroll|timer|split|buttons|jcarouselstate|true|animate|initCallback|Math|marginRight|clipping|while|hasClass|break|auto|for|pos|setup|bind|fn|disabled|offsetWidth|display|before|block|create|stopAuto|placeholder|removeClass|li|reloadCallback|width|format|attr|animation|buttonPrevCallback|notify|marginBottom|buttonNextCallback|ceil|buttonPrevHTML|typeof|buttonNextHTML|scrollTail|funcResize|remove|oWidth2|after|oWidth|both|old|offset|unbind|top|left|start|height|window|safari|swap|init|funcPrev|easing|marginTop|offsetHeight|marginLeft|jquery|object|onAfterAnimation|startAuto|buttonPrevEvent|click|buttonNextEvent|ol|ul|itemVisibleOutCallback|reload|prepend|itemVisibleInCallback|nodeName|add|itemLastOutCallback|skin|itemLastInCallback|indexOf|itemFirstOutCallback|browser|itemFirstInCallback|empty|reset|resize|itemLoadCallback|funcNext|prototype|load|isNaN|parseInt|none|float|floor|round|index|swing|borderTopWidth|borderRightWidth|borderLeftWidth|horizontal|jcarouselindex|isFunction|normal|clearTimeout|1000|setTimeout|onBeforeAnimation|children|push|Aborting|loop|infinite|an|cause|will|This|items|set|No|jCarousel|alert|class|find|borderBottomWidth|append|html|string|defaults|OL|UL|new|has|unlock|lock|10px|0px|jQuery'.split('|'),0,{}))

$(document).ready(function() {

    $("#sponsorYear").click(function() {
        window.location = "/sitepages/sponsorobit.asp?pid=2&oid=" + document.location.search.substring(1).split('&')[0].split("=")[1];
    });
    $("#sponsorForever").click(function() {
        window.location = "/sitepages/sponsorobit.asp?pid=3&oid=" + document.location.search.substring(1).split('&')[0].split("=")[1];
    });
});
jQuery.fn.SMISCalendar = function(fnDateClick, params) {
    var dayArray = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
    this.SearchResults = null;
    this.DateList = null;

    this.DefaultAction = fnDateClick;
    this.DefaultParams = params;

    // these are labels for the days of the week
    this.cal_days_labels = new Array();
    this.cal_months_labels = new Array();
    //days Letters
    this.cal_days_labels[0] = getLabel("sun");
    this.cal_days_labels[1] = getLabel("mon");
    this.cal_days_labels[2] = getLabel("tue");
    this.cal_days_labels[3] = getLabel("wed");
    this.cal_days_labels[4] = getLabel("thu");
    this.cal_days_labels[5] = getLabel("fri");
    this.cal_days_labels[6] = getLabel("sat");

    //Month Label
    this.cal_months_labels[0] = getLabel("jan");
    this.cal_months_labels[1] = getLabel("feb");
    this.cal_months_labels[2] = getLabel("mar");
    this.cal_months_labels[3] = getLabel("apr");
    this.cal_months_labels[4] = getLabel("may");
    this.cal_months_labels[5] = getLabel("june");
    this.cal_months_labels[6] = getLabel("july");
    this.cal_months_labels[7] = getLabel("aug");
    this.cal_months_labels[8] = getLabel("sept");
    this.cal_months_labels[9] = getLabel("oct");
    this.cal_months_labels[10] = getLabel("nov");
    this.cal_months_labels[11] = getLabel("dec");

    // these are the number of days in each month, in order
    this.cal_days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

    // this sets the date to the selected date
    this.cal_current_date = new Date();
    if (queryString("dop") != 'false' && queryString("dop") != "") {
        var selectedDate = queryString("dop").split("/");
        var day = selectedDate[1];
        var month = selectedDate[0];
        var year = selectedDate[2];

        //if year is lesser than current 
        if (selectedDate[2] < this.cal_current_date.getFullYear()) {
            this.cal_current_date.setDate(parseInt(day));
            this.cal_current_date.setMonth(parseInt(month - 1));
            this.cal_current_date.setFullYear(parseInt(year));
        }
        //if year is equal to current year     
        else (selectedDate[2] == this.cal_current_date.getFullYear())
        {   //if the month is lesser than current
            if (selectedDate[0] <= this.cal_current_date.getMonth()) {
                //render the calendar with the given date 
                this.cal_current_date.setDate(parseInt(day));
                this.cal_current_date.setMonth(parseInt(month - 1));
                this.cal_current_date.setFullYear(parseInt(year));
            }
        }
    }

    // set the current month & year of the calendar.
    this.month = this.cal_current_date.getMonth();
    this.year = this.cal_current_date.getFullYear();
    this.selDate = formatDate(this.cal_current_date, "M/d/yyyy");

    MakeCalendar(this);

    function MakeCalendar(objCal) {
        if (objCal.DateList == null) {
            var loadingImg = $("<img />").attr("src", "/images/loading.gif").attr("align", "center").attr("alt", "Loading...");
            var loadingDiv = $("<div />").append(loadingImg).css("text-align", "center");

            objCal.html(loadingDiv);
            dateList = new Array();
            GenerateCalendar(objCal);
        }
        else {
            GenerateCalendar(objCal);
        }
    }

    function NextMonth(calObj) {
        calObj.month++;
        if (calObj.month > 11) {
            calObj.month = 0;
            calObj.year++;
        }
        calObj.DateList = null;
        MakeCalendar(calObj);
    }

    function PrevMonth(calObj) {
        calObj.month--;
        if (calObj.month < 0) {
            calObj.month = 11;
            calObj.year--;
        }
        calObj.DateList = null;
        MakeCalendar(calObj);
    }

    function getCookie(cookieName) {
        var cookieVaue = "";
        allCookies = document.cookie.split(";");
        for (i = 0; i < allCookies.length; i++) {
            cookieValuePairs = allCookies[i].split("=");
            //alert("'"+cookieName +"' == '"+ unescape(cookieValuePairs[0].replace(/^\s+|\s+$/g, '')) +"'");
            if (cookieName == (unescape(cookieValuePairs[0].replace(/^\s+|\s+$/g, '')))) {
                //found the cookie
                // alert("cookie found");
                return unescape(cookieValuePairs[1].replace(/^\s+|\s+$/g, ''));
                break;
            }

        }
        return null;
    }
    function GenerateCalendar(calObj) {
        var currentDate = new Date();
        calObj.html("");

        var headTbl = $("<div/>");
        var headRow = $("<div/>");
        var prevCell = $("<div/>").addClass("ylmprevCell");
        var monthCell = $("<div/>").addClass("ylmmonthCell"); ;
        var nextCell = $("<div/>").addClass("ylmnextCell"); ;
        var todayDate = new Date();

        headTbl.append(headRow);
        headRow.append(prevCell).append(monthCell).append(nextCell);
        headRow.addClass("ylmmonthHeader");

        monthCell.html(calObj.cal_months_labels[calObj.month] + " " + calObj.year);
        var prevLink = $("<a/>");
        var nextLink = $("<a/>");

        var prevLinkImg = $("<img/>").attr("src", "/images/calendar-arrow-left.png");
        var nextLinkImg = $("<img/>").attr("src", "/images/calendar-arrow-right.png");

        prevLink.append(prevLinkImg);
        prevLink.attr("href", "#");
        prevLink.attr("title", getLabel("prevlink"));
        prevLink.click(function() { PrevMonth(calObj); return false; });

        nextLink.html(nextLinkImg);
        nextLink.attr("href", "#");
        nextLink.attr("title", getLabel("nextlink"));
        nextLink.click(function() { NextMonth(calObj); return false; });

        prevCell.append(prevLink);

        //disable the click event if the month is greater than the current month or the year is higher
        if (calObj.month < currentDate.getMonth() || calObj.year < currentDate.getFullYear())
            nextCell.append(nextLink);

        calObj.append(headTbl);

        var calWrap = $("<div/>");
        calWrap.addClass("ylmsmisCalBorder");

        var cal = $('<div/>');
        var calRow = $('<tr/>');
        var calRowCell = $('<td/>');

        cal.addClass("ylmsmisCalendar");
        //generate sun mon tues........
        var weekDayDiv = $('<Div/>');
        weekDayDiv.addClass("ylmWeekDayDiv");

        var weekDayTable = $('<table cellspacing=\"0\" cellpadding=\"0\"/>');
        weekDayTable.addClass("ylmWeekDayTable");
        var weekdayRow = $("<tr/>");
        weekdayRow.addClass("ylmdayRow");
        $(calObj.cal_days_labels).each(function(i) {
            var weekdayCell = $("<td/>");
            weekdayCell.addClass("ylmdaysHeader");
            weekdayCell.html(calObj.cal_days_labels[i]);
            weekdayRow.append(weekdayCell);
        });
        weekDayTable.append(weekdayRow);
        weekDayDiv.append(weekDayTable);
        calRowCell.append(weekDayDiv);
        calRow.append(calRowCell)

        cal.append(weekDayTable);

        var insideTable = $("<table cellspacing=\"1\" cellpadding=\"0\" />");

        // generate the days of the week:
        startingDay = GetFirstDayOfMonth(calObj.month, calObj.year);

        var day = 1;
        var daysInMonth = calObj.cal_days_in_month[calObj.month];
        if (calObj.month == 1) {
            if (calObj.year % 4 == 0) {
                if (calObj.year % 100 != 0) {
                    daysInMonth++;
                }
            }
        }

        for (i = 0; i < 9 && day < daysInMonth; i++) {
            var dateRow = $("<tr/>");
            for (j = 0; j < 7; j++) {
                var dateCell = $("<td/>");
                dateCell.addClass("ylmdates");
                if (day <= daysInMonth && (i > 0 || j >= startingDay)) {
                    if (queryString("dop") != 'false' && queryString("dop") != "") {
                        //highlight Selected date
                        if (queryString("dop") == (((calObj.month + 1) < 10 ? ("0" + (calObj.month + 1)) : (calObj.month + 1)) + "/" + (day < 10 ? ("0" + day) : day) + "/" + calObj.year)) {
                            dateCell.addClass("ylmCurrentDate");
                        }
                    }

                    var dateLinkDiv = $("<div/>");
                    var dateLink;
                    //alert("initial " + calObj.month + " == " + todayDate.getMonth() + " && " + calObj.year + " == " + todayDate.getFullYear() + " && " + day + " == " + todayDate.getDate() + " && " + (todayDate.getUTCHours() - (todayDate.getTimezoneOffset()/60)));
                    //if the month is greater then dont add <a> tag
                    if (calObj.month > currentDate.getMonth() && calObj.year > currentDate.getFullYear())
                        dateCell.toggleClass("ylmdatesWhite");
                    else if (calObj.month == currentDate.getMonth()) {
                        //if the month is current month check date to diable the higher dates
                        if (day > currentDate.getDate() && calObj.year >= currentDate.getFullYear()) {
                            dateLinkDiv.html(day);
                            dateCell.toggleClass("ylmdatesWhite");
                        }
                        else {
                            //if its today and before 6am
                            if (calObj.month == todayDate.getMonth() && calObj.year == todayDate.getFullYear() && day == todayDate.getDate() && todayDate.getUTCHours() - (todayDate.getTimezoneOffset()/60) < 6) {
                                dateLinkDiv.html(day);
                                dateCell.toggleClass("ylmdatesWhite");
                            }
                            else {
                                dateLink = $("<a/>").html(day).attr("href", "#").appendTo(dateLinkDiv);
                            }
                        }
                    }
                    else {
                        //if its today and before 6am
                        if (calObj.month == todayDate.getMonth() && calObj.year == todayDate.getFullYear() && day == todayDate.getDate() && todayDate.getUTCHours() - (todayDate.getTimezoneOffset()/60) < 6) {
                            dateLinkDiv.html(day);
                            dateCell.toggleClass("ylmdatesWhite");
                        }
                        else {
                            dateLink = $("<a/>").html(day).attr("href", "#").appendTo(dateLinkDiv);
                        }
                    }

                    dateCell.append(dateLinkDiv);
                    day++;
                }
                else {
                    dateCell.addClass("ylmnoDay");
                    dateCell.html("&nbsp;");
                }
                dateRow.append(dateCell);
                var curDate = new Date(calObj.year, calObj.month, day - 1);
            }
            insideTable.append(dateRow);
        }
        //cal.append(insideRowWithTable);
        cal.append(insideTable);

        var allDateLinks = $(cal).find("td.ylmdates a");
        $.each(allDateLinks, function(x) {
            var dtSel = calObj.month + 1 + "/" + (x + 1) + "/" + calObj.year;

            $(allDateLinks[x]).click(function(evt) {
                if (calObj.DefaultAction == null) {
                    evt.preventDefault();
                    $(cal).find("td.current").removeClass("current");
                    $(allDateLinks[x]).parent().parent().addClass("current");
                    calObj.selDate = dtSel;
                    ListEvents(dtSel);
                }
                else {
                    if (calObj.DefaultParams != null) {
                        calObj.DefaultAction(dtSel, calObj.DefaultParams);
                    }
                    else {
                        calObj.DefaultAction(dtSel);
                    }
                }
            });
        });


        calWrap.append(cal);
        calObj.append(calWrap);
        var divCap = $("<div/>");
        divCap.addClass("ylmsmisCalBotCap");
        calObj.append(divCap);
    }

    function ListEvents(dateSelected) {
        if (dateSelected) {
            var mydate = dateSelected.split("/");
            var month = mydate[0];
            var day = mydate[1];
            var year = mydate[2];
            //put in mm/dd/yyyy format 
            if (day < 10) { day = '0' + day }
            if (month < 10) { month = '0' + month }
            //alert(getCookie("city_id"));
            var qryString = "/sitepages/results.asp?dop=" + month + "/" + day + "/" + year + "&ylmCID=" + getCookie("city_id") + "&calSearch=1";
            //alert(qryString);
            window.location = qryString;

        }
    }

    function GetFirstDayOfMonth(month, year) {
        var dtFirstDay = new Date(year, month, 1);
        return dtFirstDay.getDay();
    }
    function PageQuery(q) {
        if (q.length > 1) this.q = q.substring(1, q.length);
        else this.q = null;
        this.keyValuePairs = new Array();
        if (q) {
            for (var i = 0; i < this.q.split("&").length; i++) {
                this.keyValuePairs[i] = this.q.split("&")[i];
            }
        }
        this.getKeyValuePairs = function() { return this.keyValuePairs; }
        this.getValue = function(s) {
            for (var j = 0; j < this.keyValuePairs.length; j++) {
                if (this.keyValuePairs[j].split("=")[0] == s)
                    return this.keyValuePairs[j].split("=")[1];
            }
            return false;
        }
        this.getParameters = function() {
            var a = new Array(this.getLength());
            for (var j = 0; j < this.keyValuePairs.length; j++) {
                a[j] = this.keyValuePairs[j].split("=")[0];
            }
            return a;
        }
        this.getLength = function() { return this.keyValuePairs.length; }
    }
    function queryString(key) {
        var page = new PageQuery(window.location.search);
        return unescape(page.getValue(key));
    }

};
$(document).ready(function() {
    $("#YLMleftRailCalendar").SMISCalendar(null, null);
});
// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. 
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

// HISTORY
// ------------------------------------------------------------------
// May 17, 2003: Fixed bug in parseDate() for dates <1970
// March 11, 2003: Added parseDate() function
// March 11, 2003: Added "NNN" formatting option. Doesn't match up
//                 perfectly with SimpleDateFormat formats, but 
//                 backwards-compatability was required.

// ------------------------------------------------------------------
// These functions use the same 'format' strings as the 
// java.text.SimpleDateFormat class, with minor exceptions.
// The format string consists of the following abbreviations:
// 
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
//              | NNN (abbr.)        |
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Day of Week  | EE (name)          | E (abbr)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |
//
// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
// ------------------------------------------------------------------

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}

// ------------------------------------------------------------------
// isDate ( date_string, format_string )
// Returns true if date string matches format of format string and
// is a valid date. Else returns false.
// It is recommended that you trim whitespace around the value before
// passing it to this function, as whitespace is NOT ignored!
// ------------------------------------------------------------------
function isDate(val,format) {
	var date=getDateFromFormat(val,format);
	if (date==0) { return false; }
	return true;
	}

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
		}
	else if (d1 > d2) {
		return 1;
		}
	return 0;
	}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}
	
// ------------------------------------------------------------------
// Utility functions for parsing in getDateFromFormat()
// ------------------------------------------------------------------
function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
	}
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
		}
	return null;
	}
	
// ------------------------------------------------------------------
// getDateFromFormat( date_string , format_string )
//
// This function takes a date string and a format string. It matches
// If the date string matches the format string, it returns the 
// getTime() of the date. If it does not match, it returns 0.
// ------------------------------------------------------------------
function getDateFromFormat(val,format) {
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=1;
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";
	
	while (i_format < format.length) {
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		// Extract contents of value based on format token
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { x=4;y=4; }
			if (token=="yy")   { x=2;y=2; }
			if (token=="y")    { x=2;y=4; }
			year=_getInt(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
				}
			}
		else if (token=="MMM"||token=="NNN"){
			month=0;
			for (var i=0; i<MONTH_NAMES.length; i++) {
				var month_name=MONTH_NAMES[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					if (token=="MMM"||(token=="NNN"&&i>11)) {
						month=i+1;
						if (month>12) { month -= 12; }
						i_val += month_name.length;
						break;
						}
					}
				}
			if ((month < 1)||(month>12)){return 0;}
			}
		else if (token=="EE"||token=="E"){
			for (var i=0; i<DAY_NAMES.length; i++) {
				var day_name=DAY_NAMES[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
					}
				}
			}
		else if (token=="MM"||token=="M") {
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
		else if (token=="dd"||token=="d") {
			date=_getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;}
		else if (token=="hh"||token=="h") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>12)){return 0;}
			i_val+=hh.length;}
		else if (token=="HH"||token=="H") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>23)){return 0;}
			i_val+=hh.length;}
		else if (token=="KK"||token=="K") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>11)){return 0;}
			i_val+=hh.length;}
		else if (token=="kk"||token=="k") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>24)){return 0;}
			i_val+=hh.length;hh--;}
		else if (token=="mm"||token=="m") {
			mm=_getInt(val,i_val,token.length,2);
			if(mm==null||(mm<0)||(mm>59)){return 0;}
			i_val+=mm.length;}
		else if (token=="ss"||token=="s") {
			ss=_getInt(val,i_val,token.length,2);
			if(ss==null||(ss<0)||(ss>59)){return 0;}
			i_val+=ss.length;}
		else if (token=="a") {
			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
			else {return 0;}
			i_val+=2;}
		else {
			if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
			else {i_val+=token.length;}
			}
		}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { return 0; }
	// Is date valid for month?
	if (month==2) {
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
			if (date > 29){ return 0; }
			}
		else { if (date > 28) { return 0; } }
		}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { return 0; }
		}
	// Correct hours value
	if (hh<12 && ampm=="PM") { hh=hh-0+12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();
	}

// ------------------------------------------------------------------
// parseDate( date_string [, prefer_euro_format] )
//
// This function takes a date string and tries to match it to a
// number of possible date formats to get the value. It will try to
// match against the following international formats, in this order:
// y-M-d   MMM d, y   MMM d,y   y-MMM-d   d-MMM-y  MMM d
// M/d/y   M-d-y      M.d.y     MMM-d     M/d      M-d
// d/M/y   d-M-y      d.M.y     d-MMM     d/M      d-M
// A second argument may be passed to instruct the method to search
// for formats like d/M/y (european format) before M/d/y (American).
// Returns a Date object or null if no patterns match.
// ------------------------------------------------------------------
function parseDate(val) {
	var preferEuro=(arguments.length==2)?arguments[1]:false;
	generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');
	monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');
	dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');
	var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');
	var d=null;
	for (var i=0; i<checkList.length; i++) {
		var l=window[checkList[i]];
		for (var j=0; j<l.length; j++) {
			d=getDateFromFormat(val,l[j]);
			if (d!=0) { return new Date(d); }
			}
		}
	return null;
	}


var o2s = {
    millisecond   : 1,
    second        : 1000,                       //1000 milliseconds
    minute        : 1000 * 60,                  // 60 seconds
    hour          : 1000 * 60 * 60,             // 60 minutes
    day           : 1000 * 60 * 60 * 24,        // 24 hours
    week          : 1000 * 60 * 60 * 24 * 7,    // 7 days
    year          : 1000 * 60 * 60 * 24 * 365,  // 365 days
    
    // ***********************************************
    //   DATE ADD
    // 
    //  Adds a specified amout of the specified unit to a date.
    //    Usage:  o2s.dateAdd("unit", amount, base_date);
    //
    //    Units:  ms  - milliseconds      d - days
    //            s   - seconds           w - weeks
    //            i   - minutes           y - years
    //            h   - hours
    //
    //  Returns a new date object.
    // ***********************************************
    dateAdd   : function (unit, amt, date) {
    var diff = 0;
    switch (unit.toLowerCase()) {
        case "ms"   : { diff = amt * this.millisecond; break;};
        case "s"    : { diff = amt * this.second; break;};
        case "i"    : { diff = amt * this.minute; break;};
        case "h"    : { diff = amt * this.hour; break;};
        case "d"    : { diff = amt * this.day; break;};
        case "w"    : { diff = amt * this.week; break;};
        case "y"    : { diff = amt * this.year; break;};
        default     : { return 0; };
      };
      var date = parseDate(date);
      var mills = (date) ? date.getTime() + diff: diff;
      var nd = new Date();
      nd.setTime(mills);
      return nd;
    }
};
// JScript File
var isNewPage= location.href.match("results");
     $(document).ready(function() {
          $("#ylmSearchCity").SMISCityAutoComplete("","ylmCID","/services/cityList.asp?s=");
          $("#ylmSearchCity").hint();
      });
      
   
 function nameCheckNew()
     {
     var dateStr=$("#datepicker").val();
       if(jQuery.trim( dateStr )!="")
       {
        var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
        var matchArray = dateStr.match(datePat); // is the format ok?
       if (matchArray != null)  
       { 
        month = matchArray[1]; // p@rse date into variables
        day = matchArray[3];
        year = matchArray[5];
        var myDate=new Date();
        myDate.setMonth(month-1);
        myDate.setFullYear(year);
        myDate.setDate(day);
        var today = new Date();

        if (myDate > today)
         {
               alert("Please enter a valid date");
                return false;
         }   
        }
        else
        {
            alert("Please enter a valid date"); 
            return false;
        
        }
        }
        if (document.search.lname.value == "Keywords")
        {
            document.search.lname.value = "";
            /*if (document.search.dop.value == 'Date')
            {
                var today = new Date();
                var dd = today.getDate();
                var mm = today.getMonth()+1;//January is 0!
                var yyyy = today.getFullYear();
                if(dd<10){dd='0'+dd}
                if(mm<10){mm='0'+mm}
                var curDate = mm+'/'+dd+'/'+yyyy;
                document.search.dop.value = curDate;
            }   */
          return true;
        }
        /*else if (document.search.dop.value == "Date")
        {
            var today = new Date();
            var dd = today.getDate();
            var mm = today.getMonth()+1;//January is 0!
            var yyyy = today.getFullYear();
            if(dd<10){dd='0'+dd}
            if(mm<10){mm='0'+mm}
            var curDate = mm+'/'+dd+'/'+yyyy;
            document.search.dop.value = curDate;
            return true;
        }*/
        return true;
    }
    
    function CityCheck(form)
    {

    if($("#ylmCID").attr("value")=="0") 
        {
           var ylmCityName=$("#ylmSearchCity").attr("value");
           var searchLetter="a";
           var province="";
           var myArray = ylmCityName.split(",");
           if(myArray.length>1)
           {
             searchLetter=(jQuery.trim(myArray[0])).toUpperCase();
           }
           else
           {
             searchLetter=(jQuery.trim(myArray[0])).toUpperCase();
             province=jQuery.trim(myArray[1]);
           }
           var mySplitResult = ylmCityName.split(",");
 
          $.getJSON("/services/CityList.asp?s=" + searchLetter, function(data) {  
         
             for(var i = 0; i < data.cities.length;i++)
             {
                if(data.cities[i].name==searchLetter)
                {   
                    if(province!="")
                    {
                        if(oCityList.cities[i].prov==jQuery.trim(myArray[1]))
                        {
                            $("#ylmCID").attr("value", data.cities[i].cityID);
                        }
                    }
                    else
                    {
                        $("#ylmCID").attr("value", data.cities[i].cityID);
                    }
                }
             }
            if(nameCheckNew())
            { 
                document.search.submit();
             }

            });
         
        }
        else
        {
             if(nameCheckNew())
            { 
                document.search.submit();
             }
        
        }
    }
$(document).ready(function() {
$('#charityCarousel').css("visibility", "visible");
    charityCarouselFunctions();
    
});

function charityCarouselFunctions() {
    var thisCarousel = null;
    
    $('#charityCarousel').jcarousel({
        initCallback: initCallbackFunction,
        vertical: true,
        scroll: 10
    });

    function initCallbackFunction(carousel, state) {
        thisCarousel = carousel;
    }
}


$(document).ready(function() {

    funeralCarouselFunctions();
    $('#funeralCarousel').css("visibility", "visible");
});

function funeralCarouselFunctions() {
    var thisCarousel = null;

    $('#funeralCarousel').jcarousel({
        initCallback: initCallbackFunction,
        vertical: true,
        scroll: 5
    });

    function initCallbackFunction(carousel, state) {
        thisCarousel = carousel;
    }
    
}


// JScript File
var isNewPage= location.href.match("results");
     $(document).ready(function() {
          $("#ylmSearchCity").SMISCityAutoComplete("","ylmCID","/services/cityList.asp?s=");
          $("#ylmSearchCity").hint();
      });
      
   
 function nameCheckNew()
     {
     var dateStr=$("#datepicker").val();
       if(jQuery.trim( dateStr )!="")
       {
        var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
        var matchArray = dateStr.match(datePat); // is the format ok?
       if (matchArray != null)  
       { 
        month = matchArray[1]; // p@rse date into variables
        day = matchArray[3];
        year = matchArray[5];
        var myDate=new Date();
        myDate.setMonth(month-1);
        myDate.setFullYear(year);
        myDate.setDate(day);
        var today = new Date();

        if (myDate > today)
         {
               alert("Please enter a valid date");
                return false;
         }   
        }
        else
        {
            alert("Please enter a valid date"); 
            return false;
        
        }
        }
        if (document.search.lname.value == "Keywords")
        {
            document.search.lname.value = "";
            /*if (document.search.dop.value == 'Date')
            {
                var today = new Date();
                var dd = today.getDate();
                var mm = today.getMonth()+1;//January is 0!
                var yyyy = today.getFullYear();
                if(dd<10){dd='0'+dd}
                if(mm<10){mm='0'+mm}
                var curDate = mm+'/'+dd+'/'+yyyy;
                document.search.dop.value = curDate;
            }   */
          return true;
        }
        /*else if (document.search.dop.value == "Date")
        {
            var today = new Date();
            var dd = today.getDate();
            var mm = today.getMonth()+1;//January is 0!
            var yyyy = today.getFullYear();
            if(dd<10){dd='0'+dd}
            if(mm<10){mm='0'+mm}
            var curDate = mm+'/'+dd+'/'+yyyy;
            document.search.dop.value = curDate;
            return true;
        }*/
        return true;
    }
    
    function CityCheck(form)
    {

    if($("#ylmCID").attr("value")=="0") 
        {
           var ylmCityName=$("#ylmSearchCity").attr("value");
           var searchLetter="a";
           var province="";
           var myArray = ylmCityName.split(",");
           if(myArray.length>1)
           {
             searchLetter=(jQuery.trim(myArray[0])).toUpperCase();
           }
           else
           {
             searchLetter=(jQuery.trim(myArray[0])).toUpperCase();
             province=jQuery.trim(myArray[1]);
           }
           var mySplitResult = ylmCityName.split(",");
 
          $.getJSON("/services/CityList.asp?s=" + searchLetter, function(data) {  
         
             for(var i = 0; i < data.cities.length;i++)
             {
                if(data.cities[i].name==searchLetter)
                {   
                    if(province!="")
                    {
                        if(oCityList.cities[i].prov==jQuery.trim(myArray[1]))
                        {
                            $("#ylmCID").attr("value", data.cities[i].cityID);
                        }
                    }
                    else
                    {
                        $("#ylmCID").attr("value", data.cities[i].cityID);
                    }
                }
             }
            if(nameCheckNew())
            { 
                document.search.submit();
             }

            });
         
        }
        else
        {
             if(nameCheckNew())
            { 
                document.search.submit();
             }
        
        }
    }
jQuery.fn.SMISCityAutoComplete = function(max,cityName,service) {
    var selIdx = 0;
    var oCityList = null;
    var sFirstLetter = "";
    var hasFocus = false;
    
    var maxDisp
    
    if(max)
    {
        if(Number(max))
        {
            maxDisp = new Array(max);
        }
        else
        {
            maxDisp = new Array(10);
        }
    }
    else
    {
        maxDisp = new Array(10);
    }
    
    for(i = 0; i < maxDisp.length; i++)
    {
        maxDisp[i] = i;
    }
    
    
    var inpt = this;
    
    inpt
    .keyup(function(e) {
        if(e.keyCode == 27)
        {
            e.preventDefault();
            return;
        }
        GetCities($(this));
    })
    .keydown(function(e) {
        switch(e.keyCode) {
            case 38:    // up arrow
                e.preventDefault();
                MoveSel($(this), -1);
                break;
            case 40:    // down arrow
                e.preventDefault();
                MoveSel($(this), 1);
                break;
            case 9:     // tab
            case 13:    // return
                e.preventDefault();
                FillText($(this));
                break;
            case 27:
                e.preventDefault();
                $("#" + $(this).attr("id") + "_CityList").remove();
                break;
            default:
                break;
        }
    })
    .focus(function() {
        hasFocus = true;
    })
    .blur(function() {
        hasFocus = false;
    });
    
    function GetCities(oSrc)
    {
  
        var sVal = oSrc.val();

        if(sVal.length == 0)
        {
            sFirstLetter = "";
            oCityList = null;
            selIdx = 0;
            ShowCities(oSrc);
            return;
        }
        
        var searchLetter = sVal.substring(0,1);
        if(Number(searchLetter))
        {
            searchLetter = "NUM";
        }
        else
        {
            if(searchLetter.toUpperCase() < 'A' || searchLetter.toUpperCase() > 'Z')
            {
                searchLetter = "A";
            }
        }

        
        if(sFirstLetter != searchLetter)
        {
            sFirstLetter = searchLetter
            oCityList = null;
        }
        
        if(oCityList == null)
        {
            $.getJSON(service + searchLetter, function(data) {
                oCityList = data;
                selIdx = 0;
                ShowCities(oSrc);
            });
        }
        else
        {
            ShowCities(oSrc);
        }
    }
    
    function ShowCities(oSrc)
    {
        $("#" + oSrc.attr("id") + "_CityList").remove();
        if(oCityList == null)
        {
            return;
        }
        // Generate List:
        var iFound = 0;
        var uList = $("<ul/>");
        uList.attr("id", oSrc.attr("id") + "_CityList");
        uList.css("border", "solid 1px #888888");
        uList.css("position", "absolute");
        uList.css("list-style-type", "none");
        //
        var browserName=navigator.appName;
         if (browserName=="Microsoft Internet Explorer")
        {
            uList.css("margin-left", "-194px");
            uList.css("margin-top", "28px");
        }
        else
        {
            uList.css("margin", "0px 0px 0px 8px");
        }

     
        uList.css("padding", "0");
        uList.css("background-color", "#fff");
        uList.css("color", "#000");
        uList.addClass("smisAutoComplete");
        uList.css("z-index", "100");
        
   

        for(var i = 0; i < oCityList.cities.length && iFound < maxDisp.length; i++)
        {
            if(oCityList.cities[i].name.substring(0, oSrc.val().length) == oSrc.val().toUpperCase())
            {
                var item = $("<li/>");
                item.css("cursor", "default");
                $(maxDisp).each(function(i){
                    if(iFound == i)
                    {
                        item.mousemove(function(e, iFound){ onMouseMove(oSrc, $(this), maxDisp[i]); });
                    }
                });
                    
                
                item.click(function(e) { onClick(oSrc); });
                
                if(iFound == selIdx)
                {
                    item.addClass("ylmHighlight");
                }
                else
                {
                    item.removeClass("ylmHighlight");
                }
                item.html(oCityList.cities[i].name + ", " + oCityList.cities[i].prov);
                uList.append(item);
                iFound++;
            }
        }
        if(selIdx > iFound)
        {
            selIdx = iFound;
            $(uList.children()[selIdx]).addClass("ylmHighlight");
        }
        if(iFound > 0)
        {
            uList.insertAfter(oSrc);
            if(uList.width() < 194)
            {
                uList.width(194);
            }
        }
    }
    function FillText(oSrc)
    {

        var listing = $("#" + oSrc.attr("id") + "_CityList");
        for(i = 0; i < listing.children().length; i++)
        {
            if(i == selIdx)
            {
            var ylmCityName=$(listing.children()[i]).html();
            var myArray = ylmCityName.split(",");
            var mySplitResult = ylmCityName.split(",");

           for(var i = 0; i < oCityList.cities.length;i++)
             {
                if(oCityList.cities[i].name==myArray[0])
                {   
               
                    if(oCityList.cities[i].prov==jQuery.trim(myArray[1]))
                    {
                        $("#"+cityName).attr("value", oCityList.cities[i].cityID);

                    }
                }
             } 
              oSrc.val(ylmCityName);
            }
        }
        listing.remove();
    }
    function MoveSel(oSrc, dir)
    {
        var listing = $("#" + oSrc.attr("id") + "_CityList");
        // move up:
        if(dir == -1)
        {
            if(selIdx > 0)
            {
                selIdx --;
            }
        }
        else if(dir == 1)
        {
            if(selIdx < listing.children().length - 1)
            {
                selIdx ++;
            }
        }
        
        for(i = 0; i < listing.children().length; i++)
        {
            if(selIdx == i)
            {
                $(listing.children()[i]).addClass("ylmHighlight");
            }
            else
            {
                $(listing.children()[i]).removeClass("ylmHighlight");
            }
        }
    }
    function onMouseMove(oSrc, oDest, idx) {
        var listing = $("#" + oSrc.attr("id") + "_CityList");
        for(i = 0; i < listing.children().length; i++)
        {
            $(listing.children()[i]).removeClass("ylmHighlight");
            
        }
        selIdx = idx;
        oDest.addClass("ylmHighlight");
        
    }
    function onClick(oSrc)
    {
        FillText(oSrc);
        $("#" + oSrc.attr("id") + "_CityList").remove();
    }
};
arrCtry = new Array();
arrCtry["AFGHANISTAN"] = ["", []];
arrCtry["ALBANIA"] = ["", []];
arrCtry["ALGERIA"] = ["", []];
arrCtry["AMERICAN SAMOA"] = ["", []];
arrCtry["ANDORRA"] = ["", []];
arrCtry["ANGOLA"] = ["", []];
arrCtry["ANGUILLA"] = ["", []];
arrCtry["ANTARCTICA"] = ["", []];
arrCtry["ANTIGUA &amp;BARBUDA"] = ["", []];
arrCtry["ARGENTINA"] = ["", []];
arrCtry["ARMENIA"] = ["", []];
arrCtry["ARUBA"] = ["", []];
arrCtry["AUSTRALIA"] = ["", [['Australian Capital Territory (ACT)', 'ACT'],['New South Wales (NSW)', 'NSW'],['Northern Territory (NT)', 'NT'],['Queensland (QLD)', 'QLD'],['South Australia (SA)', 'SA'],['Tasmania (TAS)', 'TAS'],['Victoria (VIC)', 'VIC'],['Western Australia (WA)', 'WA']]];
arrCtry["AUSTRIA"] = ["", []];
arrCtry["AZERBAIJAN"] = ["", []];
arrCtry["BAHAMAS"] = ["", []];
arrCtry["BAHRAIN"] = ["", []];
arrCtry["BANGLADESH"] = ["", []];
arrCtry["BARBADOS"] = ["", []];
arrCtry["BELARUS"] = ["", []];
arrCtry["BELGIUM"] = ["", []];
arrCtry["BELIZE"] = ["", []];
arrCtry["BENIN"] = ["", []];
arrCtry["BERMUDA"] = ["", []];
arrCtry["BHUTAN"] = ["", []];
arrCtry["BOLIVIA"] = ["", []];
arrCtry["BOSNIA-HERZEGOVINA"] = ["", []];
arrCtry["BOTSWANA"] = ["", []];
arrCtry["BRAZIL"] = ["", []];
arrCtry["BRUNEI"] = ["", []];
arrCtry["BULGARIA"] = ["", []];
arrCtry["BURKINA FASO"] = ["", []];
arrCtry["BURUNDI"] = ["", []];
arrCtry["CAMBODIA"] = ["", []];
arrCtry["CAMEROON"] = ["", []];
arrCtry["CANADA"] = ["Province", [['Alberta (AB)', 'AB'],['Armed Forces Canada (AE)', 'AE'],['British Columbia (BC)', 'BC'],['Manitoba (MB)', 'MB'],['New Brunswick (NB)', 'NB'],['Newfoundland (NL)', 'NL'],['Northwest Territories (NT)', 'NT'],['Nova Scotia (NS)', 'NS'],['Nunavut (NU)', 'NU'],['Ontario (ON)', 'ON'],['Prince Edward IS (PE)', 'PE'],['Quebec (QC)', 'QC'],['Saskatchewan (SK)', 'SK'],['Yukon (YT)', 'YT']]];
arrCtry["CAPE VERDE"] = ["", []];
arrCtry["CAYMAN ISS"] = ["", []];
arrCtry["CHAD"] = ["", []];
arrCtry["CHANNEL ISS"] = ["", []];
arrCtry["CHILE"] = ["", []];
arrCtry["CHINA"] = ["", []];
arrCtry["CHRISTMAS IS"] = ["", []];
arrCtry["COCOS(KEELING) ISS"] = ["", []];
arrCtry["COLOMBIA"] = ["", []];
arrCtry["COMOROS"] = ["", []];
arrCtry["CONGO"] = ["", []];
arrCtry["CONGO (DEMOCRATIC REPUBLIC)"] = ["", []];
arrCtry["COOK ISS"] = ["", []];
arrCtry["COSTA RICA"] = ["", []];
arrCtry["CROATIA"] = ["", []];
arrCtry["CUBA"] = ["", []];
arrCtry["CYPRUS"] = ["", []];
arrCtry["CZECH REPUBLIC"] = ["", []];
arrCtry["DENMARK"] = ["", []];
arrCtry["DJIBOUTI"] = ["", []];
arrCtry["DOMINICA"] = ["", []];
arrCtry["DOMINICAN REPUBLIC"] = ["", []];
arrCtry["E. TIMOR"] = ["", []];
arrCtry["ECUADOR"] = ["", []];
arrCtry["EGYPT"] = ["", []];
arrCtry["EL SALVADOR"] = ["", []];
arrCtry["ENGLAND"] = ["County", [['Avon (AVN)', 'AVN'],['Bedfordshire (BDF)', 'BDF'],['Berkshire (BRK)', 'BRK'],['Buckinghamshire (BKM)', 'BKM'],['Cambridgeshire (CAM)', 'CAM'],['Cheshire (CHS)', 'CHS'],['Cleveland (CLV)', 'CLV'],['Co. Durham (DUR)', 'DUR'],['Cornwall (CON)', 'CON'],['Cumberland (CUL)', 'CUL'],['Cumbria (CMA)', 'CMA'],['Derbyshire (DBY)', 'DBY'],['Devon (DEV)', 'DEV'],['Dorset (DOR)', 'DOR'],['E Riding of Yorkshire (ERY)', 'ERY'],['E Sussex (SXE)', 'SXE'],['Essex (ESS)', 'ESS'],['Gloucestershire (GLS)', 'GLS'],['Greater London (LND)', 'LND'],['Greater Manchester (GTM)', 'GTM'],['Hampshire (HAM)', 'HAM'],['Hereford and Worcester (HWR)', 'HWR'],['Herefordshire (HEF)', 'HEF'],['Hertfordshire (HRT)', 'HRT'],['Humberside (HUM)', 'HUM'],['Huntingdonshire (HUN)', 'HUN'],['Isle of Wight (IOW)', 'IOW'],['Kent (KEN)', 'KEN'],['Lancashire (LAN)', 'LAN'],['Leicestershire (LEI)', 'LEI'],['Lincolnshire (LIN)', 'LIN'],['Merseyside (MSY)', 'MSY'],['N Riding of Yorkshire (NRY)', 'NRY'],['N Yorkshire (NYK)', 'NYK'],['Norfolk (NFK)', 'NFK'],['Northamptonshire (NTH)', 'NTH'],['Northumberland (NBL)', 'NBL'],['Nottinghamshire (NTT)', 'NTT'],['Oxfordshire (OXF)', 'OXF'],['Rutland (RUT)', 'RUT'],['S Yorkshire (SYK)', 'SYK'],['Shropshire (SAL)', 'SAL'],['Somerset (SOM)', 'SOM'],['Staffordshire (STS)', 'STS'],['Suffolk (SFK)', 'SFK'],['Surrey (SRY)', 'SRY'],['Sussex (SSX)', 'SSX'],['Tyne and Wear (TWR)', 'TWR'],['W Midlands (WMD)', 'WMD'],['W Riding of Yorkshire (WRY)', 'WRY'],['W Sussex (SXW)', 'SXW'],['W Yorkshire (WYK)', 'WYK'],['Warwickshire (WAR)', 'WAR'],['Westmorland (WES)', 'WES'],['Wiltshire (WIL)', 'WIL'],['Worcestershire (WOR)', 'WOR'],['Yorkshire (YKS)', 'YKS']]];
arrCtry["EQUATORIAL GUINEA"] = ["", []];
arrCtry["ERITREA"] = ["", []];
arrCtry["ESTONIA"] = ["", []];
arrCtry["ETHIOPIA"] = ["", []];
arrCtry["FAEROE (FAROE) ISS"] = ["", []];
arrCtry["FALKLAND ISS"] = ["", []];
arrCtry["FIJI"] = ["", []];
arrCtry["FINLAND"] = ["", []];
arrCtry["FRANCE"] = ["", []];
arrCtry["FRENCH GUYANA"] = ["", []];
arrCtry["FRENCH POLYNESIA"] = ["", []];
arrCtry["GABON"] = ["", []];
arrCtry["GAMBIA"] = ["", []];
arrCtry["GEORGIA"] = ["", []];
arrCtry["GERMANY"] = ["", []];
arrCtry["GHANA"] = ["", []];
arrCtry["GIBRALTAR"] = ["", []];
arrCtry["GREAT BRITAIN"] = ["County", [['Aberdeenshire (ABD)', 'ABD'],['Alderney (ALD)', 'ALD'],['Anglesey (AGY)', 'AGY'],['Angus (ANS)', 'ANS'],['Argyllshire (ARL)', 'ARL'],['Avon (AVN)', 'AVN'],['Ayrshire (AYR)', 'AYR'],['Banffshire (BAN)', 'BAN'],['Bedfordshire (BDF)', 'BDF'],['Berkshire (BRK)', 'BRK'],['Berwickshire (BEW)', 'BEW'],['Borders (BOR)', 'BOR'],['Breconshire (BRE)', 'BRE'],['Buckinghamshire (BKM)', 'BKM'],['Bute (BUT)', 'BUT'],['Caernarvonshire (CAE)', 'CAE'],['Caithness (CAI)', 'CAI'],['Cambridgeshire (CAM)', 'CAM'],['Cardiganshire (CGN)', 'CGN'],['Carmarthenshire (CMN)', 'CMN'],['Central (CEN)', 'CEN'],['Cheshire (CHS)', 'CHS'],['Clackmannanshire (CLK)', 'CLK'],['Cleveland (CLV)', 'CLV'],['Clwyd (CWD)', 'CWD'],['Co. Antrim (ANT)', 'ANT'],['Co. Armagh (ARM)', 'ARM'],['Co. Down (DOW)', 'DOW'],['Co. Durham (DUR)', 'DUR'],['Co. Fermanagh (FER)', 'FER'],['Co. Londonderry (LDY)', 'LDY'],['Co. Tyrone (TYR)', 'TYR'],['Cornwall (CON)', 'CON'],['Cumberland (CUL)', 'CUL'],['Cumbria (CMA)', 'CMA'],['Denbighshire (DEN)', 'DEN'],['Derbyshire (DBY)', 'DBY'],['Devon (DEV)', 'DEV'],['Dorset (DOR)', 'DOR'],['Dumfries and Galloway (DGY)', 'DGY'],['Dumfries-shire (DFS)', 'DFS'],['Dunbartonshire (DNB)', 'DNB'],['Dyfed (DFD)', 'DFD'],['E Lothian (ELN)', 'ELN'],['E Riding of Yorkshire (ERY)', 'ERY'],['E Sussex (SXE)', 'SXE'],['Essex (ESS)', 'ESS'],['Fife (FIF)', 'FIF'],['Flintshire (FLN)', 'FLN'],['Glamorgan (GLA)', 'GLA'],['Gloucestershire (GLS)', 'GLS'],['Grampian (GMP)', 'GMP'],['Greater London (LND)', 'LND'],['Greater Manchester (GTM)', 'GTM'],['Guernsey (GSY)', 'GSY'],['Gwent (GNT)', 'GNT'],['Gwynedd (GWN)', 'GWN'],['Hampshire (HAM)', 'HAM'],['Hereford and Worcester (HWR)', 'HWR'],['Herefordshire (HEF)', 'HEF'],['Hertfordshire (HRT)', 'HRT'],['Highland (HLD)', 'HLD'],['Humberside (HUM)', 'HUM'],['Huntingdonshire (HUN)', 'HUN'],['Inverness-shire (INV)', 'INV'],['Isle of Wight (IOW)', 'IOW'],['Jersey (JSY)', 'JSY'],['Kent (KEN)', 'KEN'],['Kincardineshire (KCD)', 'KCD'],['Kinross-shire (KRS)', 'KRS'],['Kirkcudbrightshire (KKD)', 'KKD'],['Lanarkshire (LKS)', 'LKS'],['Lancashire (LAN)', 'LAN'],['Leicestershire (LEI)', 'LEI'],['Lincolnshire (LIN)', 'LIN'],['Lothian (LTN)', 'LTN'],['Merionethshire (MER)', 'MER'],['Merseyside (MSY)', 'MSY'],['Mid Glamorgan (MGM)', 'MGM'],['Midlothian (MLN)', 'MLN'],['Monmouthshire (MON)', 'MON'],['Montgomeryshire (MGY)', 'MGY'],['Morayshire (MOR)', 'MOR'],['N Riding of Yorkshire (NRY)', 'NRY'],['N Yorkshire (NYK)', 'NYK'],['Nairn (NAI)', 'NAI'],['Norfolk (NFK)', 'NFK'],['Northamptonshire (NTH)', 'NTH'],['Northumberland (NBL)', 'NBL'],['Nottinghamshire (NTT)', 'NTT'],['Orkney (OKI)', 'OKI'],['Oxfordshire (OXF)', 'OXF'],['Peebles-shire (PEE)', 'PEE'],['Pembrokeshire (PEM)', 'PEM'],['Perth (PER)', 'PER'],['Powys (POW)', 'POW'],['Radnorshire (RAD)', 'RAD'],['Renfrewshire (RFW)', 'RFW'],['Ross and Cromarty (ROC)', 'ROC'],['Roxburghshire (ROX)', 'ROX'],['Rutland (RUT)', 'RUT'],['S Glamorgan (SGM)', 'SGM'],['S Yorkshire (SYK)', 'SYK'],['Sark (SRK)', 'SRK'],['Selkirkshire (SEL)', 'SEL'],['Shetland (SHI)', 'SHI'],['Shropshire (SAL)', 'SAL'],['Somerset (SOM)', 'SOM'],['Staffordshire (STS)', 'STS'],['Stirlingshire (STI)', 'STI'],['Strathclyde (STD)', 'STD'],['Suffolk (SFK)', 'SFK'],['Surrey (SRY)', 'SRY'],['Sussex (SSX)', 'SSX'],['Sutherland (SUT)', 'SUT'],['Tayside (TAY)', 'TAY'],['Tyne and Wear (TWR)', 'TWR'],['W Glamorgan (WGM)', 'WGM'],['W Isles (WIS)', 'WIS'],['W Lothian (WLN)', 'WLN'],['W Midlands (WMD)', 'WMD'],['W Riding of Yorkshire (WRY)', 'WRY'],['W Sussex (SXW)', 'SXW'],['W Yorkshire (WYK)', 'WYK'],['Warwickshire (WAR)', 'WAR'],['Westmorland (WES)', 'WES'],['Wigtownshire (WIG)', 'WIG'],['Wiltshire (WIL)', 'WIL'],['Worcestershire (WOR)', 'WOR'],['Yorkshire (YKS)', 'YKS']]];
arrCtry["GREECE"] = ["", []];
arrCtry["GREENLAND"] = ["", []];
arrCtry["GRENADA"] = ["", []];
arrCtry["GUADELOUPE"] = ["", []];
arrCtry["GUAM"] = ["", []];
arrCtry["GUATEMALA"] = ["", []];
arrCtry["GUINEA"] = ["", []];
arrCtry["GUINEA-BISSAU"] = ["", []];
arrCtry["GUYANA"] = ["", []];
arrCtry["HAITI"] = ["", []];
arrCtry["HEARD &amp;MCDONALD ISS"] = ["", []];
arrCtry["HONDURAS"] = ["", []];
arrCtry["HONG KONG"] = ["", []];
arrCtry["HUNGARY"] = ["", []];
arrCtry["ICELAND"] = ["", []];
arrCtry["INDIA"] = ["", []];
arrCtry["INDONESIA"] = ["", []];
arrCtry["IRAN"] = ["", []];
arrCtry["IRAQ"] = ["", []];
arrCtry["IRELAND"] = ["County", [['Co. Carlow (CAR)', 'CAR'],['Co. Cavan (CAV)', 'CAV'],['Co. Clare (CLA)', 'CLA'],['Co. Cork (COR)', 'COR'],['Co. Donegal (DON)', 'DON'],['Co. Dublin (DUB)', 'DUB'],['Co. Galway (GAL)', 'GAL'],['Co. Kerry (KER)', 'KER'],['Co. Kildare (KID)', 'KID'],['Co. Kilkenny (KIK)', 'KIK'],['Co. Laois (LEX)', 'LEX'],['Co. Leitrim (LET)', 'LET'],['Co. Limerick (LIM)', 'LIM'],['Co. Longford (LOG)', 'LOG'],['Co. Louth (LOU)', 'LOU'],['Co. Mayo (MAY)', 'MAY'],['Co. Meath (MEA)', 'MEA'],['Co. Monaghan (MOG)', 'MOG'],['Co. Offaly (OFF)', 'OFF'],['Co. Roscommon (ROS)', 'ROS'],['Co. Sligo (SLI)', 'SLI'],['Co. Tipperary (TIP)', 'TIP'],['Co. Waterford (WAT)', 'WAT'],['Co. Westmeath (WEM)', 'WEM'],['Co. Wexford (WEX)', 'WEX'],['Co. Wicklow (WIC)', 'WIC']]];
arrCtry["ISRAEL"] = ["", []];
arrCtry["ITALY"] = ["", []];
arrCtry["IVORY COAST"] = ["", []];
arrCtry["JAMAICA"] = ["", []];
arrCtry["JAPAN"] = ["", []];
arrCtry["JORDAN"] = ["", []];
arrCtry["KAZAKHSTAN"] = ["", []];
arrCtry["KENYA"] = ["", []];
arrCtry["KIRIBATI"] = ["", []];
arrCtry["KUWAIT"] = ["", []];
arrCtry["KYRGYZSTAN"] = ["", []];
arrCtry["LAOS PEOPLES DEM. REP."] = ["", []];
arrCtry["LATVIA"] = ["", []];
arrCtry["LEBANON"] = ["", []];
arrCtry["LESOTHO"] = ["", []];
arrCtry["LIBERIA"] = ["", []];
arrCtry["LIBYAN ARAB JAMAHIRIYA"] = ["", []];
arrCtry["LIECHTENSTEIN"] = ["", []];
arrCtry["LITHUANIA"] = ["", []];
arrCtry["LUXEMBOURG"] = ["", []];
arrCtry["MACAO"] = ["", []];
arrCtry["MACEDONIA"] = ["", []];
arrCtry["MADAGASCAR"] = ["", []];
arrCtry["MALAWI"] = ["", []];
arrCtry["MALAYSIA"] = ["", []];
arrCtry["MALDIVES"] = ["", []];
arrCtry["MALI"] = ["", []];
arrCtry["MALTA"] = ["", []];
arrCtry["MARSHALL ISS"] = ["", []];
arrCtry["MARTINIQUE"] = ["", []];
arrCtry["MAURITANIA"] = ["", []];
arrCtry["MAURITIUS"] = ["", []];
arrCtry["MAYOTTE"] = ["", []];
arrCtry["MEXICO"] = ["", []];
arrCtry["MICRONESIA"] = ["", []];
arrCtry["MOLDOVA"] = ["", []];
arrCtry["MONACO"] = ["", []];
arrCtry["MONGOLIA"] = ["", []];
arrCtry["MONTSERRAT"] = ["", []];
arrCtry["MOROCCO"] = ["", []];
arrCtry["MOZAMBIQUE"] = ["", []];
arrCtry["MYANMAR"] = ["", []];
arrCtry["N. IRELAND"] = ["", []];
arrCtry["N. KOREA"] = ["", []];
arrCtry["N. MARIANA IS"] = ["", []];
arrCtry["NAMIBIA"] = ["", []];
arrCtry["NAURU"] = ["", []];
arrCtry["NEPAL"] = ["", []];
arrCtry["NETHERLANDS"] = ["", []];
arrCtry["NETHERLANDS ANT"] = ["", []];
arrCtry["NEW CALEDONIA"] = ["", []];
arrCtry["NEW ZEALAND"] = ["", []];
arrCtry["NICARAGUA"] = ["", []];
arrCtry["NIGER"] = ["", []];
arrCtry["NIGERIA"] = ["", []];
arrCtry["NIUE"] = ["", []];
arrCtry["NORFOLK IS"] = ["", []];
arrCtry["NORWAY"] = ["", []];
arrCtry["OMAN"] = ["", []];
arrCtry["PAKISTAN"] = ["", []];
arrCtry["PALAU"] = ["", []];
arrCtry["PANAMA"] = ["", []];
arrCtry["PAPUA NEW GUINEA"] = ["", []];
arrCtry["PARAGUAY"] = ["", []];
arrCtry["PERU"] = ["", []];
arrCtry["PHILIPPINES"] = ["", []];
arrCtry["PITCAIRN IS"] = ["", []];
arrCtry["POLAND"] = ["", []];
arrCtry["PORTUGAL"] = ["", []];
arrCtry["PUERTO RICO"] = ["", []];
arrCtry["QATAR"] = ["", []];
arrCtry["REUNION"] = ["", []];
arrCtry["ROMANIA"] = ["", []];
arrCtry["RUSSIAN FEDERATION"] = ["", []];
arrCtry["RWANDA"] = ["", []];
arrCtry["S. AFRICA"] = ["", []];
arrCtry["S. GEORGIA &amp;S. SANDWICH ISS."] = ["", []];
arrCtry["S. KOREA"] = ["", []];
arrCtry["SAMOA"] = ["", []];
arrCtry["SAN MARINO"] = ["", []];
arrCtry["SAOTOME &amp;PRINCIPE"] = ["", []];
arrCtry["SAUDI ARABIA"] = ["", []];
arrCtry["SCOTLAND"] = ["County", [['Aberdeenshire (ABD)', 'ABD'],['Angus (ANS)', 'ANS'],['Argyllshire (ARL)', 'ARL'],['Ayrshire (AYR)', 'AYR'],['Banffshire (BAN)', 'BAN'],['Berwickshire (BEW)', 'BEW'],['Borders (BOR)', 'BOR'],['Bute (BUT)', 'BUT'],['Caithness (CAI)', 'CAI'],['Central (CEN)', 'CEN'],['Clackmannanshire (CLK)', 'CLK'],['Dumfries and Galloway (DGY)', 'DGY'],['Dumfries-shire (DFS)', 'DFS'],['Dunbartonshire (DNB)', 'DNB'],['E Lothian (ELN)', 'ELN'],['Fife (FIF)', 'FIF'],['Grampian (GMP)', 'GMP'],['Highland (HLD)', 'HLD'],['Inverness-shire (INV)', 'INV'],['Kincardineshire (KCD)', 'KCD'],['Kinross-shire (KRS)', 'KRS'],['Kirkcudbrightshire (KKD)', 'KKD'],['Lanarkshire (LKS)', 'LKS'],['Lothian (LTN)', 'LTN'],['Midlothian (MLN)', 'MLN'],['Morayshire (MOR)', 'MOR'],['Nairn (NAI)', 'NAI'],['Orkney (OKI)', 'OKI'],['Peebles-shire (PEE)', 'PEE'],['Perth (PER)', 'PER'],['Renfrewshire (RFW)', 'RFW'],['Ross and Cromarty (ROC)', 'ROC'],['Roxburghshire (ROX)', 'ROX'],['Selkirkshire (SEL)', 'SEL'],['Shetland (SHI)', 'SHI'],['Stirlingshire (STI)', 'STI'],['Strathclyde (STD)', 'STD'],['Sutherland (SUT)', 'SUT'],['Tayside (TAY)', 'TAY'],['W Isles (WIS)', 'WIS'],['W Lothian (WLN)', 'WLN'],['Wigtownshire (WIG)', 'WIG']]];
arrCtry["SENEGAL"] = ["", []];
arrCtry["SEYCHELLES"] = ["", []];
arrCtry["SIERRA LEONE"] = ["", []];
arrCtry["SINGAPORE"] = ["", []];
arrCtry["SLOVAKIA"] = ["", []];
arrCtry["SLOVENIA"] = ["", []];
arrCtry["SOLOMON ISS"] = ["", []];
arrCtry["SOMALIA"] = ["", []];
arrCtry["SPAIN"] = ["", []];
arrCtry["SRI LANKA"] = ["", []];
arrCtry["ST. HELENA"] = ["", []];
arrCtry["ST. KITTS &amp;NEVIS"] = ["", []];
arrCtry["ST. LUCIA"] = ["", []];
arrCtry["ST. PIERRE &amp;MIQUELON"] = ["", []];
arrCtry["ST. VINCENT &amp;GRENADINES"] = ["", []];
arrCtry["SUDAN"] = ["", []];
arrCtry["SURINAME"] = ["", []];
arrCtry["SVALBARD &amp;JAN MAYEN ISS"] = ["", []];
arrCtry["SWAZILAND"] = ["", []];
arrCtry["SWEDEN"] = ["", []];
arrCtry["SWITZERLAND"] = ["", []];
arrCtry["SYRIAN ARAB REPUBLIC"] = ["", []];
arrCtry["TAIWAN"] = ["", []];
arrCtry["TAJIKISTAN"] = ["", []];
arrCtry["TANZANIA"] = ["", []];
arrCtry["THAILAND"] = ["", []];
arrCtry["TOGO"] = ["", []];
arrCtry["TOKELAU"] = ["", []];
arrCtry["TONGA"] = ["", []];
arrCtry["TRINIDAD &amp;TOBAGO"] = ["", []];
arrCtry["TUNISIA"] = ["", []];
arrCtry["TURKEY"] = ["", []];
arrCtry["TURKMENISTAN"] = ["", []];
arrCtry["TURKS &amp;CAICOS ISS"] = ["", []];
arrCtry["TUVALU"] = ["", []];
arrCtry["UGANDA"] = ["", []];
arrCtry["UKRAINE"] = ["", []];
arrCtry["UNITED ARAB EMIRATES"] = ["", []];
arrCtry["UNITED KINGDOM"] = ["County", [['Aberdeenshire (ABD)', 'ABD'],['Alderney (ALD)', 'ALD'],['Anglesey (AGY)', 'AGY'],['Angus (ANS)', 'ANS'],['Argyllshire (ARL)', 'ARL'],['Avon (AVN)', 'AVN'],['Ayrshire (AYR)', 'AYR'],['Banffshire (BAN)', 'BAN'],['Bedfordshire (BDF)', 'BDF'],['Berkshire (BRK)', 'BRK'],['Berwickshire (BEW)', 'BEW'],['Borders (BOR)', 'BOR'],['Breconshire (BRE)', 'BRE'],['Buckinghamshire (BKM)', 'BKM'],['Bute (BUT)', 'BUT'],['Caernarvonshire (CAE)', 'CAE'],['Caithness (CAI)', 'CAI'],['Cambridgeshire (CAM)', 'CAM'],['Cardiganshire (CGN)', 'CGN'],['Carmarthenshire (CMN)', 'CMN'],['Central (CEN)', 'CEN'],['Cheshire (CHS)', 'CHS'],['Clackmannanshire (CLK)', 'CLK'],['Cleveland (CLV)', 'CLV'],['Clwyd (CWD)', 'CWD'],['Co. Antrim (ANT)', 'ANT'],['Co. Armagh (ARM)', 'ARM'],['Co. Down (DOW)', 'DOW'],['Co. Durham (DUR)', 'DUR'],['Co. Fermanagh (FER)', 'FER'],['Co. Londonderry (LDY)', 'LDY'],['Co. Tyrone (TYR)', 'TYR'],['Cornwall (CON)', 'CON'],['Cumberland (CUL)', 'CUL'],['Cumbria (CMA)', 'CMA'],['Denbighshire (DEN)', 'DEN'],['Derbyshire (DBY)', 'DBY'],['Devon (DEV)', 'DEV'],['Dorset (DOR)', 'DOR'],['Dumfries and Galloway (DGY)', 'DGY'],['Dumfries-shire (DFS)', 'DFS'],['Dunbartonshire (DNB)', 'DNB'],['Dyfed (DFD)', 'DFD'],['E Lothian (ELN)', 'ELN'],['E Riding of Yorkshire (ERY)', 'ERY'],['E Sussex (SXE)', 'SXE'],['Essex (ESS)', 'ESS'],['Fife (FIF)', 'FIF'],['Flintshire (FLN)', 'FLN'],['Glamorgan (GLA)', 'GLA'],['Gloucestershire (GLS)', 'GLS'],['Grampian (GMP)', 'GMP'],['Greater London (LND)', 'LND'],['Greater Manchester (GTM)', 'GTM'],['Guernsey (GSY)', 'GSY'],['Gwent (GNT)', 'GNT'],['Gwynedd (GWN)', 'GWN'],['Hampshire (HAM)', 'HAM'],['Hereford and Worcester (HWR)', 'HWR'],['Herefordshire (HEF)', 'HEF'],['Hertfordshire (HRT)', 'HRT'],['Highland (HLD)', 'HLD'],['Humberside (HUM)', 'HUM'],['Huntingdonshire (HUN)', 'HUN'],['Inverness-shire (INV)', 'INV'],['Isle of Wight (IOW)', 'IOW'],['Jersey (JSY)', 'JSY'],['Kent (KEN)', 'KEN'],['Kincardineshire (KCD)', 'KCD'],['Kinross-shire (KRS)', 'KRS'],['Kirkcudbrightshire (KKD)', 'KKD'],['Lanarkshire (LKS)', 'LKS'],['Lancashire (LAN)', 'LAN'],['Leicestershire (LEI)', 'LEI'],['Lincolnshire (LIN)', 'LIN'],['Lothian (LTN)', 'LTN'],['Merionethshire (MER)', 'MER'],['Merseyside (MSY)', 'MSY'],['Mid Glamorgan (MGM)', 'MGM'],['Midlothian (MLN)', 'MLN'],['Monmouthshire (MON)', 'MON'],['Montgomeryshire (MGY)', 'MGY'],['Morayshire (MOR)', 'MOR'],['N Riding of Yorkshire (NRY)', 'NRY'],['N Yorkshire (NYK)', 'NYK'],['Nairn (NAI)', 'NAI'],['Norfolk (NFK)', 'NFK'],['Northamptonshire (NTH)', 'NTH'],['Northumberland (NBL)', 'NBL'],['Nottinghamshire (NTT)', 'NTT'],['Orkney (OKI)', 'OKI'],['Oxfordshire (OXF)', 'OXF'],['Peebles-shire (PEE)', 'PEE'],['Pembrokeshire (PEM)', 'PEM'],['Perth (PER)', 'PER'],['Powys (POW)', 'POW'],['Radnorshire (RAD)', 'RAD'],['Renfrewshire (RFW)', 'RFW'],['Ross and Cromarty (ROC)', 'ROC'],['Roxburghshire (ROX)', 'ROX'],['Rutland (RUT)', 'RUT'],['S Glamorgan (SGM)', 'SGM'],['S Yorkshire (SYK)', 'SYK'],['Sark (SRK)', 'SRK'],['Selkirkshire (SEL)', 'SEL'],['Shetland (SHI)', 'SHI'],['Shropshire (SAL)', 'SAL'],['Somerset (SOM)', 'SOM'],['Staffordshire (STS)', 'STS'],['Stirlingshire (STI)', 'STI'],['Strathclyde (STD)', 'STD'],['Suffolk (SFK)', 'SFK'],['Surrey (SRY)', 'SRY'],['Sussex (SSX)', 'SSX'],['Sutherland (SUT)', 'SUT'],['Tayside (TAY)', 'TAY'],['Tyne and Wear (TWR)', 'TWR'],['W Glamorgan (WGM)', 'WGM'],['W Isles (WIS)', 'WIS'],['W Lothian (WLN)', 'WLN'],['W Midlands (WMD)', 'WMD'],['W Riding of Yorkshire (WRY)', 'WRY'],['W Sussex (SXW)', 'SXW'],['W Yorkshire (WYK)', 'WYK'],['Warwickshire (WAR)', 'WAR'],['Westmorland (WES)', 'WES'],['Wigtownshire (WIG)', 'WIG'],['Wiltshire (WIL)', 'WIL'],['Worcestershire (WOR)', 'WOR'],['Yorkshire (YKS)', 'YKS']]];
arrCtry["URUGUAY"] = ["", []];
arrCtry["USA"] = ["State", [['AF Africa, Europe, Mid East (AE)', 'AE'],['AF Americas (AA)', 'AA'],['AF Pacific (AP)', 'AP'],['Alabama (AL)', 'AL'],['Alaska (AK)', 'AK'],['American Samoa (AS)', 'AS'],['Arizona (AZ)', 'AZ'],['Arkansas (AR)', 'AR'],['California (CA)', 'CA'],['Colorado (CO)', 'CO'],['Connecticut (CT)', 'CT'],['Delaware (DE)', 'DE'],['District of Columbia (DC)', 'DC'],['Florida (FL)', 'FL'],['Georgia (GA)', 'GA'],['Guam (GU)', 'GU'],['Hawaii (HI)', 'HI'],['Idaho (ID)', 'ID'],['Illinois (IL)', 'IL'],['Indiana (IN)', 'IN'],['Iowa (IA)', 'IA'],['Kansas (KS)', 'KS'],['Kentucky (KY)', 'KY'],['Louisiana (LA)', 'LA'],['Maine (ME)', 'ME'],['Marshall ISS (MH)', 'MH'],['Maryland (MD)', 'MD'],['Massachusetts (MA)', 'MA'],['Michigan (MI)', 'MI'],['Micronesia, F S (FM)', 'FM'],['Minnesota (MN)', 'MN'],['Mississippi (MS)', 'MS'],['Missouri (MO)', 'MO'],['Montana (MT)', 'MT'],['Nebraska (NE)', 'NE'],['Nevada (NV)', 'NV'],['New Hampshire (NH)', 'NH'],['New Jersey (NJ)', 'NJ'],['New Mexico (NM)', 'NM'],['New York (NY)', 'NY'],['North Carolina (NC)', 'NC'],['North Dakota (ND)', 'ND'],['Northern Mariana ISS (MP)', 'MP'],['Ohio (OH)', 'OH'],['Oklahoma (OK)', 'OK'],['Oregon (OR)', 'OR'],['Palau (PW)', 'PW'],['Pennsylvania (PA)', 'PA'],['Puerto Rico (PR)', 'PR'],['Rhode IS (RI)', 'RI'],['South Carolina (SC)', 'SC'],['South Dakota (SD)', 'SD'],['Tennessee (TN)', 'TN'],['Texas (TX)', 'TX'],['Utah (UT)', 'UT'],['Vermont (VT)', 'VT'],['Virgin ISS (VI)', 'VI'],['Virginia (VA)', 'VA'],['Washington (WA)', 'WA'],['West Virginia (WV)', 'WV'],['Wisconsin (WI)', 'WI'],['Wyoming (WY)', 'WY']]];
arrCtry["UZBEKISTAN"] = ["", []];
arrCtry["VANUATU"] = ["", []];
arrCtry["VATICAN CITY-STATE"] = ["", []];
arrCtry["VENEZUELA"] = ["", []];
arrCtry["VIETNAM"] = ["", []];
arrCtry["VIRGIN ISS (BRITISH)"] = ["", []];
arrCtry["VIRGIN ISS (U.S.)"] = ["", []];
arrCtry["W. SAHARA"] = ["", []];
arrCtry["WALES"] = ["County", [['Anglesey (AGY)', 'AGY'],['Breconshire (BRE)', 'BRE'],['Caernarvonshire (CAE)', 'CAE'],['Cardiganshire (CGN)', 'CGN'],['Carmarthenshire (CMN)', 'CMN'],['Clwyd (CWD)', 'CWD'],['Denbighshire (DEN)', 'DEN'],['Dyfed (DFD)', 'DFD'],['Flintshire (FLN)', 'FLN'],['Glamorgan (GLA)', 'GLA'],['Gwent (GNT)', 'GNT'],['Gwynedd (GWN)', 'GWN'],['Merionethshire (MER)', 'MER'],['Mid Glamorgan (MGM)', 'MGM'],['Monmouthshire (MON)', 'MON'],['Montgomeryshire (MGY)', 'MGY'],['Pembrokeshire (PEM)', 'PEM'],['Powys (POW)', 'POW'],['Radnorshire (RAD)', 'RAD'],['S Glamorgan (SGM)', 'SGM'],['W Glamorgan (WGM)', 'WGM']]];
arrCtry["WALLIS &amp;FUTUNA ISS"] = ["", []];
arrCtry["YEMEN"] = ["", []];
arrCtry["YUGOSLAVIA"] = ["", []];
arrCtry["ZAIRE"] = ["", []];
arrCtry["ZAMBIA"] = ["", []];
arrCtry["ZIMBABWE"] = ["", []];


function 
buildSCPCountrySel(objCountrySel) {
	var objCtry = new Object(); objCtry.arrOpts = new Array();
	var strCountry = objCountrySel.value;
	for (I = 0; I < arrCtry[strCountry][1].length; I++) {
		arrSCP = arrCtry[strCountry][1][I];
		objCtry.arrOpts[I] = new Option(arrSCP[0], arrSCP[1]);
	};
	document.getElementById('statecell').innerHTML = (objCtry.arrOpts.length > 0) ? '<select id="state" name="state" value="" >&lt;/select>' : '<input type="text" id="state" name="state" style="width=50" maxLength=2 />';
	var objState = document.getElementById('state');
	if (objCtry.arrOpts.length > 0) {
		for (I = 0; I < objCtry.arrOpts.length; I++) {
			objState.options[I] = objCtry.arrOpts[I];
			if (strCountry == 'USA' && objState.options[I].value == 'AL' && objCtry.arrOpts.length > 0) {
				objState.options[I].selected = true;
			};
		};
	};
	objSTHdg = document.getElementById('statehdg'); 
	objSTHdg.innerHTML = (arrCtry[strCountry][0] != '' ? arrCtry[strCountry][0] : 'State') + ':';
//
//	document.getElementById('ziphdg').innerHTML = (arrCtry[strCountry][0].toLowerCase().substr(0, 5) == 'state' ? 'Zip Code' : 'Postal Code') + ':';
//
	objState.disabled = objCtry.arrOpts.length == 0 && !true; objState.style.backgroundColor = objState.disabled ? '#dcdcdc' : 'white';
	return;
}

function
selState(form, state) {
	if (form.state.type == "text") {
		form.state.value = state;
	} else {
		if (form.state.length) {
			for (var i=0; i < form.state.length; i++) {
				if (form.state[i].value == state) {
					form.state[i].selected = true;
					i = form.state.length;
				}
			}
		}
	}
}

var friends = 0, updates = 0;
 $(document).ready(function() {
      $("#ylmTellFriends").click(function(){
	    $("#ylmTellFriendsForm").toggle(); 
	    if(friends++ % 2 == 0)$("#arrow").attr("src","/images/arrow-down.gif");//$("#ylmFriendsArrow").css({backgroundPosition:"left"}); 
	    else $("#arrow").attr("src","/images/arrow-right.gif");//$("#ylmFriendsArrow").css({backgroundPosition:"right"}); 
	    return false; 
        } );
        //make recieve updates menu drop down
        $("#ylmReceiveUpdates").click(function(){ $("#ylmReceiveUpdatesForm").toggle(); 
        if(updates++ % 2 == 0)$("#arrow2").attr("src","/images/arrow-down.gif");//$("#ylmUpdateArrow").css({backgroundPosition:"left"}); 
        else  $("#arrow2").attr("src","/images/arrow-right.gif");//$("#ylmUpdateArrow").css({backgroundPosition:"right"}); 
        return false;
        } );

        $("#smisBookMarkObitLink").click(function(event){ 
	        event.preventDefault();
	        bookmarksite(getLabel("bookmarkClick") + " " + $.trim($(".ylmPageTitle").text()), window.location);
	        //return false;
        });		 
 });
function cityToggle(section)
{
	var majCities = $("#" + section + "_majorCities")
	var allCities = $("#" + section + "_allCities")
	
	if(majCities.css("display") == "none")
	{
		majCities.show();
		allCities.hide();
		$("#" + section + " #ylmACArrow").attr("src", "/images/arrow-right.gif");
	}
	else
	{
		majCities.hide();
		allCities.show();
		$("#" + section + " #ylmACArrow").attr("src", "/images/arrow-down.gif");
	}
}
function checkDupe(objCheck)
{
	var chkBox = $(objCheck);
	oldID = ""
	if(chkBox.attr("id").indexOf("maj_") > -1)
	{
		oldID = chkBox.attr("id").replace("maj_", "");
	}
	else
	{
		oldID = "maj_" + chkBox.attr("id");
	}
	
	$("#" + oldID).attr("checked", chkBox.attr("checked"));

}
