﻿// Kainoto actions start

function getSize(what) {
    var myWidth = 0, myHeight = 0;
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    if (what == "width") {
        return myWidth;
    }
    if (what == "Height") {
        return myHeight;
    }
}

function getSizeParentWindow(what) {
    var myWidth = 0, myHeight = 0;
    if (typeof (window.parent.innerWidth) == 'number') {
        //Non-IE
        myWidth = window.parent.innerWidth;
        myHeight = window.parent.innerHeight;
    } else if (document.documentElement && (document.parent.documentElement.clientWidth || document.parent.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.parent.documentElement.clientWidth;
        myHeight = document.parent.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        myWidth = document.parent.body.clientWidth;
        myHeight = document.parent.body.clientHeight;
    }
    if (what == "width") {
        return myWidth;
    }
    if (what == "Height") {
        return myHeight;
    }
}

function ShowResultsDiv() {
    document.getElementById('SearchTitlesDiv').style.display = 'block';
}

function ChangeResults() {
    __doPostBack(SearchRefreshButton, '');
}

function CloseResultsDiv() {
    document.getElementById('SearchTitlesDiv').style.display = 'none';
}

function ShowSearchBox() {
    document.getElementById('ctl00_LanguageChoice1_Search1_SearchStringBox').style.display = 'block';
    document.getElementById('SearchShowButton').style.display = 'none';
    document.getElementById('SearchCloseButton').style.display = 'block';
    ShowResultsDiv();
    document.getElementById('ctl00_LanguageChoice1_Search1_SearchStringBox').focus();
}

function HideSearchBox() {
    document.getElementById('ctl00_LanguageChoice1_Search1_SearchStringBox').style.display = 'none';
    document.getElementById('SearchShowButton').style.display = 'block';
    document.getElementById('SearchCloseButton').style.display = 'none';
    CloseResultsDiv();
}
function SearchShowGoogle() {
    document.getElementById('SearchGoogleDiv').style.display = 'block';
    document.getElementById('SearchTitlesDiv').style.display = 'none';
    document.getElementById('ctl00_LanguageChoice1_Search1_SearchStringBox').style.display = 'none';
    document.getElementById('SearchSwitchButton').onclick = function() { SearchShowTitlesSearch() };
    document.getElementsByName('Search').focus();

}
function SearchShowTitlesSearch() {
    document.getElementById('SearchGoogleDiv').style.display = 'none';
    document.getElementById('SearchTitlesDiv').style.display = 'block';
    document.getElementById('ctl00_LanguageChoice1_Search1_SearchStringBox').style.display = 'block';
    document.getElementById('SearchSwitchButton').onclick = function() { SearchShowGoogle() };
    document.getElementById('ctl00_LanguageChoice1_Search1_SearchStringBox').focus();

}

function ElementDisplay(ElementId, mode) {
    document.getElementById(ElementId).style.display = mode;
}


// Kainoto actions end

// highslide start

/******************************************************************************
Name:    Highslide JS
Version: 4.1.8 (October 27 2009)
Config:  default +events +unobtrusive +slideshow +positioning +transitions +viewport +thumbstrip +inline +iframe
Author:  Torstein HÃ¸nsi
Support: http://highslide.com/support

Licence:
Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
License (http://creativecommons.org/licenses/by-nc/2.5/).

You are free:
* to copy, distribute, display, and perform the work
* to make derivative works

Under the following conditions:
* Attribution. You must attribute the work in the manner  specified by  the
author or licensor.
* Noncommercial. You may not use this work for commercial purposes.

* For  any  reuse  or  distribution, you  must make clear to others the license
terms of this work.
* Any  of  these  conditions  can  be  waived  if  you  get permission from the 
copyright holder.

Your fair use and other rights are in no way affected by the above.
******************************************************************************/
if (!hs) {
    var hs = {
        // Language strings
        lang: {
            cssDirection: 'ltr',
            loadingText: 'Loading...',
            loadingTitle: 'Click to cancel',
            focusTitle: 'Click to bring to front',
            fullExpandTitle: 'Expand to actual size (f)',
            creditsText: 'Powered by <i>Highslide JS</i>',
            creditsTitle: 'Go to the Highslide JS homepage',
            previousText: 'Previous',
            nextText: 'Next',
            moveText: 'Move',
            closeText: 'Close',
            closeTitle: 'Close (esc)',
            resizeTitle: 'Resize',
            playText: 'Play',
            playTitle: 'Play slideshow (spacebar)',
            pauseText: 'Pause',
            pauseTitle: 'Pause slideshow (spacebar)',
            previousTitle: 'Previous (arrow left)',
            nextTitle: 'Next (arrow right)',
            moveTitle: 'Move',
            fullExpandText: '1:1',
            number: 'Image %1 of %2',
            restoreTitle: 'Click to close image, click and drag to move. Use arrow keys for next and previous.'
        },
        // See http://highslide.com/ref for examples of settings  
        graphicsDir: 'highslide/graphics/',
        expandCursor: 'zoomin.cur', // null disables
        restoreCursor: 'zoomout.cur', // null disables
        expandDuration: 250, // milliseconds
        restoreDuration: 250,
        marginLeft: 15,
        marginRight: 15,
        marginTop: 15,
        marginBottom: 15,
        zIndexCounter: 1001, // adjust to other absolutely positioned elements
        loadingOpacity: 0.75,
        allowMultipleInstances: true,
        numberOfImagesToPreload: 5,
        outlineWhileAnimating: 2, // 0 = never, 1 = always, 2 = HTML only 
        outlineStartOffset: 3, // ends at 10
        padToMinWidth: false, // pad the popup width to make room for wide caption
        fullExpandPosition: 'bottom right',
        fullExpandOpacity: 1,
        showCredits: true, // you can set this to false if you want
        creditsHref: 'http://highslide.com/',
        creditsTarget: '_self',
        enableKeyListener: true,
        openerTagNames: ['a'], // Add more to allow slideshow indexing
        transitions: [],
        transitionDuration: 250,
        dimmingOpacity: 0, // Lightbox style dimming background
        dimmingDuration: 50, // 0 for instant dimming

        allowWidthReduction: false,
        allowHeightReduction: true,
        preserveContent: true, // Preserve changes made to the content and position of HTML popups.
        objectLoadTime: 'before', // Load iframes 'before' or 'after' expansion.
        anchor: 'auto', // where the image expands from
        align: 'auto', // position in the client (overrides anchor)
        targetX: null, // the id of a target element
        targetY: null,
        dragByHeading: true,
        minWidth: 200,
        minHeight: 200,
        allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight
        outlineType: 'drop-shadow', // set null to disable outlines
        skin: {
            controls:
		'<div class="highslide-controls"><ul>' +
			'<li class="highslide-previous">' +
				'<a href="#" title="{hs.lang.previousTitle}">' +
				'<span>{hs.lang.previousText}</span></a>' +
			'</li>' +
			'<li class="highslide-play">' +
				'<a href="#" title="{hs.lang.playTitle}">' +
				'<span>{hs.lang.playText}</span></a>' +
			'</li>' +
			'<li class="highslide-pause">' +
				'<a href="#" title="{hs.lang.pauseTitle}">' +
				'<span>{hs.lang.pauseText}</span></a>' +
			'</li>' +
			'<li class="highslide-next">' +
				'<a href="#" title="{hs.lang.nextTitle}">' +
				'<span>{hs.lang.nextText}</span></a>' +
			'</li>' +
			'<li class="highslide-move">' +
				'<a href="#" title="{hs.lang.moveTitle}">' +
				'<span>{hs.lang.moveText}</span></a>' +
			'</li>' +
			'<li class="highslide-full-expand">' +
				'<a href="#" title="{hs.lang.fullExpandTitle}">' +
				'<span>{hs.lang.fullExpandText}</span></a>' +
			'</li>' +
			'<li class="highslide-close">' +
				'<a href="#" title="{hs.lang.closeTitle}" >' +
				'<span>{hs.lang.closeText}</span></a>' +
			'</li>' +
		'</ul></div>'
	,
            contentWrapper:
		'<div class="highslide-header"><ul>' +
			'<li class="highslide-previous">' +
				'<a href="#" title="{hs.lang.previousTitle}" onclick="return hs.previous(this)">' +
				'<span>{hs.lang.previousText}</span></a>' +
			'</li>' +
			'<li class="highslide-next">' +
				'<a href="#" title="{hs.lang.nextTitle}" onclick="return hs.next(this)">' +
				'<span>{hs.lang.nextText}</span></a>' +
			'</li>' +
			'<li class="highslide-move">' +
				'<a href="#" title="{hs.lang.moveTitle}" onclick="return false">' +
				'<span>{hs.lang.moveText}</span></a>' +
			'</li>' +
			'<li class="highslide-close">' +
				'<a href="#" title="{hs.lang.closeTitle}" onclick="return hs.close(this)">' +
				'<span>{hs.lang.closeText}</span></a>' +
			'</li>' +
		'</ul></div>' +
		'<div class="highslide-body"></div>' +
		'<div class="highslide-footer"><div>' +
			'<span class="highslide-resize" title="{hs.lang.resizeTitle}"><span></span></span>' +
		'</div></div>'
        },
        // END OF YOUR SETTINGS


        // declare internal properties
        preloadTheseImages: [],
        continuePreloading: true,
        expanders: [],
        overrides: [
	'allowSizeReduction',
	'useBox',
	'anchor',
	'align',
	'targetX',
	'targetY',
	'outlineType',
	'outlineWhileAnimating',
	'captionId',
	'captionText',
	'captionEval',
	'captionOverlay',
	'headingId',
	'headingText',
	'headingEval',
	'headingOverlay',
	'creditsPosition',
	'dragByHeading',
	'autoplay',
	'numberPosition',
	'transitions',
	'dimmingOpacity',

	'width',
	'height',

	'contentId',
	'allowWidthReduction',
	'allowHeightReduction',
	'preserveContent',
	'maincontentId',
	'maincontentText',
	'maincontentEval',
	'objectType',
	'objectWidth',
	'objectHeight',
	'objectLoadTime',
	'wrapperClassName',
	'minWidth',
	'minHeight',
	'maxWidth',
	'maxHeight',
	'slideshowGroup',
	'easing',
	'easingClose',
	'fadeInOut',
	'src'
],
        overlays: [],
        idCounter: 0,
        oPos: {
            x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'],
            y: ['above', 'top', 'middle', 'bottom', 'below']
        },
        mouse: {},
        headingOverlay: {},
        captionOverlay: {},
        timers: [],

        slideshows: [],

        pendingOutlines: {},
        sleeping: [],
        clones: {},
        onReady: [],
        uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 :
	parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0, '0'])[1]),
        ie: (document.all && !window.opera),
        safari: /Safari/.test(navigator.userAgent),
        geckoMac: /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),

        $: function(id) {
            if (id) return document.getElementById(id);
        },

        push: function(arr, val) {
            arr[arr.length] = val;
        },

        createElement: function(tag, attribs, styles, parent, nopad) {
            var el = document.createElement(tag);
            if (attribs) hs.extend(el, attribs);
            if (nopad) hs.setStyles(el, { padding: 0, border: 'none', margin: 0 });
            if (styles) hs.setStyles(el, styles);
            if (parent) parent.appendChild(el);
            return el;
        },

        extend: function(el, attribs) {
            for (var x in attribs) el[x] = attribs[x];
            return el;
        },

        setStyles: function(el, styles) {
            for (var x in styles) {
                if (hs.ie && x == 'opacity') {
                    if (styles[x] > 0.99) el.style.removeAttribute('filter');
                    else el.style.filter = 'alpha(opacity=' + (styles[x] * 100) + ')';
                }
                else el.style[x] = styles[x];
            }
        },
        animate: function(el, prop, opt) {
            var start,
		end,
		unit;
            if (typeof opt != 'object' || opt === null) {
                var args = arguments;
                opt = {
                    duration: args[2],
                    easing: args[3],
                    complete: args[4]
                };
            }
            if (typeof opt.duration != 'number') opt.duration = 250;
            opt.easing = Math[opt.easing] || Math.easeInQuad;
            opt.curAnim = hs.extend({}, prop);
            for (var name in prop) {
                var e = new hs.fx(el, opt, name);

                start = parseFloat(hs.css(el, name)) || 0;
                end = parseFloat(prop[name]);
                unit = name != 'opacity' ? 'px' : '';

                e.custom(start, end, unit);
            }
        },
        css: function(el, prop) {
            if (document.defaultView) {
                return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop);

            } else {
                if (prop == 'opacity') prop = 'filter';
                var val = el.currentStyle[prop.replace(/\-(\w)/g, function(a, b) { return b.toUpperCase(); })];
                if (prop == 'filter')
                    val = val.replace(/alpha\(opacity=([0-9]+)\)/,
				function(a, b) { return b / 100 });
                return val === '' ? 1 : val;
            }
        },

        getPageSize: function() {
            var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat'
		? d.documentElement : d.body;

            var width = hs.ie ? iebody.clientWidth :
			(d.documentElement.clientWidth || self.innerWidth),
		height = hs.ie ? iebody.clientHeight : self.innerHeight;

            hs.page = {
                width: width,
                height: height,
                scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset,
                scrollTop: hs.ie ? iebody.scrollTop : pageYOffset
            }
        },

        getPosition: function(el) {
            var p = { x: el.offsetLeft, y: el.offsetTop };
            while (el.offsetParent) {
                el = el.offsetParent;
                p.x += el.offsetLeft;
                p.y += el.offsetTop;
                if (el != document.body && el != document.documentElement) {
                    p.x -= el.scrollLeft;
                    p.y -= el.scrollTop;
                }
            }
            return p;
        },

        expand: function(a, params, custom, type) {
            if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container);
            if (typeof a.getParams == 'function') return params;
            if (type == 'html') {
                for (var i = 0; i < hs.sleeping.length; i++) {
                    if (hs.sleeping[i] && hs.sleeping[i].a == a) {
                        hs.sleeping[i].awake();
                        hs.sleeping[i] = null;
                        return false;
                    }
                }
                hs.hasHtmlExpanders = true;
            }
            try {
                new hs.Expander(a, params, custom, type);
                return false;
            } catch (e) { return true; }
        },

        htmlExpand: function(a, params, custom) {
            return hs.expand(a, params, custom, 'html');
        },

        getSelfRendered: function() {
            return hs.createElement('div', {
                className: 'highslide-html-content',
                innerHTML: hs.replaceLang(hs.skin.contentWrapper)
            });
        },
        getElementByClass: function(el, tagName, className) {
            var els = el.getElementsByTagName(tagName);
            for (var i = 0; i < els.length; i++) {
                if ((new RegExp(className)).test(els[i].className)) {
                    return els[i];
                }
            }
            return null;
        },
        replaceLang: function(s) {
            s = s.replace(/\s/g, ' ');
            var re = /{hs\.lang\.([^}]+)\}/g,
		matches = s.match(re),
		lang;
            if (matches) for (var i = 0; i < matches.length; i++) {
                lang = matches[i].replace(re, "$1");
                if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]);
            }
            return s;
        },


        setClickEvents: function() {
            var els = document.getElementsByTagName('a');
            for (var i = 0; i < els.length; i++) {
                var type = hs.isUnobtrusiveAnchor(els[i]);
                if (type && !els[i].hsHasSetClick) {
                    (function() {
                        var t = type;
                        if (hs.fireEvent(hs, 'onSetClickEvent', { element: els[i], type: t })) {
                            els[i].onclick = (type == 'image') ? function() { return hs.expand(this) } :
						function() { return hs.htmlExpand(this, { objectType: t }); };
                        }
                    })();
                    els[i].hsHasSetClick = true;
                }
            }
            hs.getAnchors();
        },
        isUnobtrusiveAnchor: function(el) {
            if (el.rel == 'highslide') return 'image';
            else if (el.rel == 'highslide-iframe') return 'iframe';
        },

        focusTopmost: function() {
            var topZ = 0,
		topmostKey = -1,
		expanders = hs.expanders,
		exp,
		zIndex;
            for (var i = 0; i < expanders.length; i++) {
                exp = expanders[i];
                if (exp) {
                    zIndex = exp.wrapper.style.zIndex;
                    if (zIndex && zIndex > topZ) {
                        topZ = zIndex;
                        topmostKey = i;
                    }
                }
            }
            if (topmostKey == -1) hs.focusKey = -1;
            else expanders[topmostKey].focus();
        },

        getParam: function(a, param) {
            a.getParams = a.onclick;
            var p = a.getParams ? a.getParams() : null;
            a.getParams = null;

            return (p && typeof p[param] != 'undefined') ? p[param] :
		(typeof hs[param] != 'undefined' ? hs[param] : null);
        },

        getSrc: function(a) {
            var src = hs.getParam(a, 'src');
            if (src) return src;
            return a.href;
        },

        getNode: function(id) {
            var node = hs.$(id), clone = hs.clones[id], a = {};
            if (!node && !clone) return null;
            if (!clone) {
                clone = node.cloneNode(true);
                clone.id = '';
                hs.clones[id] = clone;
                return node;
            } else {
                return clone.cloneNode(true);
            }
        },

        discardElement: function(d) {
            if (d) hs.garbageBin.appendChild(d);
            hs.garbageBin.innerHTML = '';
        },
        dim: function(exp) {
            if (!hs.dimmer) {
                hs.dimmer = hs.createElement('div', {
                    className: 'highslide-dimming highslide-viewport-size',
                    owner: '',
                    onclick: function() {
                        if (hs.fireEvent(hs, 'onDimmerClick'))

                            hs.close();
                    }
                }, {
                    visibility: 'visible',
                    opacity: 0
                }, hs.container, true);
            }

            hs.dimmer.style.display = '';

            hs.dimmer.owner += '|' + exp.key;
            if (hs.geckoMac && hs.dimmingGeckoFix)
                hs.setStyles(hs.dimmer, {
                    background: 'url(' + hs.graphicsDir + 'geckodimmer.png)',
                    opacity: 1
                });
            else
                hs.animate(hs.dimmer, { opacity: exp.dimmingOpacity }, hs.dimmingDuration);
        },
        undim: function(key) {
            if (!hs.dimmer) return;
            if (typeof key != 'undefined') hs.dimmer.owner = hs.dimmer.owner.replace('|' + key, '');

            if (
		(typeof key != 'undefined' && hs.dimmer.owner != '')
		|| (hs.upcoming && hs.getParam(hs.upcoming, 'dimmingOpacity'))
	) return;

            if (hs.geckoMac && hs.dimmingGeckoFix) hs.dimmer.style.display = 'none';
            else hs.animate(hs.dimmer, { opacity: 0 }, hs.dimmingDuration, null, function() {
                hs.dimmer.style.display = 'none';
            });
        },
        transit: function(adj, exp) {
            var last = exp = exp || hs.getExpander();
            if (hs.upcoming) return false;
            else hs.last = last;
            try {
                hs.upcoming = adj;
                adj.onclick();
            } catch (e) {
                hs.last = hs.upcoming = null;
            }
            try {
                if (!adj || exp.transitions[1] != 'crossfade')
                    exp.close();
            } catch (e) { }
            return false;
        },

        previousOrNext: function(el, op) {
            var exp = hs.getExpander(el);
            if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp);
            else return false;
        },

        previous: function(el) {
            return hs.previousOrNext(el, -1);
        },

        next: function(el) {
            return hs.previousOrNext(el, 1);
        },

        keyHandler: function(e) {
            if (!e) e = window.event;
            if (!e.target) e.target = e.srcElement; // ie
            if (typeof e.target.form != 'undefined') return true; // form element has focus
            if (!hs.fireEvent(hs, 'onKeyDown', e)) return true;
            var exp = hs.getExpander();

            var op = null;
            switch (e.keyCode) {
                case 70: // f
                    if (exp) exp.doFullExpand();
                    return true;
                case 32: // Space
                    op = 2;
                    break;
                case 34: // Page Down
                case 39: // Arrow right
                case 40: // Arrow down
                    op = 1;
                    break;
                case 8:  // Backspace
                case 33: // Page Up
                case 37: // Arrow left
                case 38: // Arrow up
                    op = -1;
                    break;
                case 27: // Escape
                case 13: // Enter
                    op = 0;
            }
            if (op !== null) {
                if (op != 2) hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
                if (!hs.enableKeyListener) return true;

                if (e.preventDefault) e.preventDefault();
                else e.returnValue = false;
                if (exp) {
                    if (op == 0) {
                        exp.close();
                    } else if (op == 2) {
                        if (exp.slideshow) exp.slideshow.hitSpace();
                    } else {
                        if (exp.slideshow) exp.slideshow.pause();
                        hs.previousOrNext(exp.key, op);
                    }
                    return false;
                }
            }
            return true;
        },


        registerOverlay: function(overlay) {
            hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId' + hs.idCounter++ }));
        },


        addSlideshow: function(options) {
            var sg = options.slideshowGroup;
            if (typeof sg == 'object') {
                for (var i = 0; i < sg.length; i++) {
                    var o = {};
                    for (var x in options) o[x] = options[x];
                    o.slideshowGroup = sg[i];
                    hs.push(hs.slideshows, o);
                }
            } else {
                hs.push(hs.slideshows, options);
            }
        },

        getWrapperKey: function(element, expOnly) {
            var el, re = /^highslide-wrapper-([0-9]+)$/;
            // 1. look in open expanders
            el = element;
            while (el.parentNode) {
                if (el.hsKey !== undefined) return el.hsKey;
                if (el.id && re.test(el.id)) return el.id.replace(re, "$1");
                el = el.parentNode;
            }
            // 2. look in thumbnail
            if (!expOnly) {
                el = element;
                while (el.parentNode) {
                    if (el.tagName && hs.isHsAnchor(el)) {
                        for (var key = 0; key < hs.expanders.length; key++) {
                            var exp = hs.expanders[key];
                            if (exp && exp.a == el) return key;
                        }
                    }
                    el = el.parentNode;
                }
            }
            return null;
        },

        getExpander: function(el, expOnly) {
            if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null;
            if (typeof el == 'number') return hs.expanders[el] || null;
            if (typeof el == 'string') el = hs.$(el);
            return hs.expanders[hs.getWrapperKey(el, expOnly)] || null;
        },

        isHsAnchor: function(a) {
            return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/));
        },

        reOrder: function() {
            for (var i = 0; i < hs.expanders.length; i++)
                if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost();
        },
        fireEvent: function(obj, evt, args) {
            return obj && obj[evt] ? (obj[evt](obj, args) !== false) : true;
        },

        mouseClickHandler: function(e) {
            if (!e) e = window.event;
            if (e.button > 1) return true;
            if (!e.target) e.target = e.srcElement;

            var el = e.target;
            while (el.parentNode
		&& !(/highslide-(image|move|html|resize)/.test(el.className))) {
                el = el.parentNode;
            }
            var exp = hs.getExpander(el);
            if (exp && (exp.isClosing || !exp.isExpanded)) return true;

            if (exp && e.type == 'mousedown') {
                if (e.target.form) return true;
                var match = el.className.match(/highslide-(image|move|resize)/);
                if (match) {
                    hs.dragArgs = {
                        exp: exp,
                        type: match[1],
                        left: exp.x.pos,
                        width: exp.x.size,
                        top: exp.y.pos,
                        height: exp.y.size,
                        clickX: e.clientX,
                        clickY: e.clientY
                    };


                    hs.addEventListener(document, 'mousemove', hs.dragHandler);
                    if (e.preventDefault) e.preventDefault(); // FF

                    if (/highslide-(image|html)-blur/.test(exp.content.className)) {
                        exp.focus();
                        hs.hasFocused = true;
                    }
                    return false;
                }
                else if (/highslide-html/.test(el.className) && hs.focusKey != exp.key) {
                    exp.focus();
                    exp.doShowHide('hidden');
                }
            } else if (e.type == 'mouseup') {

                hs.removeEventListener(document, 'mousemove', hs.dragHandler);

                if (hs.dragArgs) {
                    if (hs.styleRestoreCursor && hs.dragArgs.type == 'image')
                        hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor;
                    var hasDragged = hs.dragArgs.hasDragged;

                    if (!hasDragged && !hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
                        if (hs.fireEvent(exp, 'onImageClick'))
                            exp.close();
                    }
                    else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) {
                        hs.dragArgs.exp.doShowHide('hidden');
                    }

                    if (hs.dragArgs.exp.releaseMask)
                        hs.dragArgs.exp.releaseMask.style.display = 'none';

                    if (hasDragged) hs.fireEvent(hs.dragArgs.exp, 'onDrop', hs.dragArgs);
                    hs.hasFocused = false;
                    hs.dragArgs = null;

                } else if (/highslide-image-blur/.test(el.className)) {
                    el.style.cursor = hs.styleRestoreCursor;
                }
            }
            return false;
        },

        dragHandler: function(e) {
            if (!hs.dragArgs) return true;
            if (!e) e = window.event;
            var a = hs.dragArgs, exp = a.exp;
            if (exp.iframe) {
                if (!exp.releaseMask) exp.releaseMask = hs.createElement('div', null,
			{ position: 'absolute', width: exp.x.size + 'px', height: exp.y.size + 'px',
			    left: exp.x.cb + 'px', top: exp.y.cb + 'px', zIndex: 4, background: (hs.ie ? 'white' : 'none'),
			    opacity: .01
			},
			exp.wrapper, true);
                if (exp.releaseMask.style.display == 'none')
                    exp.releaseMask.style.display = '';
            }

            a.dX = e.clientX - a.clickX;
            a.dY = e.clientY - a.clickY;

            var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2));
            if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0)
		|| (distance > (hs.dragSensitivity || 5));

            if (a.hasDragged && e.clientX > 5 && e.clientY > 5) {
                if (!hs.fireEvent(exp, 'onDrag', a)) return false;

                if (a.type == 'resize') exp.resize(a);
                else {
                    exp.moveTo(a.left + a.dX, a.top + a.dY);
                    if (a.type == 'image') exp.content.style.cursor = 'move';
                }
            }
            return false;
        },

        wrapperMouseHandler: function(e) {
            try {
                if (!e) e = window.event;
                var over = /mouseover/i.test(e.type);
                if (!e.target) e.target = e.srcElement; // ie
                if (hs.ie) e.relatedTarget =
			over ? e.fromElement : e.toElement; // ie
                var exp = hs.getExpander(e.target);
                if (!exp.isExpanded) return;
                if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp
			|| hs.dragArgs) return;
                hs.fireEvent(exp, over ? 'onMouseOver' : 'onMouseOut', e);
                for (var i = 0; i < exp.overlays.length; i++) (function() {
                    var o = hs.$('hsId' + exp.overlays[i]);
                    if (o && o.hideOnMouseOut) {
                        if (over) hs.setStyles(o, { visibility: 'visible', display: '' });
                        hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur);
                    }
                })();
            } catch (e) { }
        },
        addEventListener: function(el, event, func) {
            if (el == document && event == 'ready') hs.push(hs.onReady, func);
            try {
                el.addEventListener(event, func, false);
            } catch (e) {
                try {
                    el.detachEvent('on' + event, func);
                    el.attachEvent('on' + event, func);
                } catch (e) {
                    el['on' + event] = func;
                }
            }
        },

        removeEventListener: function(el, event, func) {
            try {
                el.removeEventListener(event, func, false);
            } catch (e) {
                try {
                    el.detachEvent('on' + event, func);
                } catch (e) {
                    el['on' + event] = null;
                }
            }
        },

        preloadFullImage: function(i) {
            if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') {
                var img = document.createElement('img');
                img.onload = function() {
                    img = null;
                    hs.preloadFullImage(i + 1);
                };
                img.src = hs.preloadTheseImages[i];
            }
        },
        preloadImages: function(number) {
            if (number && typeof number != 'object') hs.numberOfImagesToPreload = number;

            var arr = hs.getAnchors();
            for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) {
                hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i]));
            }

            // preload outlines
            if (hs.outlineType) new hs.Outline(hs.outlineType, function() { hs.preloadFullImage(0) });
            else

                hs.preloadFullImage(0);

            // preload cursor
            if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor });
        },


        init: function() {
            if (!hs.container) {

                hs.getPageSize();
                hs.ieLt7 = hs.ie && hs.uaVersion < 7;
                hs.ie6SSL = hs.ieLt7 && location.protocol == 'https:';
                for (var x in hs.langDefaults) {
                    if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x];
                    else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined')
                        hs.lang[x] = hs.langDefaults[x];
                }

                hs.container = hs.createElement('div', {
                    className: 'highslide-container'
                }, {
                    position: 'absolute',
                    left: 0,
                    top: 0,
                    width: '100%',
                    zIndex: hs.zIndexCounter,
                    direction: 'ltr'
                },
			document.body,
			true
		);
                hs.loading = hs.createElement('a', {
                    className: 'highslide-loading',
                    title: hs.lang.loadingTitle,
                    innerHTML: hs.lang.loadingText,
                    href: 'javascript:;'
                }, {
                    position: 'absolute',
                    top: '-9999px',
                    opacity: hs.loadingOpacity,
                    zIndex: 1
                }, hs.container
		);
                hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container);
                hs.viewport = hs.createElement('div', {
                    className: 'highslide-viewport highslide-viewport-size'
                }, {
                    visibility: (hs.safari && hs.uaVersion < 525) ? 'visible' : 'hidden'
                }, hs.container, 1
		);
                hs.clearing = hs.createElement('div', null,
			{ clear: 'both', paddingTop: '1px' }, null, true);

                // http://www.robertpenner.com/easing/ 
                Math.linearTween = function(t, b, c, d) {
                    return c * t / d + b;
                };
                Math.easeInQuad = function(t, b, c, d) {
                    return c * (t /= d) * t + b;
                };
                Math.easeOutQuad = function(t, b, c, d) {
                    return -c * (t /= d) * (t - 2) + b;
                };

                hs.hideSelects = hs.ieLt7;
                hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE'
			|| (hs.ie && hs.uaVersion < 5.5));
                hs.fireEvent(this, 'onActivate');
            }
        },
        ready: function() {
            if (hs.isReady) return;
            hs.isReady = true;

            for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i]();
        },

        updateAnchors: function() {
            var el, els, all = [], images = [], groups = {}, re;

            for (var i = 0; i < hs.openerTagNames.length; i++) {
                els = document.getElementsByTagName(hs.openerTagNames[i]);
                for (var j = 0; j < els.length; j++) {
                    el = els[j];
                    re = hs.isHsAnchor(el);
                    if (re) {
                        hs.push(all, el);
                        if (re[0] == 'hs.expand') hs.push(images, el);
                        var g = hs.getParam(el, 'slideshowGroup') || 'none';
                        if (!groups[g]) groups[g] = [];
                        hs.push(groups[g], el);
                    }
                }
            }
            hs.anchors = { all: all, groups: groups, images: images };
            return hs.anchors;

        },

        getAnchors: function() {
            return hs.anchors || hs.updateAnchors();
        },


        close: function(el) {
            var exp = hs.getExpander(el);
            if (exp) exp.close();
            return false;
        }
    }; // end hs object
    hs.fx = function(elem, options, prop) {
        this.options = options;
        this.elem = elem;
        this.prop = prop;

        if (!options.orig) options.orig = {};
    };
    hs.fx.prototype = {
        update: function() {
            (hs.fx.step[this.prop] || hs.fx.step._default)(this);

            if (this.options.step)
                this.options.step.call(this.elem, this.now, this);

        },
        custom: function(from, to, unit) {
            this.startTime = (new Date()).getTime();
            this.start = from;
            this.end = to;
            this.unit = unit; // || this.unit || "px";
            this.now = this.start;
            this.pos = this.state = 0;

            var self = this;
            function t(gotoEnd) {
                return self.step(gotoEnd);
            }

            t.elem = this.elem;

            if (t() && hs.timers.push(t) == 1) {
                hs.timerId = setInterval(function() {
                    var timers = hs.timers;

                    for (var i = 0; i < timers.length; i++)
                        if (!timers[i]())
                        timers.splice(i--, 1);

                    if (!timers.length) {
                        clearInterval(hs.timerId);
                    }
                }, 13);
            }
        },
        step: function(gotoEnd) {
            var t = (new Date()).getTime();
            if (gotoEnd || t >= this.options.duration + this.startTime) {
                this.now = this.end;
                this.pos = this.state = 1;
                this.update();

                this.options.curAnim[this.prop] = true;

                var done = true;
                for (var i in this.options.curAnim)
                    if (this.options.curAnim[i] !== true)
                    done = false;

                if (done) {
                    if (this.options.complete) this.options.complete.call(this.elem);
                }
                return false;
            } else {
                var n = t - this.startTime;
                this.state = n / this.options.duration;
                this.pos = this.options.easing(n, 0, 1, this.options.duration);
                this.now = this.start + ((this.end - this.start) * this.pos);
                this.update();
            }
            return true;
        }

    };

    hs.extend(hs.fx, {
        step: {

            opacity: function(fx) {
                hs.setStyles(fx.elem, { opacity: fx.now });
            },

            _default: function(fx) {
                try {
                    if (fx.elem.style && fx.elem.style[fx.prop] != null)
                        fx.elem.style[fx.prop] = fx.now + fx.unit;
                    else
                        fx.elem[fx.prop] = fx.now;
                } catch (e) { }
            }
        }
    });

    hs.Outline = function(outlineType, onLoad) {
        this.onLoad = onLoad;
        this.outlineType = outlineType;
        var v = hs.uaVersion, tr;

        this.hasAlphaImageLoader = hs.ie && v >= 5.5 && v < 7;
        if (!outlineType) {
            if (onLoad) onLoad();
            return;
        }

        hs.init();
        this.table = hs.createElement(
		'table', {
		    cellSpacing: 0
		}, {
		    visibility: 'hidden',
		    position: 'absolute',
		    borderCollapse: 'collapse',
		    width: 0
		},
		hs.container,
		true
	);
        var tbody = hs.createElement('tbody', null, null, this.table, 1);

        this.td = [];
        for (var i = 0; i <= 8; i++) {
            if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true);
            this.td[i] = hs.createElement('td', null, null, tr, true);
            var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position: 'relative' };
            hs.setStyles(this.td[i], style);
        }
        this.td[4].className = outlineType + ' highslide-outline';

        this.preloadGraphic();
    };

    hs.Outline.prototype = {
        preloadGraphic: function() {
            var src = hs.graphicsDir + (hs.outlinesDir || "outlines/") + this.outlineType + ".png";

            var appendTo = hs.safari ? hs.container : null;
            this.graphic = hs.createElement('img', null, { position: 'absolute',
                top: '-9999px'
            }, appendTo, true); // for onload trigger

            var pThis = this;
            this.graphic.onload = function() { pThis.onGraphicLoad(); };

            this.graphic.src = src;
        },

        onGraphicLoad: function() {
            var o = this.offset = this.graphic.width / 4,
		pos = [[0, 0], [0, -4], [-2, 0], [0, -8], 0, [-2, -8], [0, -2], [0, -6], [-2, -2]],
		dim = { height: (2 * o) + 'px', width: (2 * o) + 'px' };
            for (var i = 0; i <= 8; i++) {
                if (pos[i]) {
                    if (this.hasAlphaImageLoader) {
                        var w = (i == 1 || i == 7) ? '100%' : this.graphic.width + 'px';
                        var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden' }, this.td[i], true);
                        hs.createElement('div', null, {
                            filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='" + this.graphic.src + "')",
                            position: 'absolute',
                            width: w,
                            height: this.graphic.height + 'px',
                            left: (pos[i][0] * o) + 'px',
                            top: (pos[i][1] * o) + 'px'
                        },
				div,
				true);
                    } else {
                        hs.setStyles(this.td[i], { background: 'url(' + this.graphic.src + ') ' + (pos[i][0] * o) + 'px ' + (pos[i][1] * o) + 'px' });
                    }

                    if (window.opera && (i == 3 || i == 5))
                        hs.createElement('div', null, dim, this.td[i], true);

                    hs.setStyles(this.td[i], dim);
                }
            }
            this.graphic = null;
            if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy();
            hs.pendingOutlines[this.outlineType] = this;
            if (this.onLoad) this.onLoad();
        },

        setPosition: function(pos, offset, vis, dur, easing) {
            var exp = this.exp,
		stl = exp.wrapper.style,
		offset = offset || 0,
		pos = pos || {
		    x: exp.x.pos + offset,
		    y: exp.y.pos + offset,
		    w: exp.x.get('wsize') - 2 * offset,
		    h: exp.y.get('wsize') - 2 * offset
		};
            if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset)
		? 'visible' : 'hidden';
            hs.setStyles(this.table, {
                left: (pos.x - this.offset) + 'px',
                top: (pos.y - this.offset) + 'px',
                width: (pos.w + 2 * this.offset) + 'px'
            });

            pos.w -= 2 * this.offset;
            pos.h -= 2 * this.offset;
            hs.setStyles(this.td[4], {
                width: pos.w >= 0 ? pos.w + 'px' : 0,
                height: pos.h >= 0 ? pos.h + 'px' : 0
            });
            if (this.hasAlphaImageLoader) this.td[3].style.height
		= this.td[5].style.height = this.td[4].style.height;

        },

        destroy: function(hide) {
            if (hide) this.table.style.visibility = 'hidden';
            else hs.discardElement(this.table);
        }
    };

    hs.Dimension = function(exp, dim) {
        this.exp = exp;
        this.dim = dim;
        this.ucwh = dim == 'x' ? 'Width' : 'Height';
        this.wh = this.ucwh.toLowerCase();
        this.uclt = dim == 'x' ? 'Left' : 'Top';
        this.lt = this.uclt.toLowerCase();
        this.ucrb = dim == 'x' ? 'Right' : 'Bottom';
        this.rb = this.ucrb.toLowerCase();
        this.p1 = this.p2 = 0;
    };
    hs.Dimension.prototype = {
        get: function(key) {
            switch (key) {
                case 'loadingPos':
                    return this.tpos + this.tb + (this.t - hs.loading['offset' + this.ucwh]) / 2;
                case 'loadingPosXfade':
                    return this.pos + this.cb + this.p1 + (this.size - hs.loading['offset' + this.ucwh]) / 2;
                case 'wsize':
                    return this.size + 2 * this.cb + this.p1 + this.p2;
                case 'fitsize':
                    return this.clientSize - this.marginMin - this.marginMax;
                case 'maxsize':
                    return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2;
                case 'opos':
                    return this.pos - (this.exp.outline ? this.exp.outline.offset : 0);
                case 'osize':
                    return this.get('wsize') + (this.exp.outline ? 2 * this.exp.outline.offset : 0);
                case 'imgPad':
                    return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0;

            }
        },
        calcBorders: function() {
            // correct for borders
            this.cb = (this.exp.content['offset' + this.ucwh] - this.t) / 2;

            this.marginMax = hs['margin' + this.ucrb];
        },
        calcThumb: function() {
            this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) :
		this.exp.el['offset' + this.ucwh];
            this.tpos = this.exp.tpos[this.dim];
            this.tb = (this.exp.el['offset' + this.ucwh] - this.t) / 2;
            if (this.tpos == 0 || this.tpos == -1) {
                this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll' + this.uclt];
            };
        },
        calcExpanded: function() {
            var exp = this.exp;
            this.justify = 'auto';

            // get alignment
            if (exp.align == 'center') this.justify = 'center';
            else if (new RegExp(this.lt).test(exp.anchor)) this.justify = null;
            else if (new RegExp(this.rb).test(exp.anchor)) this.justify = 'max';


            // size and position
            this.pos = this.tpos - this.cb + this.tb;

            if (this.maxHeight && this.dim == 'x')
                exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full);

            this.size = Math.min(this.full, exp['max' + this.ucwh] || this.full);
            this.minSize = exp.allowSizeReduction ?
		Math.min(exp['min' + this.ucwh], this.full) : this.full;
            if (exp.isImage && exp.useBox) {
                this.size = exp[this.wh];
                this.imgSize = this.full;
            }
            if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth;
            this.target = exp['target' + this.dim.toUpperCase()];
            this.marginMin = hs['margin' + this.uclt];
            this.scroll = hs.page['scroll' + this.uclt];
            this.clientSize = hs.page[this.wh];
        },
        setSize: function(i) {
            var exp = this.exp;
            if (exp.isImage && (exp.useBox || hs.padToMinWidth)) {
                this.imgSize = i;
                this.size = Math.max(this.size, this.imgSize);
                exp.content.style[this.lt] = this.get('imgPad') + 'px';
            } else
                this.size = i;

            exp.content.style[this.wh] = i + 'px';
            exp.wrapper.style[this.wh] = this.get('wsize') + 'px';
            if (exp.outline) exp.outline.setPosition();
            if (exp.releaseMask) exp.releaseMask.style[this.wh] = i + 'px';
            if (this.dim == 'y' && exp.iDoc && exp.body.style.height != 'auto') try {
                exp.iDoc.body.style.overflow = 'auto';
            } catch (e) { }
            if (exp.isHtml) {
                var d = exp.scrollerDiv;
                if (this.sizeDiff === undefined)
                    this.sizeDiff = exp.innerContent['offset' + this.ucwh] - d['offset' + this.ucwh];
                d.style[this.wh] = (this.size - this.sizeDiff) + 'px';

                if (this.dim == 'x') exp.mediumContent.style.width = 'auto';
                if (exp.body) exp.body.style[this.wh] = 'auto';
            }
            if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true);
            if (this.dim == 'x' && exp.slideshow && exp.isImage) {
                if (i == this.full) exp.slideshow.disable('full-expand');
                else exp.slideshow.enable('full-expand');
            }
        },
        setPos: function(i) {
            this.pos = i;
            this.exp.wrapper.style[this.lt] = i + 'px';

            if (this.exp.outline) this.exp.outline.setPosition();

        }
    };

    hs.Expander = function(a, params, custom, contentType) {
        if (document.readyState && hs.ie && !hs.isReady) {
            hs.addEventListener(document, 'ready', function() {
                new hs.Expander(a, params, custom, contentType);
            });
            return;
        }
        this.a = a;
        this.custom = custom;
        this.contentType = contentType || 'image';
        this.isHtml = (contentType == 'html');
        this.isImage = !this.isHtml;

        hs.continuePreloading = false;
        this.overlays = [];
        this.last = hs.last;
        hs.last = null;
        hs.init();
        var key = this.key = hs.expanders.length;
        // override inline parameters
        for (var i = 0; i < hs.overrides.length; i++) {
            var name = hs.overrides[i];
            this[name] = params && typeof params[name] != 'undefined' ?
			params[name] : hs[name];
        }
        if (!this.src) this.src = a.href;

        // get thumb
        var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a;
        el = this.thumb = el.getElementsByTagName('img')[0] || el;
        this.thumbsUserSetId = el.id || a.id;
        if (!hs.fireEvent(this, 'onInit')) return true;

        // check if already open
        for (var i = 0; i < hs.expanders.length; i++) {
            if (hs.expanders[i] && hs.expanders[i].a == a
			&& !(this.last && this.transitions[1] == 'crossfade')) {
                hs.expanders[i].focus();
                return false;
            }
        }

        // cancel other
        if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) {
            if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
                hs.expanders[i].cancelLoading();
            }
        }
        hs.expanders[key] = this;
        if (!hs.allowMultipleInstances && !hs.upcoming) {
            if (hs.expanders[key - 1]) hs.expanders[key - 1].close();
            if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
                hs.expanders[hs.focusKey].close();
        }

        // initiate metrics
        this.el = el;
        this.tpos = hs.getPosition(el);
        hs.getPageSize();
        var x = this.x = new hs.Dimension(this, 'x');
        x.calcThumb();
        var y = this.y = new hs.Dimension(this, 'y');
        y.calcThumb();
        this.wrapper = hs.createElement(
		'div', {
		    id: 'highslide-wrapper-' + this.key,
		    className: 'highslide-wrapper ' + this.wrapperClassName
		}, {
		    visibility: 'hidden',
		    position: 'absolute',
		    zIndex: hs.zIndexCounter += 2
		}, null, true);

        this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
        if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
            this.outlineWhileAnimating = 0;

        // get the outline
        if (!this.outlineType
		|| (this.last && this.isImage && this.transitions[1] == 'crossfade')) {
            this[this.contentType + 'Create']();

        } else if (hs.pendingOutlines[this.outlineType]) {
            this.connectOutline();
            this[this.contentType + 'Create']();

        } else {
            this.showLoading();
            var exp = this;
            new hs.Outline(this.outlineType,
			function() {
			    exp.connectOutline();
			    exp[exp.contentType + 'Create']();
			}
		);
        }
        return true;
    };

    hs.Expander.prototype = {
        error: function(e) {
            // alert ('Line '+ e.lineNumber +': '+ e.message);
            window.location.href = this.src;
        },

        connectOutline: function() {
            var outline = this.outline = hs.pendingOutlines[this.outlineType];
            outline.exp = this;
            outline.table.style.zIndex = this.wrapper.style.zIndex - 1;
            hs.pendingOutlines[this.outlineType] = null;
        },

        showLoading: function() {
            if (this.onLoadStarted || this.loading) return;

            this.loading = hs.loading;
            var exp = this;
            this.loading.onclick = function() {
                exp.cancelLoading();
            };


            if (!hs.fireEvent(this, 'onShowLoading')) return;
            var exp = this,
		l = this.x.get('loadingPos') + 'px',
		t = this.y.get('loadingPos') + 'px';
            if (!tgt && this.last && this.transitions[1] == 'crossfade')
                var tgt = this.last;
            if (tgt) {
                l = tgt.x.get('loadingPosXfade') + 'px';
                t = tgt.y.get('loadingPosXfade') + 'px';
                this.loading.style.zIndex = hs.zIndexCounter++;
            }
            setTimeout(function() {
                if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })
            }
	, 100);
        },

        imageCreate: function() {
            var exp = this;

            var img = document.createElement('img');
            this.content = img;
            img.onload = function() {
                if (hs.expanders[exp.key]) exp.contentLoaded();
            };
            if (hs.blockRightClick) img.oncontextmenu = function() { return false; };
            img.className = 'highslide-image';
            hs.setStyles(img, {
                visibility: 'hidden',
                display: 'block',
                position: 'absolute',
                maxWidth: '9999px',
                zIndex: 3
            });
            img.title = hs.lang.restoreTitle;
            if (hs.safari) hs.container.appendChild(img);
            if (hs.ie && hs.flushImgSize) img.src = null;
            img.src = this.src;

            this.showLoading();
        },

        htmlCreate: function() {
            if (!hs.fireEvent(this, 'onBeforeGetContent')) return;
            this.content = hs.getNode(this.contentId);
            if (!this.content)
                this.content = hs.getSelfRendered();
            this.getInline(['maincontent']);
            if (this.maincontent) {
                var body = hs.getElementByClass(this.content, 'div', 'highslide-body');
                if (body) body.appendChild(this.maincontent);
                this.maincontent.style.display = 'block';
            }
            hs.fireEvent(this, 'onAfterGetContent');

            var innerContent = this.innerContent = this.content;

            if (/(swf|iframe)/.test(this.objectType)) this.setObjContainerSize(innerContent);

            // the content tree
            hs.container.appendChild(this.wrapper);
            hs.setStyles(this.wrapper, {
                position: 'static',
                padding: '0 ' + hs.marginRight + 'px 0 ' + hs.marginLeft + 'px'
            });
            this.content = hs.createElement(
    	'div', {
    	    className: 'highslide-html'
    	}, {
    	    position: 'relative',
    	    zIndex: 3,
    	    overflow: 'hidden'
    	},
		this.wrapper
	);
            this.mediumContent = hs.createElement('div', null, null, this.content, 1);
            this.mediumContent.appendChild(innerContent);

            hs.setStyles(innerContent, {
                position: 'relative',
                display: 'block',
                direction: hs.lang.cssDirection || ''
            });
            if (this.width) innerContent.style.width = this.width + 'px';
            if (this.height) hs.setStyles(innerContent, {
                height: this.height + 'px',
                overflow: 'hidden'
            });
            if (innerContent.offsetWidth < this.minWidth)
                innerContent.style.width = this.minWidth + 'px';

            if (this.objectType == 'iframe' && this.objectLoadTime == 'before') {
                this.writeExtendedContent();
            }
            else
                this.contentLoaded();
        },

        contentLoaded: function() {
            try {
                if (!this.content) return;
                this.content.onload = null;
                if (this.onLoadStarted) return;
                else this.onLoadStarted = true;

                var x = this.x, y = this.y;

                if (this.loading) {
                    hs.setStyles(this.loading, { top: '-9999px' });
                    this.loading = null;
                    hs.fireEvent(this, 'onHideLoading');
                }
                if (this.isImage) {
                    x.full = this.content.width;
                    y.full = this.content.height;

                    hs.setStyles(this.content, {
                        width: x.t + 'px',
                        height: y.t + 'px'
                    });
                    this.wrapper.appendChild(this.content);
                    hs.container.appendChild(this.wrapper);
                } else if (this.htmlGetSize) this.htmlGetSize();

                x.calcBorders();
                y.calcBorders();

                hs.setStyles(this.wrapper, {
                    left: (x.tpos + x.tb - x.cb) + 'px',
                    top: (y.tpos + x.tb - y.cb) + 'px'
                });


                this.initSlideshow();
                this.getOverlays();

                var ratio = x.full / y.full;
                x.calcExpanded();
                this.justify(x);

                y.calcExpanded();
                this.justify(y);
                if (this.isHtml) this.htmlSizeOperations();
                if (this.overlayBox) this.sizeOverlayBox(0, 1);


                if (this.allowSizeReduction) {
                    if (this.isImage)
                        this.correctRatio(ratio);
                    else this.fitOverlayBox();
                    var ss = this.slideshow;
                    if (ss && this.last && ss.controls && ss.fixedControls) {
                        var pos = ss.overlayOptions.position || '', p;
                        for (var dim in hs.oPos) for (var i = 0; i < 5; i++) {
                            p = this[dim];
                            if (pos.match(hs.oPos[dim][i])) {
                                p.pos = this.last[dim].pos
							+ (this.last[dim].p1 - p.p1)
							+ (this.last[dim].size - p.size) * [0, 0, .5, 1, 1][i];
                                if (ss.fixedControls == 'fit') {
                                    if (p.pos + p.size + p.p1 + p.p2 > p.scroll + p.clientSize - p.marginMax)
                                        p.pos = p.scroll + p.clientSize - p.size - p.marginMin - p.marginMax - p.p1 - p.p2;
                                    if (p.pos < p.scroll + p.marginMin) p.pos = p.scroll + p.marginMin;
                                }
                            }
                        }
                    }
                    if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
                        this.createFullExpand();
                        if (this.overlays.length == 1) this.sizeOverlayBox();
                    }
                }
                this.show();

            } catch (e) {
                this.error(e);
            }
        },


        setObjContainerSize: function(parent, auto) {
            var c = hs.getElementByClass(parent, 'DIV', 'highslide-body');
            if (/(iframe|swf)/.test(this.objectType)) {
                if (this.objectWidth) c.style.width = this.objectWidth + 'px';
                if (this.objectHeight) c.style.height = this.objectHeight + 'px';
            }
        },

        writeExtendedContent: function() {
            if (this.hasExtendedContent) return;
            var exp = this;
            this.body = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body');
            if (this.objectType == 'iframe') {
                this.showLoading();
                var ruler = hs.clearing.cloneNode(1);
                this.body.appendChild(ruler);
                this.newWidth = this.innerContent.offsetWidth;
                if (!this.objectWidth) this.objectWidth = ruler.offsetWidth;
                var hDiff = this.innerContent.offsetHeight - this.body.offsetHeight,
			h = this.objectHeight || hs.page.height - hDiff - hs.marginTop - hs.marginBottom,
			onload = this.objectLoadTime == 'before' ?
				' onload="if (hs.expanders[' + this.key + ']) hs.expanders[' + this.key + '].contentLoaded()" ' : '';
                this.body.innerHTML += '<iframe name="hs' + (new Date()).getTime() + '" frameborder="0" key="' + this.key + '" '
			+ ' style="width:' + this.objectWidth + 'px; height:' + h + 'px" '
			+ onload + ' src="' + this.src + '" ></iframe>';
                this.ruler = this.body.getElementsByTagName('div')[0];
                this.iframe = this.body.getElementsByTagName('iframe')[0];

                if (this.objectLoadTime == 'after') this.correctIframeSize();

            }
            this.hasExtendedContent = true;
        },
        htmlGetSize: function() {
            if (this.iframe && !this.objectHeight) { // loadtime before
                this.iframe.style.height = this.body.style.height = this.getIframePageHeight() + 'px';
            }
            this.innerContent.appendChild(hs.clearing);
            if (!this.x.full) this.x.full = this.innerContent.offsetWidth;
            this.y.full = this.innerContent.offsetHeight;
            this.innerContent.removeChild(hs.clearing);
            if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { // ie css bug
                this.newHeight = parseInt(this.innerContent.currentStyle.height);
            }
            hs.setStyles(this.wrapper, { position: 'absolute', padding: '0' });
            hs.setStyles(this.content, { width: this.x.t + 'px', height: this.y.t + 'px' });

        },

        getIframePageHeight: function() {
            var h;
            try {
                var doc = this.iDoc = this.iframe.contentDocument || this.iframe.contentWindow.document;
                var clearing = doc.createElement('div');
                clearing.style.clear = 'both';
                doc.body.appendChild(clearing);
                h = clearing.offsetTop;
                if (hs.ie) h += parseInt(doc.body.currentStyle.marginTop)
			+ parseInt(doc.body.currentStyle.marginBottom) - 1;
            } catch (e) { // other domain
                h = 300;
            }
            return h;
        },
        correctIframeSize: function() {
            var wDiff = this.innerContent.offsetWidth - this.ruler.offsetWidth;
            hs.discardElement(this.ruler);
            if (wDiff < 0) wDiff = 0;

            var hDiff = this.innerContent.offsetHeight - this.iframe.offsetHeight;
            if (this.iDoc && !this.objectHeight && !this.height && this.y.size == this.y.full) try {
                this.iDoc.body.style.overflow = 'hidden';
            } catch (e) { }
            hs.setStyles(this.iframe, {
                width: Math.abs(this.x.size - wDiff) + 'px',
                height: Math.abs(this.y.size - hDiff) + 'px'
            });
            hs.setStyles(this.body, {
                width: this.iframe.style.width,
                height: this.iframe.style.height
            });

            this.scrollingContent = this.iframe;
            this.scrollerDiv = this.scrollingContent;

        },
        htmlSizeOperations: function() {

            this.setObjContainerSize(this.innerContent);


            // handle minimum size
            if (this.x.size < this.x.full && !this.allowWidthReduction) this.x.size = this.x.full;
            if (this.y.size < this.y.full && !this.allowHeightReduction) this.y.size = this.y.full;
            this.scrollerDiv = this.innerContent;
            hs.setStyles(this.mediumContent, {
                position: 'relative',
                width: this.x.size + 'px'
            });
            hs.setStyles(this.innerContent, {
                border: 'none',
                width: 'auto',
                height: 'auto'
            });
            var node = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body');
            if (node && !/(iframe|swf)/.test(this.objectType)) {
                var cNode = node; // wrap to get true size
                node = hs.createElement(cNode.nodeName, null, { overflow: 'hidden' }, null, true);
                cNode.parentNode.insertBefore(node, cNode);
                node.appendChild(hs.clearing); // IE6
                node.appendChild(cNode);

                var wDiff = this.innerContent.offsetWidth - node.offsetWidth;
                var hDiff = this.innerContent.offsetHeight - node.offsetHeight;
                node.removeChild(hs.clearing);

                var kdeBugCorr = hs.safari || navigator.vendor == 'KDE' ? 1 : 0; // KDE repainting bug
                hs.setStyles(node, {
                    width: (this.x.size - wDiff - kdeBugCorr) + 'px',
                    height: (this.y.size - hDiff) + 'px',
                    overflow: 'auto',
                    position: 'relative'
                }
    	);
                if (kdeBugCorr && cNode.offsetHeight > node.offsetHeight) {
                    node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px';
                }
                this.scrollingContent = node;
                this.scrollerDiv = this.scrollingContent;
            }
            if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize();
            if (!this.scrollingContent && this.y.size < this.mediumContent.offsetHeight) this.scrollerDiv = this.content;

            if (this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) {
                this.x.size += 17; // room for scrollbars
            }
            if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) {
                setTimeout("try { hs.expanders[" + this.key + "].scrollerDiv.style.overflow = 'auto'; } catch(e) {}",
			 hs.expandDuration);
            }
        },

        justify: function(p, moveOnly) {
            var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y';

            if (tgt && tgt.match(/ /)) {
                tgtArr = tgt.split(' ');
                tgt = tgtArr[0];
            }
            if (tgt && hs.$(tgt)) {
                p.pos = hs.getPosition(hs.$(tgt))[dim];
                if (tgtArr && tgtArr[1] && tgtArr[1].match(/^[-]?[0-9]+px$/))
                    p.pos += parseInt(tgtArr[1]);
                if (p.size < p.minSize) p.size = p.minSize;

            } else if (p.justify == 'auto' || p.justify == 'center') {

                var hasMovedMin = false;

                var allowReduce = p.exp.allowSizeReduction;
                if (p.justify == 'center')
                    p.pos = Math.round(p.scroll + (p.clientSize + p.marginMin - p.marginMax - p.get('wsize')) / 2);
                else
                    p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2));
                if (p.pos < p.scroll + p.marginMin) {
                    p.pos = p.scroll + p.marginMin;
                    hasMovedMin = true;
                }
                if (!moveOnly && p.size < p.minSize) {
                    p.size = p.minSize;
                    allowReduce = false;
                }
                if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) {
                    if (!moveOnly && hasMovedMin && allowReduce) {
                        p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize'));
                    } else if (p.get('wsize') < p.get('fitsize')) {
                        p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize');
                    } else { // image larger than viewport
                        p.pos = p.scroll + p.marginMin;
                        if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
                    }
                }

                if (!moveOnly && p.size < p.minSize) {
                    p.size = p.minSize;
                    allowReduce = false;
                }


            } else if (p.justify == 'max') {
                p.pos = Math.floor(p.pos - p.size + p.t);
            }


            if (p.pos < p.marginMin) {
                var tmpMin = p.pos;
                p.pos = p.marginMin;

                if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin);

            }
        },

        correctRatio: function(ratio) {
            var x = this.x,
		y = this.y,
		changed = false,
		xSize = Math.min(x.full, x.size),
		ySize = Math.min(y.full, y.size),
		useBox = (this.useBox || hs.padToMinWidth);

            if (xSize / ySize > ratio) { // width greater
                xSize = ySize * ratio;
                if (xSize < x.minSize) { // below minWidth
                    xSize = x.minSize;
                    ySize = xSize / ratio;
                }
                changed = true;

            } else if (xSize / ySize < ratio) { // height greater
                ySize = xSize / ratio;
                changed = true;
            }

            if (hs.padToMinWidth && x.full < x.minSize) {
                x.imgSize = x.full;
                y.size = y.imgSize = y.full;
            } else if (this.useBox) {
                x.imgSize = xSize;
                y.imgSize = ySize;
            } else {
                x.size = xSize;
                y.size = ySize;
            }
            changed = this.fitOverlayBox(useBox ? null : ratio, changed);
            if (useBox && y.size < y.imgSize) {
                y.imgSize = y.size;
                x.imgSize = y.size * ratio;
            }
            if (changed || useBox) {
                x.pos = x.tpos - x.cb + x.tb;
                x.minSize = x.size;
                this.justify(x, true);

                y.pos = y.tpos - y.cb + y.tb;
                y.minSize = y.size;
                this.justify(y, true);
                if (this.overlayBox) this.sizeOverlayBox();
            }
        },
        fitOverlayBox: function(ratio, changed) {
            var x = this.x, y = this.y;
            if (this.overlayBox && (this.isImage || this.allowHeightReduction)) {
                while (y.size > this.minHeight && x.size > this.minWidth
				&& y.get('wsize') > y.get('fitsize')) {
                    y.size -= 10;
                    if (ratio) x.size = y.size * ratio;
                    this.sizeOverlayBox(0, 1);
                    changed = true;
                }
            }
            return changed;
        },

        reflow: function() {
            if (this.scrollerDiv) {
                var h = /iframe/i.test(this.scrollerDiv.tagName) ? (this.getIframePageHeight() + 1) + 'px' : 'auto';
                if (this.body) this.body.style.height = h;
                this.scrollerDiv.style.height = h;
                this.y.setSize(this.innerContent.offsetHeight);
            }
        },

        show: function() {
            var x = this.x, y = this.y;
            this.doShowHide('hidden');
            hs.fireEvent(this, 'onBeforeExpand');
            if (this.slideshow && this.slideshow.thumbstrip) this.slideshow.thumbstrip.selectThumb();

            // Apply size change
            this.changeSize(
		1, {
		    wrapper: {
		        width: x.get('wsize'),
		        height: y.get('wsize'),
		        left: x.pos,
		        top: y.pos
		    },
		    content: {
		        left: x.p1 + x.get('imgPad'),
		        top: y.p1 + y.get('imgPad'),
		        width: x.imgSize || x.size,
		        height: y.imgSize || y.size
		    }
		},
		hs.expandDuration
	);
        },

        changeSize: function(up, to, dur) {
            // transition
            var trans = this.transitions,
	other = up ? (this.last ? this.last.a : null) : hs.upcoming,
	t = (trans[1] && other
			&& hs.getParam(other, 'transitions')[1] == trans[1]) ?
		trans[1] : trans[0];

            if (this[t] && t != 'expand') {
                this[t](up, to);
                return;
            }

            if (this.outline && !this.outlineWhileAnimating) {
                if (up) this.outline.setPosition();
                else this.outline.destroy(
				(this.isHtml && this.preserveContent));
            }


            if (!up) this.destroyOverlays();

            var exp = this,
		x = exp.x,
		y = exp.y,
		easing = this.easing;
            if (!up) easing = this.easingClose || easing;
            var after = up ?
		function() {

		    if (exp.outline) exp.outline.table.style.visibility = "visible";
		    setTimeout(function() {
		        exp.afterExpand();
		    }, 50);
		} :
		function() {
		    exp.afterClose();
		};
            if (up) hs.setStyles(this.wrapper, {
                width: x.t + 'px',
                height: y.t + 'px'
            });
            if (up && this.isHtml) {
                hs.setStyles(this.wrapper, {
                    left: (x.tpos - x.cb + x.tb) + 'px',
                    top: (y.tpos - y.cb + y.tb) + 'px'
                });
            }
            if (this.fadeInOut) {
                hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 });
                hs.extend(to.wrapper, { opacity: up });
            }
            hs.animate(this.wrapper, to.wrapper, {
                duration: dur,
                easing: easing,
                step: function(val, args) {
                    if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') {
                        var fac = up ? args.pos : 1 - args.pos;
                        var pos = {
                            w: x.t + (x.get('wsize') - x.t) * fac,
                            h: y.t + (y.get('wsize') - y.t) * fac,
                            x: x.tpos + (x.pos - x.tpos) * fac,
                            y: y.tpos + (y.pos - y.tpos) * fac
                        };
                        exp.outline.setPosition(pos, 0, 1);
                    }
                    if (exp.isHtml) {
                        if (args.prop == 'left')
                            exp.mediumContent.style.left = (x.pos - val) + 'px';
                        if (args.prop == 'top')
                            exp.mediumContent.style.top = (y.pos - val) + 'px';
                    }
                }
            });
            hs.animate(this.content, to.content, dur, easing, after);
            if (up) {
                this.wrapper.style.visibility = 'visible';
                this.content.style.visibility = 'visible';
                if (this.isHtml) this.innerContent.style.visibility = 'visible';
                this.a.className += ' highslide-active-anchor';
            }
        },



        fade: function(up, to) {
            this.outlineWhileAnimating = false;
            var exp = this, t = up ? hs.expandDuration : 0;

            if (up) {
                hs.animate(this.wrapper, to.wrapper, 0);
                hs.setStyles(this.wrapper, { opacity: 0, visibility: 'visible' });
                hs.animate(this.content, to.content, 0);
                this.content.style.visibility = 'visible';

                hs.animate(this.wrapper, { opacity: 1 }, t, null,
			function() { exp.afterExpand(); });
            }

            if (this.outline) {
                this.outline.table.style.zIndex = this.wrapper.style.zIndex;
                var dir = up || -1,
			offset = this.outline.offset,
			startOff = up ? 3 : offset,
			endOff = up ? offset : 3;
                for (var i = startOff; dir * i <= dir * endOff; i += dir, t += 25) {
                    (function() {
                        var o = up ? endOff - i : startOff - i;
                        setTimeout(function() {
                            exp.outline.setPosition(0, o, 1);
                        }, t);
                    })();
                }
            }


            if (up) { } //setTimeout(function() { exp.afterExpand(); }, t+50);
            else {
                setTimeout(function() {
                    if (exp.outline) exp.outline.destroy(exp.preserveContent);

                    exp.destroyOverlays();

                    hs.animate(exp.wrapper, { opacity: 0 }, hs.restoreDuration, null, function() {
                        exp.afterClose();
                    });
                }, t);
            }
        },
        crossfade: function(up, to, from) {
            if (!up) return;
            var exp = this,
		last = this.last,
		x = this.x,
		y = this.y,
		lastX = last.x,
		lastY = last.y,
		wrapper = this.wrapper,
		content = this.content,
		overlayBox = this.overlayBox;
            hs.removeEventListener(document, 'mousemove', hs.dragHandler);

            hs.setStyles(content, {
                width: (x.imgSize || x.size) + 'px',
                height: (y.imgSize || y.size) + 'px'
            });
            if (overlayBox) overlayBox.style.overflow = 'visible';
            this.outline = last.outline;
            if (this.outline) this.outline.exp = exp;
            last.outline = null;
            var fadeBox = hs.createElement('div', {
                className: 'highslide-image'
            }, {
                position: 'absolute',
                zIndex: 4,
                overflow: 'hidden',
                display: 'none'
            }
	);
            var names = { oldImg: last, newImg: this };
            for (var n in names) {
                this[n] = names[n].content.cloneNode(1);
                hs.setStyles(this[n], {
                    position: 'absolute',
                    border: 0,
                    visibility: 'visible'
                });
                fadeBox.appendChild(this[n]);
            }
            wrapper.appendChild(fadeBox);
            if (this.isHtml) hs.setStyles(this.mediumContent, {
                left: 0,
                top: 0
            });
            if (overlayBox) {
                overlayBox.className = '';
                wrapper.appendChild(overlayBox);
            }
            fadeBox.style.display = '';
            last.content.style.display = 'none';


            if (hs.safari) {
                var match = navigator.userAgent.match(/Safari\/([0-9]{3})/);
                if (match && parseInt(match[1]) < 525) this.wrapper.style.visibility = 'visible';
            }
            hs.animate(wrapper, {
                width: x.size
            }, {
                duration: hs.transitionDuration,
                step: function(val, args) {
                    var pos = args.pos,
				invPos = 1 - pos;
                    var prop,
				size = {},
				props = ['pos', 'size', 'p1', 'p2'];
                    for (var n in props) {
                        prop = props[n];
                        size['x' + prop] = Math.round(invPos * lastX[prop] + pos * x[prop]);
                        size['y' + prop] = Math.round(invPos * lastY[prop] + pos * y[prop]);
                        size.ximgSize = Math.round(
					invPos * (lastX.imgSize || lastX.size) + pos * (x.imgSize || x.size));
                        size.ximgPad = Math.round(invPos * lastX.get('imgPad') + pos * x.get('imgPad'));
                        size.yimgSize = Math.round(
					invPos * (lastY.imgSize || lastY.size) + pos * (y.imgSize || y.size));
                        size.yimgPad = Math.round(invPos * lastY.get('imgPad') + pos * y.get('imgPad'));
                    }
                    if (exp.outline) exp.outline.setPosition({
                        x: size.xpos,
                        y: size.ypos,
                        w: size.xsize + size.xp1 + size.xp2 + 2 * x.cb,
                        h: size.ysize + size.yp1 + size.yp2 + 2 * y.cb
                    });
                    last.wrapper.style.clip = 'rect('
				+ (size.ypos - lastY.pos) + 'px, '
				+ (size.xsize + size.xp1 + size.xp2 + size.xpos + 2 * lastX.cb - lastX.pos) + 'px, '
				+ (size.ysize + size.yp1 + size.yp2 + size.ypos + 2 * lastY.cb - lastY.pos) + 'px, '
				+ (size.xpos - lastX.pos) + 'px)';

                    hs.setStyles(content, {
                        top: (size.yp1 + y.get('imgPad')) + 'px',
                        left: (size.xp1 + x.get('imgPad')) + 'px',
                        marginTop: (y.pos - size.ypos) + 'px',
                        marginLeft: (x.pos - size.xpos) + 'px'
                    });
                    hs.setStyles(wrapper, {
                        top: size.ypos + 'px',
                        left: size.xpos + 'px',
                        width: (size.xp1 + size.xp2 + size.xsize + 2 * x.cb) + 'px',
                        height: (size.yp1 + size.yp2 + size.ysize + 2 * y.cb) + 'px'
                    });
                    hs.setStyles(fadeBox, {
                        width: (size.ximgSize || size.xsize) + 'px',
                        height: (size.yimgSize || size.ysize) + 'px',
                        left: (size.xp1 + size.ximgPad) + 'px',
                        top: (size.yp1 + size.yimgPad) + 'px',
                        visibility: 'visible'
                    });

                    hs.setStyles(exp.oldImg, {
                        top: (lastY.pos - size.ypos + lastY.p1 - size.yp1 + lastY.get('imgPad') - size.yimgPad) + 'px',
                        left: (lastX.pos - size.xpos + lastX.p1 - size.xp1 + lastX.get('imgPad') - size.ximgPad) + 'px'
                    });

                    hs.setStyles(exp.newImg, {
                        opacity: pos,
                        top: (y.pos - size.ypos + y.p1 - size.yp1 + y.get('imgPad') - size.yimgPad) + 'px',
                        left: (x.pos - size.xpos + x.p1 - size.xp1 + x.get('imgPad') - size.ximgPad) + 'px'
                    });
                    if (overlayBox) hs.setStyles(overlayBox, {
                        width: size.xsize + 'px',
                        height: size.ysize + 'px',
                        left: (size.xp1 + x.cb) + 'px',
                        top: (size.yp1 + y.cb) + 'px'
                    });
                },
                complete: function() {
                    wrapper.style.visibility = content.style.visibility = 'visible';
                    content.style.display = 'block';
                    fadeBox.style.display = 'none';
                    exp.a.className += ' highslide-active-anchor';
                    exp.afterExpand();
                    last.afterClose();
                    exp.last = null;
                }

            });
        },
        reuseOverlay: function(o, el) {
            if (!this.last) return false;
            for (var i = 0; i < this.last.overlays.length; i++) {
                var oDiv = hs.$('hsId' + this.last.overlays[i]);
                if (oDiv && oDiv.hsId == o.hsId) {
                    this.genOverlayBox();
                    oDiv.reuse = this.key;
                    hs.push(this.overlays, this.last.overlays[i]);
                    return true;
                }
            }
            return false;
        },


        afterExpand: function() {
            this.isExpanded = true;
            this.focus();

            if (this.isHtml && this.objectLoadTime == 'after') this.writeExtendedContent();
            if (this.iframe) {
                try {
                    var exp = this,
				doc = this.iframe.contentDocument || this.iframe.contentWindow.document;
                    hs.addEventListener(doc, 'mousedown', function() {
                        if (hs.focusKey != exp.key) exp.focus();
                    });
                } catch (e) { }
                if (hs.ie && typeof this.isClosing != 'boolean') // first open 
                    this.iframe.style.width = (this.objectWidth - 1) + 'px'; // hasLayout
            }
            if (this.dimmingOpacity) hs.dim(this);
            if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null;
            this.prepareNextOutline();
            var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop;
            this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize')
		&& this.y.pos < mY && mY < this.y.pos + this.y.get('wsize');
            if (this.overlayBox) this.showOverlays();
            hs.fireEvent(this, 'onAfterExpand');

        },


        prepareNextOutline: function() {
            var key = this.key;
            var outlineType = this.outlineType;
            new hs.Outline(outlineType,
		function() { try { hs.expanders[key].preloadNext(); } catch (e) { } });
        },


        preloadNext: function() {
            var next = this.getAdjacentAnchor(1);
            if (next && next.onclick.toString().match(/hs\.expand/))
                var img = hs.createElement('img', { src: hs.getSrc(next) });
        },


        getAdjacentAnchor: function(op) {
            var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none'];

            /*< ? if ($cfg->slideshow) : ?>s*/
            if (!as[current + op] && this.slideshow && this.slideshow.repeat) {
                if (op == 1) return as[0];
                else if (op == -1) return as[as.length - 1];
            }
            /*< ? endif ?>s*/
            return as[current + op] || null;
        },

        getAnchorIndex: function() {
            var arr = hs.getAnchors().groups[this.slideshowGroup || 'none'];
            if (arr) for (var i = 0; i < arr.length; i++) {
                if (arr[i] == this.a) return i;
            }
            return null;
        },


        getNumber: function() {
            if (this[this.numberPosition]) {
                var arr = hs.anchors.groups[this.slideshowGroup || 'none'];
                if (arr) {
                    var s = hs.lang.number.replace('%1', this.getAnchorIndex() + 1).replace('%2', arr.length);
                    this[this.numberPosition].innerHTML =
				'<div class="highslide-number">' + s + '</div>' + this[this.numberPosition].innerHTML;
                }
            }
        },
        initSlideshow: function() {
            if (!this.last) {
                for (var i = 0; i < hs.slideshows.length; i++) {
                    var ss = hs.slideshows[i], sg = ss.slideshowGroup;
                    if (typeof sg == 'undefined' || sg === null || sg === this.slideshowGroup)
                        this.slideshow = new hs.Slideshow(this.key, ss);
                }
            } else {
                this.slideshow = this.last.slideshow;
            }
            var ss = this.slideshow;
            if (!ss) return;
            var key = ss.expKey = this.key;

            ss.checkFirstAndLast();
            ss.disable('full-expand');
            if (ss.controls) {
                var o = ss.overlayOptions || {};
                o.overlayId = ss.controls;
                o.hsId = 'controls';
                this.createOverlay(o);
            }
            if (ss.thumbstrip) ss.thumbstrip.add(this);
            if (!this.last && this.autoplay) ss.play(true);
            if (ss.autoplay) {
                ss.autoplay = setTimeout(function() {
                    hs.next(key);
                }, (ss.interval || 500));
            }
        },

        cancelLoading: function() {
            hs.discardElement(this.wrapper);
            hs.expanders[this.key] = null;
            if (hs.upcoming == this.a) hs.upcoming = null;
            hs.undim(this.key);
            if (this.loading) hs.loading.style.left = '-9999px';
            hs.fireEvent(this, 'onHideLoading');
        },

        writeCredits: function() {
            if (this.credits) return;
            this.credits = hs.createElement('a', {
                href: hs.creditsHref,
                target: hs.creditsTarget,
                className: 'highslide-credits',
                innerHTML: hs.lang.creditsText,
                title: hs.lang.creditsTitle
            });
            this.createOverlay({
                overlayId: this.credits,
                position: this.creditsPosition || 'top left',
                hsId: 'credits'
            });
        },

        getInline: function(types, addOverlay) {
            for (var i = 0; i < types.length; i++) {
                var type = types[i], s = null;
                if (type == 'caption' && !hs.fireEvent(this, 'onBeforeGetCaption')) return;
                else if (type == 'heading' && !hs.fireEvent(this, 'onBeforeGetHeading')) return;
                if (!this[type + 'Id'] && this.thumbsUserSetId)
                    this[type + 'Id'] = type + '-for-' + this.thumbsUserSetId;
                if (this[type + 'Id']) this[type] = hs.getNode(this[type + 'Id']);
                if (!this[type] && !this[type + 'Text'] && this[type + 'Eval']) try {
                    s = eval(this[type + 'Eval']);
                } catch (e) { }
                if (!this[type] && this[type + 'Text']) {
                    s = this[type + 'Text'];
                }
                if (!this[type] && !s) {
                    this[type] = hs.getNode(this.a['_' + type + 'Id']);
                    if (!this[type]) {
                        var next = this.a.nextSibling;
                        while (next && !hs.isHsAnchor(next)) {
                            if ((new RegExp('highslide-' + type)).test(next.className || null)) {
                                if (!next.id) this.a['_' + type + 'Id'] = next.id = 'hsId' + hs.idCounter++;
                                this[type] = hs.getNode(next.id);
                                break;
                            }
                            next = next.nextSibling;
                        }
                    }
                }
                if (!this[type] && !s && this.numberPosition == type) s = '\n';

                if (!this[type] && s) this[type] = hs.createElement('div',
				{ className: 'highslide-' + type, innerHTML: s });

                if (addOverlay && this[type]) {
                    var o = { position: (type == 'heading') ? 'above' : 'below' };
                    for (var x in this[type + 'Overlay']) o[x] = this[type + 'Overlay'][x];
                    o.overlayId = this[type];
                    this.createOverlay(o);
                }
            }
        },


        // on end move and resize
        doShowHide: function(visibility) {
            if (hs.hideSelects) this.showHideElements('SELECT', visibility);
            if (hs.hideIframes) this.showHideElements('IFRAME', visibility);
            if (hs.geckoMac) this.showHideElements('*', visibility);
        },
        showHideElements: function(tagName, visibility) {
            var els = document.getElementsByTagName(tagName);
            var prop = tagName == '*' ? 'overflow' : 'visibility';
            for (var i = 0; i < els.length; i++) {
                if (prop == 'visibility' || (document.defaultView.getComputedStyle(
				els[i], "").getPropertyValue('overflow') == 'auto'
				|| els[i].getAttribute('hidden-by') != null)) {
                    var hiddenBy = els[i].getAttribute('hidden-by');
                    if (visibility == 'visible' && hiddenBy) {
                        hiddenBy = hiddenBy.replace('[' + this.key + ']', '');
                        els[i].setAttribute('hidden-by', hiddenBy);
                        if (!hiddenBy) els[i].style[prop] = els[i].origProp;
                    } else if (visibility == 'hidden') { // hide if behind
                        var elPos = hs.getPosition(els[i]);
                        elPos.w = els[i].offsetWidth;
                        elPos.h = els[i].offsetHeight;
                        if (!this.dimmingOpacity) { // hide all if dimming

                            var clearsX = (elPos.x + elPos.w < this.x.get('opos')
						|| elPos.x > this.x.get('opos') + this.x.get('osize'));
                            var clearsY = (elPos.y + elPos.h < this.y.get('opos')
						|| elPos.y > this.y.get('opos') + this.y.get('osize'));
                        }
                        var wrapperKey = hs.getWrapperKey(els[i]);
                        if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image
                            if (!hiddenBy) {
                                els[i].setAttribute('hidden-by', '[' + this.key + ']');
                                els[i].origProp = els[i].style[prop];
                                els[i].style[prop] = 'hidden';

                            } else if (hiddenBy.indexOf('[' + this.key + ']') == -1) {
                                els[i].setAttribute('hidden-by', hiddenBy + '[' + this.key + ']');
                            }
                        } else if ((hiddenBy == '[' + this.key + ']' || hs.focusKey == wrapperKey)
						&& wrapperKey != this.key) { // on move
                            els[i].setAttribute('hidden-by', '');
                            els[i].style[prop] = els[i].origProp || '';
                        } else if (hiddenBy && hiddenBy.indexOf('[' + this.key + ']') > -1) {
                            els[i].setAttribute('hidden-by', hiddenBy.replace('[' + this.key + ']', ''));
                        }

                    }
                }
            }
        },

        focus: function() {
            this.wrapper.style.zIndex = hs.zIndexCounter += 2;
            // blur others
            for (var i = 0; i < hs.expanders.length; i++) {
                if (hs.expanders[i] && i == hs.focusKey) {
                    var blurExp = hs.expanders[i];
                    blurExp.content.className += ' highslide-' + blurExp.contentType + '-blur';
                    if (blurExp.isImage) {
                        blurExp.content.style.cursor = hs.ie ? 'hand' : 'pointer';
                        blurExp.content.title = hs.lang.focusTitle;
                    }
                    hs.fireEvent(blurExp, 'onBlur');
                }
            }

            // focus this
            if (this.outline) this.outline.table.style.zIndex
		= this.wrapper.style.zIndex - 1;
            this.content.className = 'highslide-' + this.contentType;
            if (this.isImage) {
                this.content.title = hs.lang.restoreTitle;

                if (hs.restoreCursor) {
                    hs.styleRestoreCursor = window.opera ? 'pointer' : 'url(' + hs.graphicsDir + hs.restoreCursor + '), pointer';
                    if (hs.ie && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand';
                    this.content.style.cursor = hs.styleRestoreCursor;
                }
            }
            hs.focusKey = this.key;
            hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
            hs.fireEvent(this, 'onFocus');
        },
        moveTo: function(x, y) {
            this.x.setPos(x);
            this.y.setPos(y);
        },
        resize: function(e) {
            var w, h, r = e.width / e.height;
            w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full));
            if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full;
            h = this.isHtml ? e.height + e.dY : w / r;
            if (h < Math.min(this.minHeight, this.y.full)) {
                h = Math.min(this.minHeight, this.y.full);
                if (this.isImage) w = h * r;
            }
            this.resizeTo(w, h);
        },
        resizeTo: function(w, h) {
            this.y.setSize(h);
            this.x.setSize(w);
            this.wrapper.style.height = this.y.get('wsize') + 'px';
        },

        close: function() {
            if (this.isClosing || !this.isExpanded) return;
            if (this.transitions[1] == 'crossfade' && hs.upcoming) {
                hs.getExpander(hs.upcoming).cancelLoading();
                hs.upcoming = null;
            }
            if (!hs.fireEvent(this, 'onBeforeClose')) return;
            this.isClosing = true;
            if (this.slideshow && !hs.upcoming) this.slideshow.pause();

            hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);

            try {
                if (this.isHtml) this.htmlPrepareClose();
                this.content.style.cursor = 'default';
                this.changeSize(
			0, {
			    wrapper: {
			        width: this.x.t,
			        height: this.y.t,
			        left: this.x.tpos - this.x.cb + this.x.tb,
			        top: this.y.tpos - this.y.cb + this.y.tb
			    },
			    content: {
			        left: 0,
			        top: 0,
			        width: this.x.t,
			        height: this.y.t
			    }
			}, hs.restoreDuration
		);
            } catch (e) { this.afterClose(); }
        },

        htmlPrepareClose: function() {
            if (hs.geckoMac) { // bad redraws
                if (!hs.mask) hs.mask = hs.createElement('div', null,
			{ position: 'absolute' }, hs.container);
                hs.setStyles(hs.mask, { width: this.x.size + 'px', height: this.y.size + 'px',
                    left: this.x.pos + 'px', top: this.y.pos + 'px', display: 'block'
                });
            }

            if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject();
            if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent)
                this.scrollerDiv.style.overflow = 'hidden';
        },

        destroyObject: function() {
            if (hs.ie && this.iframe)
                try { this.iframe.contentWindow.document.body.innerHTML = ''; } catch (e) { }
            this.body.innerHTML = '';
        },

        sleep: function() {
            if (this.outline) this.outline.table.style.display = 'none';
            this.releaseMask = null;
            this.wrapper.style.display = 'none';
            hs.push(hs.sleeping, this);
        },

        awake: function() {
            try {

                hs.expanders[this.key] = this;

                if (!hs.allowMultipleInstances && hs.focusKey != this.key) {
                    try { hs.expanders[hs.focusKey].close(); } catch (e) { }
                }

                var z = hs.zIndexCounter++, stl = { display: '', zIndex: z };
                hs.setStyles(this.wrapper, stl);
                this.isClosing = false;

                var o = this.outline || 0;
                if (o) {
                    if (!this.outlineWhileAnimating) stl.visibility = 'hidden';
                    hs.setStyles(o.table, stl);
                }
                if (this.slideshow) {
                    this.initSlideshow();
                }

                this.show();
            } catch (e) { }


        },

        createOverlay: function(o) {
            var el = o.overlayId,
		relToVP = (o.relativeTo == 'viewport' && !/panel$/.test(o.position));
            if (typeof el == 'string') el = hs.getNode(el);
            if (o.html) el = hs.createElement('div', { innerHTML: o.html });
            if (!el || typeof el == 'string') return;
            if (!hs.fireEvent(this, 'onCreateOverlay', { overlay: el })) return;
            el.style.display = 'block';
            o.hsId = o.hsId || o.overlayId;
            if (this.transitions[1] == 'crossfade' && this.reuseOverlay(o, el)) return;
            this.genOverlayBox();
            var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto';
            if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px';
            var overlay = hs.createElement(
		'div', {
		    id: 'hsId' + hs.idCounter++,
		    hsId: o.hsId
		}, {
		    position: 'absolute',
		    visibility: 'hidden',
		    width: width,
		    direction: hs.lang.cssDirection || '',
		    opacity: 0
		},
		relToVP ? hs.viewport : this.overlayBox,
		true
	);
            if (relToVP) overlay.hsKey = this.key;

            overlay.appendChild(el);
            hs.extend(overlay, {
                opacity: 1,
                offsetX: 0,
                offsetY: 0,
                dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250
            });
            hs.extend(overlay, o);

            if (this.gotOverlays) {
                this.positionOverlay(overlay);
                if (!overlay.hideOnMouseOut || this.mouseIsOver)
                    hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur);
            }
            hs.push(this.overlays, hs.idCounter - 1);
        },
        positionOverlay: function(overlay) {
            var p = overlay.position || 'middle center',
		relToVP = (overlay.relativeTo == 'viewport'),
		offX = overlay.offsetX,
		offY = overlay.offsetY;
            if (relToVP) {
                hs.viewport.style.display = 'block';
                overlay.hsKey = this.key;
                if (overlay.offsetWidth > overlay.parentNode.offsetWidth)
                    overlay.style.width = '100%';
            } else
                if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay);
            if (/left$/.test(p)) overlay.style.left = offX + 'px';

            if (/center$/.test(p)) hs.setStyles(overlay, {
                left: '50%',
                marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) + 'px'
            });

            if (/right$/.test(p)) overlay.style.right = -offX + 'px';

            if (/^leftpanel$/.test(p)) {
                hs.setStyles(overlay, {
                    right: '100%',
                    marginRight: this.x.cb + 'px',
                    top: -this.y.cb + 'px',
                    bottom: -this.y.cb + 'px',
                    overflow: 'auto'
                });
                this.x.p1 = overlay.offsetWidth;

            } else if (/^rightpanel$/.test(p)) {
                hs.setStyles(overlay, {
                    left: '100%',
                    marginLeft: this.x.cb + 'px',
                    top: -this.y.cb + 'px',
                    bottom: -this.y.cb + 'px',
                    overflow: 'auto'
                });
                this.x.p2 = overlay.offsetWidth;
            }
            var parOff = overlay.parentNode.offsetHeight;
            overlay.style.height = 'auto';
            if (relToVP && overlay.offsetHeight > parOff)
                overlay.style.height = hs.ieLt7 ? parOff + 'px' : '100%';

            if (/^top/.test(p)) overlay.style.top = offY + 'px';
            if (/^middle/.test(p)) hs.setStyles(overlay, {
                top: '50%',
                marginTop: (offY - Math.round(overlay.offsetHeight / 2)) + 'px'
            });
            if (/^bottom/.test(p)) overlay.style.bottom = -offY + 'px';
            if (/^above$/.test(p)) {
                hs.setStyles(overlay, {
                    left: (-this.x.p1 - this.x.cb) + 'px',
                    right: (-this.x.p2 - this.x.cb) + 'px',
                    bottom: '100%',
                    marginBottom: this.y.cb + 'px',
                    width: 'auto'
                });
                this.y.p1 = overlay.offsetHeight;

            } else if (/^below$/.test(p)) {
                hs.setStyles(overlay, {
                    position: 'relative',
                    left: (-this.x.p1 - this.x.cb) + 'px',
                    right: (-this.x.p2 - this.x.cb) + 'px',
                    top: '100%',
                    marginTop: this.y.cb + 'px',
                    width: 'auto'
                });
                this.y.p2 = overlay.offsetHeight;
                overlay.style.position = 'absolute';
            }
        },

        getOverlays: function() {
            this.getInline(['heading', 'caption'], true);
            this.getNumber();
            if (this.caption) hs.fireEvent(this, 'onAfterGetCaption');
            if (this.heading) hs.fireEvent(this, 'onAfterGetHeading');
            if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move';
            if (hs.showCredits) this.writeCredits();
            for (var i = 0; i < hs.overlays.length; i++) {
                var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup;
                if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId)
				|| (sg && sg === this.slideshowGroup)) {
                    if (this.isImage || (this.isHtml && o.useOnHtml))
                        this.createOverlay(o);
                }
            }
            var os = [];
            for (var i = 0; i < this.overlays.length; i++) {
                var o = hs.$('hsId' + this.overlays[i]);
                if (/panel$/.test(o.position)) this.positionOverlay(o);
                else hs.push(os, o);
            }
            for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]);
            this.gotOverlays = true;
        },
        genOverlayBox: function() {
            if (!this.overlayBox) this.overlayBox = hs.createElement(
		'div', {
		    className: this.wrapperClassName
		}, {
		    position: 'absolute',
		    width: (this.x.size || (this.useBox ? this.width : null)
				|| this.x.full) + 'px',
		    height: (this.y.size || this.y.full) + 'px',
		    visibility: 'hidden',
		    overflow: 'hidden',
		    zIndex: hs.ie ? 4 : 'auto'
		},
		hs.container,
		true
	);
        },
        sizeOverlayBox: function(doWrapper, doPanels) {
            var overlayBox = this.overlayBox,
		x = this.x,
		y = this.y;
            hs.setStyles(overlayBox, {
                width: x.size + 'px',
                height: y.size + 'px'
            });
            if (doWrapper || doPanels) {
                for (var i = 0; i < this.overlays.length; i++) {
                    var o = hs.$('hsId' + this.overlays[i]);
                    var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat');
                    if (o && /^(above|below)$/.test(o.position)) {
                        if (ie6) {
                            o.style.width = (overlayBox.offsetWidth + 2 * x.cb
						+ x.p1 + x.p2) + 'px';
                        }
                        y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight;
                    }
                    if (o && ie6 && /^(left|right)panel$/.test(o.position)) {
                        o.style.height = (overlayBox.offsetHeight + 2 * y.cb) + 'px';
                    }
                }
            }
            if (doWrapper) {
                hs.setStyles(this.content, {
                    top: y.p1 + 'px'
                });
                hs.setStyles(overlayBox, {
                    top: (y.p1 + y.cb) + 'px'
                });
            }
        },

        showOverlays: function() {
            var b = this.overlayBox;
            b.className = '';
            hs.setStyles(b, {
                top: (this.y.p1 + this.y.cb) + 'px',
                left: (this.x.p1 + this.x.cb) + 'px',
                overflow: 'visible'
            });
            if (hs.safari) b.style.visibility = 'visible';
            this.wrapper.appendChild(b);
            for (var i = 0; i < this.overlays.length; i++) {
                var o = hs.$('hsId' + this.overlays[i]);
                o.style.zIndex = o.hsId == 'controls' ? 5 : 4;
                if (!o.hideOnMouseOut || this.mouseIsOver) {
                    o.style.visibility = 'visible';
                    hs.setStyles(o, { visibility: 'visible', display: '' });
                    hs.animate(o, { opacity: o.opacity }, o.dur);
                }
            }
        },

        destroyOverlays: function() {
            if (!this.overlays.length) return;
            if (this.slideshow) {
                var c = this.slideshow.controls;
                if (c && hs.getExpander(c) == this) c.parentNode.removeChild(c);
            }
            for (var i = 0; i < this.overlays.length; i++) {
                var o = hs.$('hsId' + this.overlays[i]);
                if (o && o.parentNode == hs.viewport && hs.getExpander(o) == this) hs.discardElement(o);
            }
            if (this.isHtml && this.preserveContent) {
                this.overlayBox.style.top = '-9999px';
                hs.container.appendChild(this.overlayBox);
            } else
                hs.discardElement(this.overlayBox);
        },



        createFullExpand: function() {
            if (this.slideshow && this.slideshow.controls) {
                this.slideshow.enable('full-expand');
                return;
            }
            this.fullExpandLabel = hs.createElement(
		'a', {
		    href: 'javascript:hs.expanders[' + this.key + '].doFullExpand();',
		    title: hs.lang.fullExpandTitle,
		    className: 'highslide-full-expand'
		}
	);
            if (!hs.fireEvent(this, 'onCreateFullExpand')) return;

            this.createOverlay({
                overlayId: this.fullExpandLabel,
                position: hs.fullExpandPosition,
                hideOnMouseOut: true,
                opacity: hs.fullExpandOpacity
            });
        },

        doFullExpand: function() {
            try {
                if (!hs.fireEvent(this, 'onDoFullExpand')) return;
                if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel);

                this.focus();
                var xSize = this.x.size;
                this.resizeTo(this.x.full, this.y.full);

                var xpos = this.x.pos - (this.x.size - xSize) / 2;
                if (xpos < hs.marginLeft) xpos = hs.marginLeft;

                this.moveTo(xpos, this.y.pos);
                this.doShowHide('hidden');

            } catch (e) {
                this.error(e);
            }
        },


        afterClose: function() {
            this.a.className = this.a.className.replace('highslide-active-anchor', '');

            this.doShowHide('visible');

            if (this.isHtml && this.preserveContent
			 && this.transitions[1] != 'crossfade') {
                this.sleep();
            } else {
                if (this.outline && this.outlineWhileAnimating) this.outline.destroy();

                hs.discardElement(this.wrapper);
            }
            if (hs.mask) hs.mask.style.display = 'none';
            this.destroyOverlays();
            if (!hs.viewport.childNodes.length) hs.viewport.style.display = 'none';

            if (this.dimmingOpacity) hs.undim(this.key);
            hs.fireEvent(this, 'onAfterClose');
            hs.expanders[this.key] = null;
            hs.reOrder();
        }

    };


    hs.Slideshow = function(expKey, options) {
        if (hs.dynamicallyUpdateAnchors !== false) hs.updateAnchors();
        this.expKey = expKey;
        for (var x in options) this[x] = options[x];
        if (this.useControls) this.getControls();
        if (this.thumbstrip) this.thumbstrip = hs.Thumbstrip(this);
    };
    hs.Slideshow.prototype = {
        getControls: function() {
            this.controls = hs.createElement('div', { innerHTML: hs.replaceLang(hs.skin.controls) },
		null, hs.container);

            var buttons = ['play', 'pause', 'previous', 'next', 'move', 'full-expand', 'close'];
            this.btn = {};
            var pThis = this;
            for (var i = 0; i < buttons.length; i++) {
                this.btn[buttons[i]] = hs.getElementByClass(this.controls, 'li', 'highslide-' + buttons[i]);
                this.enable(buttons[i]);
            }
            this.btn.pause.style.display = 'none';
            //this.disable('full-expand');
        },
        checkFirstAndLast: function() {
            if (this.repeat || !this.controls) return;
            var exp = hs.expanders[this.expKey],
		cur = exp.getAnchorIndex(),
		re = /disabled$/;
            if (cur == 0)
                this.disable('previous');
            else if (re.test(this.btn.previous.getElementsByTagName('a')[0].className))
                this.enable('previous');
            if (cur + 1 == hs.anchors.groups[exp.slideshowGroup || 'none'].length) {
                this.disable('next');
                this.disable('play');
            } else if (re.test(this.btn.next.getElementsByTagName('a')[0].className)) {
                this.enable('next');
                this.enable('play');
            }
        },
        enable: function(btn) {
            if (!this.btn) return;
            var sls = this, a = this.btn[btn].getElementsByTagName('a')[0], re = /disabled$/;
            a.onclick = function() {
                sls[btn]();
                return false;
            };
            if (re.test(a.className)) a.className = a.className.replace(re, '');
        },
        disable: function(btn) {
            if (!this.btn) return;
            var a = this.btn[btn].getElementsByTagName('a')[0];
            a.onclick = function() { return false; };
            if (!/disabled$/.test(a.className)) a.className += ' disabled';
        },
        hitSpace: function() {
            if (this.autoplay) this.pause();
            else this.play();
        },
        play: function(wait) {
            if (this.btn) {
                this.btn.play.style.display = 'none';
                this.btn.pause.style.display = '';
            }

            this.autoplay = true;
            if (!wait) hs.next(this.expKey);
        },
        pause: function() {
            if (this.btn) {
                this.btn.pause.style.display = 'none';
                this.btn.play.style.display = '';
            }

            clearTimeout(this.autoplay);
            this.autoplay = null;
        },
        previous: function() {
            this.pause();
            hs.previous(this.btn.previous);
        },
        next: function() {
            this.pause();
            hs.next(this.btn.next);
        },
        move: function() { },
        'full-expand': function() {
            hs.getExpander().doFullExpand();
        },
        close: function() {
            hs.close(this.btn.close);
        }
    };
    hs.Thumbstrip = function(slideshow) {
        function add(exp) {
            hs.extend(options || {}, {
                overlayId: dom,
                hsId: 'thumbstrip',
                className: 'highslide-thumbstrip-' + mode + '-overlay ' + (options.className || '')
            });
            if (hs.ieLt7) options.fade = 0;
            exp.createOverlay(options);
            hs.setStyles(dom.parentNode, { overflow: 'hidden' });
        };

        function scroll(delta) {
            selectThumb(undefined, Math.round(delta * dom[isX ? 'offsetWidth' : 'offsetHeight'] * 0.7));
        };

        function selectThumb(i, scrollBy) {
            if (i === undefined) for (var j = 0; j < group.length; j++) {
                if (group[j] == hs.expanders[slideshow.expKey].a) {
                    i = j;
                    break;
                }
            }
            if (i === undefined) return;
            var as = dom.getElementsByTagName('a'),
			active = as[i],
			cell = active.parentNode,
			left = isX ? 'Left' : 'Top',
			right = isX ? 'Right' : 'Bottom',
			width = isX ? 'Width' : 'Height',
			offsetLeft = 'offset' + left,
			offsetWidth = 'offset' + width,
			overlayWidth = div.parentNode.parentNode[offsetWidth],
			minTblPos = overlayWidth - table[offsetWidth],
			curTblPos = parseInt(table.style[isX ? 'left' : 'top']) || 0,
			tblPos = curTblPos,
			mgnRight = 20;
            if (scrollBy !== undefined) {
                tblPos = curTblPos - scrollBy;

                if (minTblPos > 0) minTblPos = 0;
                if (tblPos > 0) tblPos = 0;
                if (tblPos < minTblPos) tblPos = minTblPos;


            } else {
                for (var j = 0; j < as.length; j++) as[j].className = '';
                active.className = 'highslide-active-anchor';
                var activeLeft = i > 0 ? as[i - 1].parentNode[offsetLeft] : cell[offsetLeft],
				activeRight = cell[offsetLeft] + cell[offsetWidth] +
					(as[i + 1] ? as[i + 1].parentNode[offsetWidth] : 0);
                if (activeRight > overlayWidth - curTblPos) tblPos = overlayWidth - activeRight;
                else if (activeLeft < -curTblPos) tblPos = -activeLeft;
            }
            var markerPos = cell[offsetLeft] + (cell[offsetWidth] - marker[offsetWidth]) / 2 + tblPos;
            hs.animate(table, isX ? { left: tblPos} : { top: tblPos }, null, 'easeOutQuad');
            hs.animate(marker, isX ? { left: markerPos} : { top: markerPos }, null, 'easeOutQuad');
            scrollUp.style.display = tblPos < 0 ? 'block' : 'none';
            scrollDown.style.display = (tblPos > minTblPos) ? 'block' : 'none';

        };


        // initialize
        var group = hs.anchors.groups[hs.expanders[slideshow.expKey].slideshowGroup || 'none'],
		options = slideshow.thumbstrip,
		mode = options.mode || 'horizontal',
		floatMode = (mode == 'float'),
		tree = floatMode ? ['div', 'ul', 'li', 'span'] : ['table', 'tbody', 'tr', 'td'],
		isX = (mode == 'horizontal'),
		dom = hs.createElement('div', {
		    className: 'highslide-thumbstrip highslide-thumbstrip-' + mode,
		    innerHTML:
					'<div class="highslide-thumbstrip-inner">' +
					'<' + tree[0] + '><' + tree[1] + '></' + tree[1] + '></' + tree[0] + '></div>' +
					'<div class="highslide-scroll-up"><div></div></div>' +
					'<div class="highslide-scroll-down"><div></div></div>' +
					'<div class="highslide-marker"><div></div></div>'
		}, {
		    display: 'none'
		}, hs.container),
		domCh = dom.childNodes,
		div = domCh[0],
		scrollUp = domCh[1],
		scrollDown = domCh[2],
		marker = domCh[3],
		table = div.firstChild,
		tbody = dom.getElementsByTagName(tree[1])[0],
		tr;
        for (var i = 0; i < group.length; i++) {
            if (i == 0 || !isX) tr = hs.createElement(tree[2], null, null, tbody);
            (function() {
                var a = group[i],
				cell = hs.createElement(tree[3], null, null, tr),
				pI = i;
                hs.createElement('a', {
                    href: a.href,
                    onclick: function() {
                        hs.getExpander(this).focus();
                        return hs.transit(a);
                    },
                    innerHTML: hs.stripItemFormatter ? hs.stripItemFormatter(a) : a.innerHTML
                }, null, cell);
            })();
        }
        if (!floatMode) {
            scrollUp.onclick = function() { scroll(-1); };
            scrollDown.onclick = function() { scroll(1); };
            hs.addEventListener(tbody, document.onmousewheel !== undefined ?
				'mousewheel' : 'DOMMouseScroll', function(e) {
				    var delta = 0;
				    e = e || window.event;
				    if (e.wheelDelta) {
				        delta = e.wheelDelta / 120;
				        if (hs.opera) delta = -delta;
				    } else if (e.detail) {
				        delta = -e.detail / 3;
				    }
				    if (delta) scroll(-delta * 0.2);
				    if (e.preventDefault) e.preventDefault();
				    e.returnValue = false;
				});
        }

        return {
            add: add,
            selectThumb: selectThumb
        }
    };
    hs.langDefaults = hs.lang;
    // history
    var HsExpander = hs.Expander;
    if (hs.ie) {
        (function() {
            try {
                document.documentElement.doScroll('left');
            } catch (e) {
                setTimeout(arguments.callee, 50);
                return;
            }
            hs.ready();
        })();
    }
    hs.addEventListener(document, 'DOMContentLoaded', hs.ready);
    hs.addEventListener(window, 'load', hs.ready);

    // set handlers
    hs.addEventListener(document, 'ready', function() {
        if (hs.expandCursor || hs.dimmingOpacity) {
            var style = hs.createElement('style', { type: 'text/css' }, null,
			document.getElementsByTagName('HEAD')[0]);

            function addRule(sel, dec) {
                if (!hs.ie) {
                    style.appendChild(document.createTextNode(sel + " {" + dec + "}"));
                } else {
                    var last = document.styleSheets[document.styleSheets.length - 1];
                    if (typeof (last.addRule) == "object") last.addRule(sel, dec);
                }
            }
            function fix(prop) {
                return 'expression( ( ( ignoreMe = document.documentElement.' + prop +
				' ? document.documentElement.' + prop + ' : document.body.' + prop + ' ) ) + \'px\' );';
            }
            if (hs.expandCursor) addRule('.highslide img',
			'cursor: url(' + hs.graphicsDir + hs.expandCursor + '), pointer !important;');
            addRule('.highslide-viewport-size',
			hs.ie && (hs.uaVersion < 7 || document.compatMode == 'BackCompat') ?
				'position: absolute; ' +
				'left:' + fix('scrollLeft') +
				'top:' + fix('scrollTop') +
				'width:' + fix('clientWidth') +
				'height:' + fix('clientHeight') :
				'position: fixed; width: 100%; height: 100%; left: 0; top: 0');
        }
    });
    hs.addEventListener(window, 'resize', function() {
        hs.getPageSize();
        if (hs.viewport) for (var i = 0; i < hs.viewport.childNodes.length; i++) {
            var node = hs.viewport.childNodes[i],
			exp = hs.getExpander(node);
            exp.positionOverlay(node);
            if (node.hsId == 'thumbstrip') exp.slideshow.thumbstrip.selectThumb();
        }
    });
    hs.addEventListener(document, 'mousemove', function(e) {
        hs.mouse = { x: e.clientX, y: e.clientY };
    });
    hs.addEventListener(document, 'mousedown', hs.mouseClickHandler);
    hs.addEventListener(document, 'mouseup', hs.mouseClickHandler);
    hs.addEventListener(document, 'ready', hs.setClickEvents);
    hs.addEventListener(window, 'load', hs.preloadImages);
}
//highslide end

//highslide specific start

var hs;
hs.anchor = 'auto';
hs.align = 'center';
hs.dimmingOpacity = 0.75;
hs.fadeInOut = true;
hs.objectLoadTime = 'after';
hs.transitions = ["expand", "crossfade"];
hs.numberOfImagesToPreload = 0;
hs.addSlideshow({
    slideshowGroup: 'photo-gallery',
    interval: 5000,
    repeat: false,
    useControls: true,
    fixedControls: false,
    repeat: true,
    overlayOptions: {
        opacity: .75,
        position: 'bottom center',
        hideOnMouseOut: true
    }
});

// 1dde4dcb12c73caf0909b430a38bf205

hs.graphicsDir = '/library/highslide/graphics/';
hs.outlineType = 'rounded-white';
hs.captionEval = 'this.thumb.title';
hs.showCredits = false;

//highslide specific end




//jQuery tools

/*
* jquery.tools 1.1.2 - The missing UI library for the Web
* 
* [tools.tabs-1.0.4, tools.tooltip-1.1.3, tools.scrollable-1.1.2, tools.scrollable.circular-0.5.1, tools.scrollable.autoscroll-1.0.1, tools.scrollable.navigator-1.0.2, tools.scrollable.mousewheel-1.0.1, tools.overlay-1.1.2, tools.overlay.gallery-1.0.0, tools.expose-1.0.5]
* 
* Copyright (c) 2009 Tero Piirainen
* http://flowplayer.org/tools/
*
* Dual licensed under MIT and GPL 2+ licenses
* http://www.opensource.org/licenses
* 
* -----
* 
* jquery.event.wheel.js - rev 1 
* Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
* Liscensed under the MIT License (MIT-LICENSE.txt)
* http://www.opensource.org/licenses/mit-license.php
* Created: 2008-07-01 | Updated: 2008-07-14
* 
* -----
* 
* File generated: Mon Feb 01 09:31:00 GMT 2010
*/
(function(d) { d.tools = d.tools || {}; d.tools.tabs = { version: "1.0.4", conf: { tabs: "a", current: "current", onBeforeClick: null, onClick: null, effect: "default", initialIndex: 0, event: "click", api: false, rotate: false }, addEffect: function(e, f) { c[e] = f } }; var c = { "default": function(f, e) { this.getPanes().hide().eq(f).show(); e.call() }, fade: function(g, e) { var f = this.getConf(), j = f.fadeOutSpeed, h = this.getPanes(); if (j) { h.fadeOut(j) } else { h.hide() } h.eq(g).fadeIn(f.fadeInSpeed, e) }, slide: function(f, e) { this.getPanes().slideUp(200); this.getPanes().eq(f).slideDown(400, e) }, ajax: function(f, e) { this.getPanes().eq(0).load(this.getTabs().eq(f).attr("href"), e) } }; var b; d.tools.tabs.addEffect("horizontal", function(f, e) { if (!b) { b = this.getPanes().eq(0).width() } this.getCurrentPane().animate({ width: 0 }, function() { d(this).hide() }); this.getPanes().eq(f).animate({ width: b }, function() { d(this).show(); e.call() }) }); function a(g, h, f) { var e = this, j = d(this), i; d.each(f, function(k, l) { if (d.isFunction(l)) { j.bind(k, l) } }); d.extend(this, { click: function(k, n) { var o = e.getCurrentPane(); var l = g.eq(k); if (typeof k == "string" && k.replace("#", "")) { l = g.filter("[href*=" + k.replace("#", "") + "]"); k = Math.max(g.index(l), 0) } if (f.rotate) { var m = g.length - 1; if (k < 0) { return e.click(m, n) } if (k > m) { return e.click(0, n) } } if (!l.length) { if (i >= 0) { return e } k = f.initialIndex; l = g.eq(k) } if (k === i) { return e } n = n || d.Event(); n.type = "onBeforeClick"; j.trigger(n, [k]); if (n.isDefaultPrevented()) { return } c[f.effect].call(e, k, function() { n.type = "onClick"; j.trigger(n, [k]) }); n.type = "onStart"; j.trigger(n, [k]); if (n.isDefaultPrevented()) { return } i = k; g.removeClass(f.current); l.addClass(f.current); return e }, getConf: function() { return f }, getTabs: function() { return g }, getPanes: function() { return h }, getCurrentPane: function() { return h.eq(i) }, getCurrentTab: function() { return g.eq(i) }, getIndex: function() { return i }, next: function() { return e.click(i + 1) }, prev: function() { return e.click(i - 1) }, bind: function(k, l) { j.bind(k, l); return e }, onBeforeClick: function(k) { return this.bind("onBeforeClick", k) }, onClick: function(k) { return this.bind("onClick", k) }, unbind: function(k) { j.unbind(k); return e } }); g.each(function(k) { d(this).bind(f.event, function(l) { e.click(k, l); return false }) }); if (location.hash) { e.click(location.hash) } else { if (f.initialIndex === 0 || f.initialIndex > 0) { e.click(f.initialIndex) } } h.find("a[href^=#]").click(function(k) { e.click(d(this).attr("href"), k) }) } d.fn.tabs = function(i, f) { var g = this.eq(typeof f == "number" ? f : 0).data("tabs"); if (g) { return g } if (d.isFunction(f)) { f = { onBeforeClick: f} } var h = d.extend({}, d.tools.tabs.conf), e = this.length; f = d.extend(h, f); this.each(function(l) { var j = d(this); var k = j.find(f.tabs); if (!k.length) { k = j.children() } var m = i.jquery ? i : j.children(i); if (!m.length) { m = e == 1 ? d(i) : j.parent().find(i) } g = new a(k, m, f); j.data("tabs", g) }); return f.api ? g : this } })(jQuery);
(function(c) { var d = []; c.tools = c.tools || {}; c.tools.tooltip = { version: "1.1.3", conf: { effect: "toggle", fadeOutSpeed: "fast", tip: null, predelay: 0, delay: 30, opacity: 1, lazy: undefined, position: ["top", "center"], offset: [0, 0], cancelDefault: true, relative: false, oneInstance: true, events: { def: "mouseover,mouseout", input: "focus,blur", widget: "focus mouseover,blur mouseout", tooltip: "mouseover,mouseout" }, api: false }, addEffect: function(e, g, f) { b[e] = [g, f] } }; var b = { toggle: [function(e) { var f = this.getConf(), g = this.getTip(), h = f.opacity; if (h < 1) { g.css({ opacity: h }) } g.show(); e.call() }, function(e) { this.getTip().hide(); e.call() } ], fade: [function(e) { this.getTip().fadeIn(this.getConf().fadeInSpeed, e) }, function(e) { this.getTip().fadeOut(this.getConf().fadeOutSpeed, e) } ] }; function a(f, g) { var p = this, k = c(this); f.data("tooltip", p); var l = f.next(); if (g.tip) { l = c(g.tip); if (l.length > 1) { l = f.nextAll(g.tip).eq(0); if (!l.length) { l = f.parent().nextAll(g.tip).eq(0) } } } function o(u) { var t = g.relative ? f.position().top : f.offset().top, s = g.relative ? f.position().left : f.offset().left, v = g.position[0]; t -= l.outerHeight() - g.offset[0]; s += f.outerWidth() + g.offset[1]; var q = l.outerHeight() + f.outerHeight(); if (v == "center") { t += q / 2 } if (v == "bottom") { t += q } v = g.position[1]; var r = l.outerWidth() + f.outerWidth(); if (v == "center") { s -= r / 2 } if (v == "left") { s -= r } return { top: t, left: s} } var i = f.is(":input"), e = i && f.is(":checkbox, :radio, select, :button"), h = f.attr("type"), n = g.events[h] || g.events[i ? (e ? "widget" : "input") : "def"]; n = n.split(/,\s*/); if (n.length != 2) { throw "Tooltip: bad events configuration for " + h } f.bind(n[0], function(r) { if (g.oneInstance) { c.each(d, function() { this.hide() }) } var q = l.data("trigger"); if (q && q[0] != this) { l.hide().stop(true, true) } r.target = this; p.show(r); n = g.events.tooltip.split(/,\s*/); l.bind(n[0], function() { p.show(r) }); if (n[1]) { l.bind(n[1], function() { p.hide(r) }) } }); f.bind(n[1], function(q) { p.hide(q) }); if (!c.browser.msie && !i && !g.predelay) { f.mousemove(function() { if (!p.isShown()) { f.triggerHandler("mouseover") } }) } if (g.opacity < 1) { l.css("opacity", g.opacity) } var m = 0, j = f.attr("title"); if (j && g.cancelDefault) { f.removeAttr("title"); f.data("title", j) } c.extend(p, { show: function(r) { if (r) { f = c(r.target) } clearTimeout(l.data("timer")); if (l.is(":animated") || l.is(":visible")) { return p } function q() { l.data("trigger", f); var t = o(r); if (g.tip && j) { l.html(f.data("title")) } r = r || c.Event(); r.type = "onBeforeShow"; k.trigger(r, [t]); if (r.isDefaultPrevented()) { return p } t = o(r); l.css({ position: "absolute", top: t.top, left: t.left }); var s = b[g.effect]; if (!s) { throw 'Nonexistent effect "' + g.effect + '"' } s[0].call(p, function() { r.type = "onShow"; k.trigger(r) }) } if (g.predelay) { clearTimeout(m); m = setTimeout(q, g.predelay) } else { q() } return p }, hide: function(r) { clearTimeout(l.data("timer")); clearTimeout(m); if (!l.is(":visible")) { return } function q() { r = r || c.Event(); r.type = "onBeforeHide"; k.trigger(r); if (r.isDefaultPrevented()) { return } b[g.effect][1].call(p, function() { r.type = "onHide"; k.trigger(r) }) } if (g.delay && r) { l.data("timer", setTimeout(q, g.delay)) } else { q() } return p }, isShown: function() { return l.is(":visible, :animated") }, getConf: function() { return g }, getTip: function() { return l }, getTrigger: function() { return f }, bind: function(q, r) { k.bind(q, r); return p }, onHide: function(q) { return this.bind("onHide", q) }, onBeforeShow: function(q) { return this.bind("onBeforeShow", q) }, onShow: function(q) { return this.bind("onShow", q) }, onBeforeHide: function(q) { return this.bind("onBeforeHide", q) }, unbind: function(q) { k.unbind(q); return p } }); c.each(g, function(q, r) { if (c.isFunction(r)) { p.bind(q, r) } }) } c.prototype.tooltip = function(e) { var f = this.eq(typeof e == "number" ? e : 0).data("tooltip"); if (f) { return f } var g = c.extend(true, {}, c.tools.tooltip.conf); if (c.isFunction(e)) { e = { onBeforeShow: e} } else { if (typeof e == "string") { e = { tip: e} } } e = c.extend(true, g, e); if (typeof e.position == "string") { e.position = e.position.split(/,?\s/) } if (e.lazy !== false && (e.lazy === true || this.length > 20)) { this.one("mouseover", function(h) { f = new a(c(this), e); f.show(h); d.push(f) }) } else { this.each(function() { f = new a(c(this), e); d.push(f) }) } return e.api ? f : this } })(jQuery);
(function(b) { b.tools = b.tools || {}; b.tools.scrollable = { version: "1.1.2", conf: { size: 5, vertical: false, speed: 400, keyboard: true, keyboardSteps: null, disabledClass: "disabled", hoverClass: null, clickable: true, activeClass: "active", easing: "swing", loop: false, items: ".items", item: null, prev: ".prev", next: ".next", prevPage: ".prevPage", nextPage: ".nextPage", api: false} }; var c; function a(o, m) { var r = this, p = b(this), d = !m.vertical, e = o.children(), k = 0, i; if (!c) { c = r } b.each(m, function(s, t) { if (b.isFunction(t)) { p.bind(s, t) } }); if (e.length > 1) { e = b(m.items, o) } function l(t) { var s = b(t); return m.globalNav ? s : o.parent().find(t) } o.data("finder", l); var f = l(m.prev), h = l(m.next), g = l(m.prevPage), n = l(m.nextPage); b.extend(r, { getIndex: function() { return k }, getClickIndex: function() { var s = r.getItems(); return s.index(s.filter("." + m.activeClass)) }, getConf: function() { return m }, getSize: function() { return r.getItems().size() }, getPageAmount: function() { return Math.ceil(this.getSize() / m.size) }, getPageIndex: function() { return Math.ceil(k / m.size) }, getNaviButtons: function() { return f.add(h).add(g).add(n) }, getRoot: function() { return o }, getItemWrap: function() { return e }, getItems: function() { return e.children(m.item) }, getVisibleItems: function() { return r.getItems().slice(k, k + m.size) }, seekTo: function(s, w, t) { if (s < 0) { s = 0 } if (k === s) { return r } if (b.isFunction(w)) { t = w } if (s > r.getSize() - m.size) { return m.loop ? r.begin() : this.end() } var u = r.getItems().eq(s); if (!u.length) { return r } var v = b.Event("onBeforeSeek"); p.trigger(v, [s]); if (v.isDefaultPrevented()) { return r } if (w === undefined || b.isFunction(w)) { w = m.speed } function x() { if (t) { t.call(r, s) } p.trigger("onSeek", [s]) } if (d) { e.animate({ left: -u.position().left }, w, m.easing, x) } else { e.animate({ top: -u.position().top }, w, m.easing, x) } c = r; k = s; v = b.Event("onStart"); p.trigger(v, [s]); if (v.isDefaultPrevented()) { return r } f.add(g).toggleClass(m.disabledClass, s === 0); h.add(n).toggleClass(m.disabledClass, s >= r.getSize() - m.size); return r }, move: function(u, t, s) { i = u > 0; return this.seekTo(k + u, t, s) }, next: function(t, s) { return this.move(1, t, s) }, prev: function(t, s) { return this.move(-1, t, s) }, movePage: function(w, v, u) { i = w > 0; var s = m.size * w; var t = k % m.size; if (t > 0) { s += (w > 0 ? -t : m.size - t) } return this.move(s, v, u) }, prevPage: function(t, s) { return this.movePage(-1, t, s) }, nextPage: function(t, s) { return this.movePage(1, t, s) }, setPage: function(t, u, s) { return this.seekTo(t * m.size, u, s) }, begin: function(t, s) { i = false; return this.seekTo(0, t, s) }, end: function(t, s) { i = true; var u = this.getSize() - m.size; return u > 0 ? this.seekTo(u, t, s) : r }, reload: function() { p.trigger("onReload"); return r }, focus: function() { c = r; return r }, click: function(u) { var v = r.getItems().eq(u), s = m.activeClass, t = m.size; if (u < 0 || u >= r.getSize()) { return r } if (t == 1) { if (m.loop) { return r.next() } if (u === 0 || u == r.getSize() - 1) { i = (i === undefined) ? true : !i } return i === false ? r.prev() : r.next() } if (t == 2) { if (u == k) { u-- } r.getItems().removeClass(s); v.addClass(s); return r.seekTo(u, time, fn) } if (!v.hasClass(s)) { r.getItems().removeClass(s); v.addClass(s); var x = Math.floor(t / 2); var w = u - x; if (w > r.getSize() - t) { w = r.getSize() - t } if (w !== u) { return r.seekTo(w) } } return r }, bind: function(s, t) { p.bind(s, t); return r }, unbind: function(s) { p.unbind(s); return r } }); b.each("onBeforeSeek,onStart,onSeek,onReload".split(","), function(s, t) { r[t] = function(u) { return r.bind(t, u) } }); f.addClass(m.disabledClass).click(function() { r.prev() }); h.click(function() { r.next() }); n.click(function() { r.nextPage() }); if (r.getSize() < m.size) { h.add(n).addClass(m.disabledClass) } g.addClass(m.disabledClass).click(function() { r.prevPage() }); var j = m.hoverClass, q = "keydown." + Math.random().toString().substring(10); r.onReload(function() { if (j) { r.getItems().hover(function() { b(this).addClass(j) }, function() { b(this).removeClass(j) }) } if (m.clickable) { r.getItems().each(function(s) { b(this).unbind("click.scrollable").bind("click.scrollable", function(t) { if (b(t.target).is("a")) { return } return r.click(s) }) }) } if (m.keyboard) { b(document).unbind(q).bind(q, function(t) { if (t.altKey || t.ctrlKey) { return } if (m.keyboard != "static" && c != r) { return } var u = m.keyboardSteps; if (d && (t.keyCode == 37 || t.keyCode == 39)) { r.move(t.keyCode == 37 ? -u : u); return t.preventDefault() } if (!d && (t.keyCode == 38 || t.keyCode == 40)) { r.move(t.keyCode == 38 ? -u : u); return t.preventDefault() } return true }) } else { b(document).unbind(q) } }); r.reload() } b.fn.scrollable = function(d) { var e = this.eq(typeof d == "number" ? d : 0).data("scrollable"); if (e) { return e } var f = b.extend({}, b.tools.scrollable.conf); d = b.extend(f, d); d.keyboardSteps = d.keyboardSteps || d.size; this.each(function() { e = new a(b(this), d); b(this).data("scrollable", e) }); return d.api ? e : this } })(jQuery);
(function(b) { var a = b.tools.scrollable; a.plugins = a.plugins || {}; a.plugins.circular = { version: "0.5.1", conf: { api: false, clonedClass: "cloned"} }; b.fn.circular = function(e) { var d = b.extend({}, a.plugins.circular.conf), c; b.extend(d, e); this.each(function() { var i = b(this).scrollable(), n = i.getItems(), k = i.getConf(), f = i.getItemWrap(), j = 0; if (i) { c = i } if (n.length < k.size) { return false } n.slice(0, k.size).each(function(o) { b(this).clone().appendTo(f).click(function() { i.click(n.length + o) }).addClass(d.clonedClass) }); var l = b.makeArray(n.slice(-k.size)).reverse(); b(l).each(function(o) { b(this).clone().prependTo(f).click(function() { i.click(-o - 1) }).addClass(d.clonedClass) }); var m = f.children(k.item); var h = k.hoverClass; if (h) { m.hover(function() { b(this).addClass(h) }, function() { b(this).removeClass(h) }) } function g(o) { var p = m.eq(o); if (k.vertical) { f.css({ top: -p.position().top }) } else { f.css({ left: -p.position().left }) } } g(k.size); b.extend(i, { move: function(s, r, p, q) { var u = j + s + k.size; var t = u > i.getSize() - k.size; if (u <= 0 || t) { var o = j + k.size + (t ? -n.length : n.length); g(o); u = o + s } if (q) { m.removeClass(k.activeClass).eq(u + Math.floor(k.size / 2)).addClass(k.activeClass) } if (u === j + k.size) { return self } return i.seekTo(u, r, p) }, begin: function(p, o) { return this.seekTo(k.size, p, o) }, end: function(p, o) { return this.seekTo(n.length, p, o) }, click: function(p, r, q) { if (!k.clickable) { return self } if (k.size == 1) { return this.next() } var s = p - j, o = k.activeClass; s -= Math.floor(k.size / 2); return this.move(s, r, q, true) }, getIndex: function() { return j }, setPage: function(p, q, o) { return this.seekTo(p * k.size + k.size, q, o) }, getPageAmount: function() { return Math.ceil(n.length / k.size) }, getPageIndex: function() { if (j < 0) { return this.getPageAmount() - 1 } if (j >= n.length) { return 0 } var o = (j + k.size) / k.size - 1; return o }, getVisibleItems: function() { var o = j + k.size; return m.slice(o, o + k.size) } }); i.onStart(function(p, o) { j = o - k.size; return false }); i.getNaviButtons().removeClass(k.disabledClass) }); return d.api ? c : this } })(jQuery);
(function(b) { var a = b.tools.scrollable; a.plugins = a.plugins || {}; a.plugins.autoscroll = { version: "1.0.1", conf: { autoplay: true, interval: 3000, autopause: true, steps: 1, api: false} }; b.fn.autoscroll = function(d) { if (typeof d == "number") { d = { interval: d} } var e = b.extend({}, a.plugins.autoscroll.conf), c; b.extend(e, d); this.each(function() { var g = b(this).scrollable(); if (g) { c = g } var i, f, h = true; g.play = function() { if (i) { return } h = false; i = setInterval(function() { g.move(e.steps) }, e.interval); g.move(e.steps) }; g.pause = function() { i = clearInterval(i) }; g.stop = function() { g.pause(); h = true }; if (e.autopause) { g.getRoot().add(g.getNaviButtons()).hover(function() { g.pause(); clearInterval(f) }, function() { if (!h) { f = setTimeout(g.play, e.interval) } }) } if (e.autoplay) { setTimeout(g.play, e.interval) } }); return e.api ? c : this } })(jQuery);
(function(b) { var a = b.tools.scrollable; a.plugins = a.plugins || {}; a.plugins.navigator = { version: "1.0.2", conf: { navi: ".navi", naviItem: null, activeClass: "active", indexed: false, api: false, idPrefix: null} }; b.fn.navigator = function(d) { var e = b.extend({}, a.plugins.navigator.conf), c; if (typeof d == "string") { d = { navi: d} } d = b.extend(e, d); this.each(function() { var i = b(this).scrollable(), f = i.getRoot(), l = f.data("finder").call(null, d.navi), g = null, k = i.getNaviButtons(); if (i) { c = i } i.getNaviButtons = function() { return k.add(l) }; function j() { if (!l.children().length || l.data("navi") == i) { l.empty(); l.data("navi", i); for (var m = 0; m < i.getPageAmount(); m++) { l.append(b("<" + (d.naviItem || "a") + "/>")) } g = l.children().each(function(n) { var o = b(this); o.click(function(p) { i.setPage(n); return p.preventDefault() }); if (d.indexed) { o.text(n) } if (d.idPrefix) { o.attr("id", d.idPrefix + n) } }) } else { g = d.naviItem ? l.find(d.naviItem) : l.children(); g.each(function(n) { var o = b(this); o.click(function(p) { i.setPage(n); return p.preventDefault() }) }) } g.eq(0).addClass(d.activeClass) } i.onStart(function(o, n) { var m = d.activeClass; g.removeClass(m).eq(i.getPageIndex()).addClass(m) }); i.onReload(function() { j() }); j(); var h = g.filter("[href=" + location.hash + "]"); if (h.length) { i.move(g.index(h)) } }); return d.api ? c : this } })(jQuery);
(function(b) { b.fn.wheel = function(e) { return this[e ? "bind" : "trigger"]("wheel", e) }; b.event.special.wheel = { setup: function() { b.event.add(this, d, c, {}) }, teardown: function() { b.event.remove(this, d, c) } }; var d = !b.browser.mozilla ? "mousewheel" : "DOMMouseScroll" + (b.browser.version < "1.9" ? " mousemove" : ""); function c(e) { switch (e.type) { case "mousemove": return b.extend(e.data, { clientX: e.clientX, clientY: e.clientY, pageX: e.pageX, pageY: e.pageY }); case "DOMMouseScroll": b.extend(e, e.data); e.delta = -e.detail / 3; break; case "mousewheel": e.delta = e.wheelDelta / 120; break } e.type = "wheel"; return b.event.handle.call(this, e, e.delta) } var a = b.tools.scrollable; a.plugins = a.plugins || {}; a.plugins.mousewheel = { version: "1.0.1", conf: { api: false, speed: 50} }; b.fn.mousewheel = function(f) { var g = b.extend({}, a.plugins.mousewheel.conf), e; if (typeof f == "number") { f = { speed: f} } f = b.extend(g, f); this.each(function() { var h = b(this).scrollable(); if (h) { e = h } h.getRoot().wheel(function(i, j) { h.move(j < 0 ? 1 : -1, f.speed || 50); return false }) }); return f.api ? e : this } })(jQuery);
(function(c) { c.tools = c.tools || {}; c.tools.overlay = { version: "1.1.2", addEffect: function(e, f, g) { b[e] = [f, g] }, conf: { top: "10%", left: "center", absolute: false, speed: "normal", closeSpeed: "fast", effect: "default", close: null, oneInstance: true, closeOnClick: true, closeOnEsc: true, api: false, expose: null, target: null} }; var b = {}; c.tools.overlay.addEffect("default", function(e) { this.getOverlay().fadeIn(this.getConf().speed, e) }, function(e) { this.getOverlay().fadeOut(this.getConf().closeSpeed, e) }); var d = []; function a(g, k) { var o = this, m = c(this), n = c(window), j, i, h, e = k.expose && c.tools.expose.version; var f = k.target || g.attr("rel"); i = f ? c(f) : null || g; if (!i.length) { throw "Could not find Overlay: " + f } if (g && g.index(i) == -1) { g.click(function(p) { o.load(p); return p.preventDefault() }) } c.each(k, function(p, q) { if (c.isFunction(q)) { m.bind(p, q) } }); c.extend(o, { load: function(u) { if (o.isOpened()) { return o } var r = b[k.effect]; if (!r) { throw 'Overlay: cannot find effect : "' + k.effect + '"' } if (k.oneInstance) { c.each(d, function() { this.close(u) }) } u = u || c.Event(); u.type = "onBeforeLoad"; m.trigger(u); if (u.isDefaultPrevented()) { return o } h = true; if (e) { i.expose().load(u) } var t = k.top; var s = k.left; var p = i.outerWidth({ margin: true }); var q = i.outerHeight({ margin: true }); if (typeof t == "string") { t = t == "center" ? Math.max((n.height() - q) / 2, 0) : parseInt(t, 10) / 100 * n.height() } if (s == "center") { s = Math.max((n.width() - p) / 2, 0) } if (!k.absolute) { t += n.scrollTop(); s += n.scrollLeft() } i.css({ top: t, left: s, position: "absolute" }); u.type = "onStart"; m.trigger(u); r[0].call(o, function() { if (h) { u.type = "onLoad"; m.trigger(u) } }); if (k.closeOnClick) { c(document).bind("click.overlay", function(w) { if (!o.isOpened()) { return } var v = c(w.target); if (v.parents(i).length > 1) { return } c.each(d, function() { this.close(w) }) }) } if (k.closeOnEsc) { c(document).unbind("keydown.overlay").bind("keydown.overlay", function(v) { if (v.keyCode == 27) { c.each(d, function() { this.close(v) }) } }) } return o }, close: function(q) { if (!o.isOpened()) { return o } q = q || c.Event(); q.type = "onBeforeClose"; m.trigger(q); if (q.isDefaultPrevented()) { return } h = false; b[k.effect][1].call(o, function() { q.type = "onClose"; m.trigger(q) }); var p = true; c.each(d, function() { if (this.isOpened()) { p = false } }); if (p) { c(document).unbind("click.overlay").unbind("keydown.overlay") } return o }, getContent: function() { return i }, getOverlay: function() { return i }, getTrigger: function() { return g }, getClosers: function() { return j }, isOpened: function() { return h }, getConf: function() { return k }, bind: function(p, q) { m.bind(p, q); return o }, unbind: function(p) { m.unbind(p); return o } }); c.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","), function(p, q) { o[q] = function(r) { return o.bind(q, r) } }); if (e) { if (typeof k.expose == "string") { k.expose = { color: k.expose} } c.extend(k.expose, { api: true, closeOnClick: k.closeOnClick, closeOnEsc: false }); var l = i.expose(k.expose); l.onBeforeClose(function(p) { o.close(p) }); o.onClose(function(p) { l.close(p) }) } j = i.find(k.close || ".close"); if (!j.length && !k.close) { j = c('<div class="close"></div>'); i.prepend(j) } j.click(function(p) { o.close(p) }) } c.fn.overlay = function(e) { var f = this.eq(typeof e == "number" ? e : 0).data("overlay"); if (f) { return f } if (c.isFunction(e)) { e = { onBeforeLoad: e} } var g = c.extend({}, c.tools.overlay.conf); e = c.extend(true, g, e); this.each(function() { f = new a(c(this), e); d.push(f); c(this).data("overlay", f) }); return e.api ? f : this } })(jQuery);
(function(b) { var a = b.tools.overlay; a.plugins = a.plugins || {}; a.plugins.gallery = { version: "1.0.0", conf: { imgId: "img", next: ".next", prev: ".prev", info: ".info", progress: ".progress", disabledClass: "disabled", activeClass: "active", opacity: 0.8, speed: "slow", template: "<strong>${title}</strong> <span>Image ${index} of ${total}</span>", autohide: true, preload: true, api: false} }; b.fn.gallery = function(d) { var o = b.extend({}, a.plugins.gallery.conf), m; b.extend(o, d); m = this.overlay(); var r = this, j = m.getOverlay(), k = j.find(o.next), g = j.find(o.prev), e = j.find(o.info), c = j.find(o.progress), h = g.add(k).add(e).css({ opacity: o.opacity }), s = m.getClosers(), l; function p(u) { c.fadeIn(); h.hide(); s.hide(); var t = u.attr("href"); var v = new Image(); v.onload = function() { c.fadeOut(); var y = b("#" + o.imgId, j); if (!y.length) { y = b("<img/>").attr("id", o.imgId).css("visibility", "hidden"); j.prepend(y) } y.attr("src", t).css("visibility", "hidden"); var z = v.width; var A = (b(window).width() - z) / 2; l = r.index(r.filter("[href=" + t + "]")); r.removeClass(o.activeClass).eq(l).addClass(o.activeClass); var w = o.disabledClass; h.removeClass(w); if (l === 0) { g.addClass(w) } if (l == r.length - 1) { k.addClass(w) } var B = o.template.replace("${title}", u.attr("title") || u.data("title")).replace("${index}", l + 1).replace("${total}", r.length); var x = parseInt(e.css("paddingLeft"), 10) + parseInt(e.css("paddingRight"), 10); e.html(B).css({ width: z - x }); j.animate({ width: z, height: v.height, left: A }, o.speed, function() { y.hide().css("visibility", "visible").fadeIn(function() { if (!o.autohide) { h.fadeIn(); s.show() } }) }) }; v.onerror = function() { j.fadeIn().html("Cannot find image " + t) }; v.src = t; if (o.preload) { r.filter(":eq(" + (l - 1) + "), :eq(" + (l + 1) + ")").each(function() { var w = new Image(); w.src = b(this).attr("href") }) } } function f(t, u) { t.click(function() { if (t.hasClass(o.disabledClass)) { return } var v = r.eq(i = l + (u ? 1 : -1)); if (v.length) { p(v) } }) } f(k, true); f(g); b(document).keydown(function(t) { if (!j.is(":visible") || t.altKey || t.ctrlKey) { return } if (t.keyCode == 37 || t.keyCode == 39) { var u = t.keyCode == 37 ? g : k; u.click(); return t.preventDefault() } return true }); function q() { if (!j.is(":animated")) { h.show(); s.show() } } if (o.autohide) { j.hover(q, function() { h.fadeOut(); s.hide() }).mousemove(q) } var n; this.each(function() { var v = b(this), u = b(this).overlay(), t = u; u.onBeforeLoad(function() { p(v) }); u.onClose(function() { r.removeClass(o.activeClass) }) }); return o.api ? n : this } })(jQuery);
(function(b) { b.tools = b.tools || {}; b.tools.expose = { version: "1.0.5", conf: { maskId: null, loadSpeed: "slow", closeSpeed: "fast", closeOnClick: true, closeOnEsc: true, zIndex: 9998, opacity: 0.8, color: "#456", api: false} }; function a() { if (b.browser.msie) { var f = b(document).height(), e = b(window).height(); return [window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, f - e < 20 ? e : f] } return [b(window).width(), b(document).height()] } function c(h, g) { var e = this, j = b(this), d = null, f = false, i = 0; b.each(g, function(k, l) { if (b.isFunction(l)) { j.bind(k, l) } }); b(window).resize(function() { e.fit() }); b.extend(this, { getMask: function() { return d }, getExposed: function() { return h }, getConf: function() { return g }, isLoaded: function() { return f }, load: function(n) { if (f) { return e } i = h.eq(0).css("zIndex"); if (g.maskId) { d = b("#" + g.maskId) } if (!d || !d.length) { var l = a(); d = b("<div/>").css({ position: "absolute", top: 0, left: 0, width: l[0], height: l[1], display: "none", opacity: 0, zIndex: g.zIndex }); if (g.maskId) { d.attr("id", g.maskId) } b("body").append(d); var k = d.css("backgroundColor"); if (!k || k == "transparent" || k == "rgba(0, 0, 0, 0)") { d.css("backgroundColor", g.color) } if (g.closeOnEsc) { b(document).bind("keydown.unexpose", function(o) { if (o.keyCode == 27) { e.close() } }) } if (g.closeOnClick) { d.bind("click.unexpose", function(o) { e.close(o) }) } } n = n || b.Event(); n.type = "onBeforeLoad"; j.trigger(n); if (n.isDefaultPrevented()) { return e } b.each(h, function() { var o = b(this); if (!/relative|absolute|fixed/i.test(o.css("position"))) { o.css("position", "relative") } }); h.css({ zIndex: Math.max(g.zIndex + 1, i == "auto" ? 0 : i) }); var m = d.height(); if (!this.isLoaded()) { d.css({ opacity: 0, display: "block" }).fadeTo(g.loadSpeed, g.opacity, function() { if (d.height() != m) { d.css("height", m) } n.type = "onLoad"; j.trigger(n) }) } f = true; return e }, close: function(k) { if (!f) { return e } k = k || b.Event(); k.type = "onBeforeClose"; j.trigger(k); if (k.isDefaultPrevented()) { return e } d.fadeOut(g.closeSpeed, function() { k.type = "onClose"; j.trigger(k); h.css({ zIndex: b.browser.msie ? i : null }) }); f = false; return e }, fit: function() { if (d) { var k = a(); d.css({ width: k[0], height: k[1] }) } }, bind: function(k, l) { j.bind(k, l); return e }, unbind: function(k) { j.unbind(k); return e } }); b.each("onBeforeLoad,onLoad,onBeforeClose,onClose".split(","), function(k, l) { e[l] = function(m) { return e.bind(l, m) } }) } b.fn.expose = function(d) { var e = this.eq(typeof d == "number" ? d : 0).data("expose"); if (e) { return e } if (typeof d == "string") { d = { color: d} } var f = b.extend({}, b.tools.expose.conf); d = b.extend(f, d); this.each(function() { e = new c(b(this), d); b(this).data("expose", e) }); return d.api ? e : this } })(jQuery);


//JqueryUI

/*
 * 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(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},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}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.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 j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/*
 * jQuery UI Tabs 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/Tabs
 *
 * Depends:
 *	ui.core.js
 */
(function(a){a.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable}this._tabify(true)},_setData:function(b,c){if(b=="selected"){if(this.options.collapsible&&c==this.options.selected){return}this.select(c)}else{this.options[b]=c;if(b=="deselectable"){this.options.collapsible=c}this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+a.data(b)},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+a.data(this.list[0]));return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(c,b){return{tab:c,panel:b,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(n){this.list=this.element.children("ul:first");this.lis=a("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);var p=this,d=this.options;var c=/^#.+/;this.anchors.each(function(r,o){var q=a(o).attr("href");var s=q.split("#")[0],u;if(s&&(s===location.toString().split("#")[0]||(u=a("base")[0])&&s===u.href)){q=o.hash;o.href=q}if(c.test(q)){p.panels=p.panels.add(p._sanitizeSelector(q))}else{if(q!="#"){a.data(o,"href.tabs",q);a.data(o,"load.tabs",q.replace(/#.*$/,""));var w=p._tabId(o);o.href="#"+w;var v=a("#"+w);if(!v.length){v=a(d.panelTemplate).attr("id",w).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r-1]||p.list);v.data("destroy.tabs",true)}p.panels=p.panels.add(v)}else{d.disabled.push(r)}}});if(n){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(d.selected===undefined){if(location.hash){this.anchors.each(function(q,o){if(o.hash==location.hash){d.selected=q;return false}})}if(typeof d.selected!="number"&&d.cookie){d.selected=parseInt(p._cookie(),10)}if(typeof d.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}d.selected=d.selected||0}else{if(d.selected===null){d.selected=-1}}d.selected=((d.selected>=0&&this.anchors[d.selected])||d.selected<0)?d.selected:0;d.disabled=a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(q,o){return p.lis.index(q)}))).sort();if(a.inArray(d.selected,d.disabled)!=-1){d.disabled.splice(a.inArray(d.selected,d.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(d.selected>=0&&this.anchors.length){this.panels.eq(d.selected).removeClass("ui-tabs-hide");this.lis.eq(d.selected).addClass("ui-tabs-selected ui-state-active");p.element.queue("tabs",function(){p._trigger("show",null,p._ui(p.anchors[d.selected],p.panels[d.selected]))});this.load(d.selected)}a(window).bind("unload",function(){p.lis.add(p.anchors).unbind(".tabs");p.lis=p.anchors=p.panels=null})}else{d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[d.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(d.cookie){this._cookie(d.selected,d.cookie)}for(var g=0,m;(m=this.lis[g]);g++){a(m)[a.inArray(g,d.disabled)!=-1&&!a(m).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(d.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(d.event!="mouseover"){var f=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var j=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){f("hover",a(this))});this.lis.bind("mouseout.tabs",function(){j("hover",a(this))});this.anchors.bind("focus.tabs",function(){f("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var b,h;if(d.fx){if(a.isArray(d.fx)){b=d.fx[0];h=d.fx[1]}else{b=h=d.fx}}function e(i,o){i.css({display:""});if(a.browser.msie&&o.opacity){i[0].style.removeAttribute("filter")}}var k=h?function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(h,h.duration||"normal",function(){e(o,h);p._trigger("show",null,p._ui(i,o[0]))})}:function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");p._trigger("show",null,p._ui(i,o[0]))};var l=b?function(o,i){i.animate(b,b.duration||"normal",function(){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");e(i,b);p.element.dequeue("tabs")})}:function(o,i,q){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");p.element.dequeue("tabs")};this.anchors.bind(d.event+".tabs",function(){var o=this,r=a(this).closest("li"),i=p.panels.filter(":not(.ui-tabs-hide)"),q=a(p._sanitizeSelector(this.hash));if((r.hasClass("ui-tabs-selected")&&!d.collapsible)||r.hasClass("ui-state-disabled")||r.hasClass("ui-state-processing")||p._trigger("select",null,p._ui(this,q[0]))===false){this.blur();return false}d.selected=p.anchors.index(this);p.abort();if(d.collapsible){if(r.hasClass("ui-tabs-selected")){d.selected=-1;if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){l(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this));this.blur();return false}}}if(d.cookie){p._cookie(d.selected,d.cookie)}if(q.length){if(i.length){p.element.queue("tabs",function(){l(o,i)})}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(a.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var c=a.data(this,"href.tabs");if(c){this.href=c}var d=a(this).unbind(".tabs");a.each(["href","load","cache"],function(e,f){d.removeData(f+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(a.data(this,"destroy.tabs")){a(this).remove()}else{a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(b.cookie){this._cookie(null,b.cookie)}},add:function(e,d,c){if(c===undefined){c=this.anchors.length}var b=this,g=this.options,i=a(g.tabTemplate.replace(/#\{href\}/g,e).replace(/#\{label\}/g,d)),h=!e.indexOf("#")?e.replace("#",""):this._tabId(a("a",i)[0]);i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var f=a("#"+h);if(!f.length){f=a(g.panelTemplate).attr("id",h).data("destroy.tabs",true)}f.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(c>=this.lis.length){i.appendTo(this.list);f.appendTo(this.list[0].parentNode)}else{i.insertBefore(this.lis[c]);f.insertBefore(this.panels[c])}g.disabled=a.map(g.disabled,function(k,j){return k>=c?++k:k});this._tabify();if(this.anchors.length==1){i.addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[c],this.panels[c]))},remove:function(b){var d=this.options,e=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(e.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(b+(b+1<this.anchors.length?1:-1))}d.disabled=a.map(a.grep(d.disabled,function(g,f){return g!=b}),function(g,f){return g>=b?--g:g});this._tabify();this._trigger("remove",null,this._ui(e.find("a")[0],c[0]))},enable:function(b){var c=this.options;if(a.inArray(b,c.disabled)==-1){return}this.lis.eq(b).removeClass("ui-state-disabled");c.disabled=a.grep(c.disabled,function(e,d){return e!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]))},disable:function(c){var b=this,d=this.options;if(c!=d.selected){this.lis.eq(c).addClass("ui-state-disabled");d.disabled.push(c);d.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}},select:function(b){if(typeof b=="string"){b=this.anchors.index(this.anchors.filter("[href$="+b+"]"))}else{if(b===null){b=-1}}if(b==-1&&this.options.collapsible){b=this.options.selected}this.anchors.eq(b).trigger(this.options.event+".tabs")},load:function(e){var c=this,g=this.options,b=this.anchors.eq(e)[0],d=a.data(b,"load.tabs");this.abort();if(!d||this.element.queue("tabs").length!==0&&a.data(b,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(e).addClass("ui-state-processing");if(g.spinner){var f=a("span",b);f.data("label.tabs",f.html()).html(g.spinner)}this.xhr=a.ajax(a.extend({},g.ajaxOptions,{url:d,success:function(i,h){a(c._sanitizeSelector(b.hash)).html(i);c._cleanup();if(g.cache){a.data(b,"cache.tabs",true)}c._trigger("load",null,c._ui(c.anchors[e],c.panels[e]));try{g.ajaxOptions.success(i,h)}catch(j){}c.element.dequeue("tabs")}}))},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup()},url:function(c,b){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",b)},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.7.2",getter:"length",defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:"click",fx:null,idPrefix:"ui-tabs-",panelTemplate:"<div></div>",spinner:"<em>Loading&#8230;</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'}});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(d,f){var b=this,g=this.options;var c=b._rotate||(b._rotate=function(h){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var i=g.selected;b.select(++i<b.anchors.length?i:0)},d);if(h){h.stopPropagation()}});var e=b._unrotate||(b._unrotate=!f?function(h){if(h.clientX){b.rotate(null)}}:function(h){t=g.selected;c()});if(d){this.element.bind("tabsshow",c);this.anchors.bind(g.event+".tabs",e);c()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",c);this.anchors.unbind(g.event+".tabs",e);delete this._rotate;delete this._unrotate}}})})(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($){$.extend($.ui,{datepicker:{version:"1.7.2"}});var PROP_NAME="datepicker";function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],dateFormat:"mm/dd/yy",firstDay:0,isRTL:false};this._defaults={showOn:"focus",showAnim:"show",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,showMonthAfterYear:false,yearRange:"-10:+10",showOtherMonths:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"normal",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false};$.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,{markerClassName:"hasDatepicker",log:function(){if(this.debug){console.log.apply("",arguments)}},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this},_attachDatepicker:function(target,settings){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)}}},_newInst:function(target,inline){var id=target[0].id.replace(/([:\[\]\.])/g,"\\\\$1");return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_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"){input.focus(this._showDatepicker)}if(showOn=="button"||showOn=="both"){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)},_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)},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;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=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY]}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},_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()}}},_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)})},_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)});this._disabledInputs[this._disabledInputs.length]=target},_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},_getInst:function(target){try{return $.data(target,PROP_NAME)}catch(err){throw"Missing instance data for this datepicker"}},_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)}},_changeDatepicker:function(target,name,value){this._optionDatepicker(target,name,value)},_refreshDatepicker:function(target){var inst=this._getInst(target);if(inst){this._updateDatepicker(inst)}},_setDateDatepicker:function(target,date,endDate){var inst=this._getInst(target);if(inst){this._setDate(inst,date,endDate);this._updateDatepicker(inst);this._updateAlternate(inst)}},_getDateDatepicker:function(target){var inst=this._getInst(target);if(inst&&!inst.inline){this._setDateFromField(inst)}return(inst?this._getDate(inst):null)},_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;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;break;case 27:$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"));break;case 33:$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M");break;case 34:$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M");break;case 35:if(event.ctrlKey||event.metaKey){$.datepicker._clearDate(event.target)}handled=event.ctrlKey||event.metaKey;break;case 36:if(event.ctrlKey||event.metaKey){$.datepicker._gotoToday(event.target)}handled=event.ctrlKey||event.metaKey;break;case 37:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?+1:-1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M")}break;case 38:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,-7,"D")}handled=event.ctrlKey||event.metaKey;break;case 39:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?-1:+1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M")}break;case 40:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,+7,"D")}handled=event.ctrlKey||event.metaKey;break;default:handled=false}}else{if(event.keyCode==36&&event.ctrlKey){$.datepicker._showDatepicker(this)}else{handled=false}}if(handled){event.preventDefault();event.stopPropagation()}},_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)}},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!="input"){input=$("input",input.parentNode)[0]}if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input){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){input.value=""}if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css("position")=="fixed";return !isFixed});if(isFixed&&$.browser.opera){$.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;inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.datepicker._updateDatepicker(inst);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){$("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}},_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()}},_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;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},_findPos:function(obj){while(obj&&(obj.type=="hidden"||obj.nodeType!=1)){obj=obj.nextSibling}var position=$(obj).offset();return[position.left,position.top]},_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])}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},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_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,"")}},_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),period);this._updateDatepicker(inst)},_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)},_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)},_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},_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)}},_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,"")},_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])}else{if(inst.input){inst.input.trigger("change")}}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()}this._lastInput=null}}},_updateAlternate:function(inst){var altField=this._get(inst,"altField");if(altField){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)})}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),""]},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDate<firstMon){checkDate.setDate(checkDate.getDate()-3);return $.datepicker.iso8601Week(checkDate)}else{if(checkDate>new Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)<firstDay-3){return 1}}}return Math.floor(((checkDate-firstMon)/86400000)/7)+1},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;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};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};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};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"}return date},ATOM:"yy-mm-dd",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",TIMESTAMP:"@",W3C:"yy-mm-dd",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;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var formatNumber=function(match,value,len){var num=""+value;if(lookAhead(match)){while(num.length<len){num="0"+num}}return num};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},_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;case"'":if(lookAhead("'")){chars+="'"}else{literal=true}break;default:chars+=format.charAt(iFormat)}}}return chars},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name]},_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)},_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},_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)},_daylightSavingAdjust:function(date){if(!date){return null}date.setHours(date.getHours()>12?date.getHours()+2:0);return date},_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))}},_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},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));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)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var thead="";for(var dow=0;dow<7;dow++){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));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow<numRows;dRow++){calender+="<tr>";var tbody="";for(var dow=0;dow<7;dow++){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":"")+(otherMonth?" ui-datepicker-other-month":"")+((printDate.getTime()==selectedDate.getTime()&&drawMonth==inst.selectedMonth&&inst._keyEvent)||(defaultDate.getTime()==printDate.getTime()&&defaultDate.getTime()==selectedDate.getTime())?" "+this._dayOverClass:"")+(unselectable?" "+this._unselectableClass+" ui-state-disabled":"")+(otherMonth&&!showOtherMonths?"":" "+daySettings[1]+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()==today.getTime()?" ui-datepicker-today":""))+'"'+((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':"")+(unselectable?"":" onclick=\"DP_jQuery.datepicker._selectDay('#"+inst.id+"',"+drawMonth+","+drawYear+', this);return false;"')+">"+(otherMonth?(showOtherMonths?printDate.getDate():"&#xa0;"):(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()?" ui-state-active":"")+'" href="#">'+printDate.getDate()+"</a>"))+"</td>";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},_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="";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;":"")}if(secondary||!changeYear){html+='<span class="ui-datepicker-year">'+drawYear+"</span>"}else{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>";return html},_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));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)}},_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])}},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return(numMonths==null?[1,1]:(typeof numMonths=="number"?[1,numMonths]:numMonths))},_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))},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_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)},_isInRange:function(inst,date){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))},_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")}},_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))}});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}function isArray(a){return(a&&(($.browser.safari&&typeof a=="object"&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))))}$.fn.datepicker=function(options){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();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.7.2";window.DP_jQuery=$})(jQuery);;/*
 * jQuery UI Effects 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/Effects/
 */
jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(var f=0;f<h.length;f++){if(h[f]!==null){g.data("ec.storage."+h[f],g[0].style[h[f]])}}},restore:function(g,h){for(var f=0;f<h.length;f++){if(h[f]!==null){g.css(h[f],g.data("ec.storage."+h[f]))}}},setMode:function(f,g){if(g=="toggle"){g=f.is(":hidden")?"show":"hide"}return g},getBaseline:function(g,h){var i,f;switch(g[0]){case"top":i=0;break;case"middle":i=0.5;break;case"bottom":i=1;break;default:i=g[0]/h.height}switch(g[1]){case"left":f=0;break;case"center":f=0.5;break;case"right":f=1;break;default:f=g[1]/h.width}return{x:f,y:i}},createWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent()}var g={width:f.outerWidth(true),height:f.outerHeight(true),"float":f.css("float")};f.wrap('<div class="ui-effects-wrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');var j=f.parent();if(f.css("position")=="static"){j.css({position:"relative"});f.css({position:"relative"})}else{var i=f.css("top");if(isNaN(parseInt(i,10))){i="auto"}var h=f.css("left");if(isNaN(parseInt(h,10))){h="auto"}j.css({position:f.css("position"),top:i,left:h,zIndex:f.css("z-index")}).show();f.css({position:"relative",top:0,left:0})}j.css(g);return j},removeWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent().replaceWith(f)}return f},setTransition:function(g,i,f,h){h=h||{};d.each(i,function(k,j){unit=g.cssUnit(j);if(unit[0]>0){h[j]=unit[0]*f+unit[1]}});return h},animateClass:function(h,i,k,j){var f=(typeof k=="function"?k:(j?j:null));var g=(typeof k=="string"?k:null);return this.each(function(){var q={};var o=d(this);var p=o.attr("style")||"";if(typeof p=="object"){p=p.cssText}if(h.toggle){o.hasClass(h.toggle)?h.remove=h.toggle:h.add=h.toggle}var l=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.addClass(h.add)}if(h.remove){o.removeClass(h.remove)}var m=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.removeClass(h.add)}if(h.remove){o.addClass(h.remove)}for(var r in m){if(typeof m[r]!="function"&&m[r]&&r.indexOf("Moz")==-1&&r.indexOf("length")==-1&&m[r]!=l[r]&&(r.match(/color/i)||(!r.match(/color/i)&&!isNaN(parseInt(m[r],10))))&&(l.position!="static"||(l.position=="static"&&!r.match(/left|top|bottom|right/)))){q[r]=m[r]}}o.animate(q,i,g,function(){if(typeof d(this).attr("style")=="object"){d(this).attr("style")["cssText"]="";d(this).attr("style")["cssText"]=p}else{d(this).attr("style",p)}if(h.add){d(this).addClass(h.add)}if(h.remove){d(this).removeClass(h.remove)}if(f){f.apply(this,arguments)}})})}};function c(g,f){var i=g[1]&&g[1].constructor==Object?g[1]:{};if(f){i.mode=f}var h=g[1]&&g[1].constructor!=Object?g[1]:(i.duration?i.duration:g[2]);h=d.fx.off?0:typeof h==="number"?h:d.fx.speeds[h]||d.fx.speeds._default;var j=i.callback||(d.isFunction(g[1])&&g[1])||(d.isFunction(g[2])&&g[2])||(d.isFunction(g[3])&&g[3]);return[g[0],i,h,j]}d.fn.extend({_show:d.fn.show,_hide:d.fn.hide,__toggle:d.fn.toggle,_addClass:d.fn.addClass,_removeClass:d.fn.removeClass,_toggleClass:d.fn.toggleClass,effect:function(g,f,h,i){return d.effects[g]?d.effects[g].call(this,{method:g,options:f||{},duration:h,callback:i}):null},show:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._show.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"show"))}},hide:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._hide.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"hide"))}},toggle:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))||(d.isFunction(arguments[0])||typeof arguments[0]=="boolean")){return this.__toggle.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"toggle"))}},addClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{add:g},f,i,h]):this._addClass(g)},removeClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{remove:g},f,i,h]):this._removeClass(g)},toggleClass:function(g,f,i,h){return((typeof f!=="boolean")&&f)?d.effects.animateClass.apply(this,[{toggle:g},f,i,h]):this._toggleClass(g,f)},morph:function(f,h,g,j,i){return d.effects.animateClass.apply(this,[{add:h,remove:f},g,j,i])},switchClass:function(){return this.morph.apply(this,arguments)},cssUnit:function(f){var g=this.css(f),h=[];d.each(["em","px","%","pt"],function(j,k){if(g.indexOf(k)>0){h=[parseFloat(g),k]}});return h}});d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(g,f){d.fx.step[f]=function(h){if(h.state==0){h.start=e(h.elem,f);h.end=b(h.end)}h.elem.style[f]="rgb("+[Math.max(Math.min(parseInt((h.pos*(h.end[0]-h.start[0]))+h.start[0],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[1]-h.start[1]))+h.start[1],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[2]-h.start[2]))+h.start[2],10),255),0)].join(",")+")"}});function b(g){var f;if(g&&g.constructor==Array&&g.length==3){return g}if(f=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(g)){return[parseInt(f[1],10),parseInt(f[2],10),parseInt(f[3],10)]}if(f=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(g)){return[parseFloat(f[1])*2.55,parseFloat(f[2])*2.55,parseFloat(f[3])*2.55]}if(f=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(g)){return[parseInt(f[1],16),parseInt(f[2],16),parseInt(f[3],16)]}if(f=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(g)){return[parseInt(f[1]+f[1],16),parseInt(f[2]+f[2],16),parseInt(f[3]+f[3],16)]}if(f=/rgba\(0, 0, 0, 0\)/.exec(g)){return a.transparent}return a[d.trim(g).toLowerCase()]}function e(h,f){var g;do{g=d.curCSS(h,f);if(g!=""&&g!="transparent"||d.nodeName(h,"body")){break}f="backgroundColor"}while(h=h.parentNode);return b(g)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};d.easing.jswing=d.easing.swing;d.extend(d.easing,{def:"easeOutQuad",swing:function(g,h,f,j,i){return d.easing[d.easing.def](g,h,f,j,i)},easeInQuad:function(g,h,f,j,i){return j*(h/=i)*h+f},easeOutQuad:function(g,h,f,j,i){return -j*(h/=i)*(h-2)+f},easeInOutQuad:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h+f}return -j/2*((--h)*(h-2)-1)+f},easeInCubic:function(g,h,f,j,i){return j*(h/=i)*h*h+f},easeOutCubic:function(g,h,f,j,i){return j*((h=h/i-1)*h*h+1)+f},easeInOutCubic:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h+f}return j/2*((h-=2)*h*h+2)+f},easeInQuart:function(g,h,f,j,i){return j*(h/=i)*h*h*h+f},easeOutQuart:function(g,h,f,j,i){return -j*((h=h/i-1)*h*h*h-1)+f},easeInOutQuart:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h+f}return -j/2*((h-=2)*h*h*h-2)+f},easeInQuint:function(g,h,f,j,i){return j*(h/=i)*h*h*h*h+f},easeOutQuint:function(g,h,f,j,i){return j*((h=h/i-1)*h*h*h*h+1)+f},easeInOutQuint:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h*h+f}return j/2*((h-=2)*h*h*h*h+2)+f},easeInSine:function(g,h,f,j,i){return -j*Math.cos(h/i*(Math.PI/2))+j+f},easeOutSine:function(g,h,f,j,i){return j*Math.sin(h/i*(Math.PI/2))+f},easeInOutSine:function(g,h,f,j,i){return -j/2*(Math.cos(Math.PI*h/i)-1)+f},easeInExpo:function(g,h,f,j,i){return(h==0)?f:j*Math.pow(2,10*(h/i-1))+f},easeOutExpo:function(g,h,f,j,i){return(h==i)?f+j:j*(-Math.pow(2,-10*h/i)+1)+f},easeInOutExpo:function(g,h,f,j,i){if(h==0){return f}if(h==i){return f+j}if((h/=i/2)<1){return j/2*Math.pow(2,10*(h-1))+f}return j/2*(-Math.pow(2,-10*--h)+2)+f},easeInCirc:function(g,h,f,j,i){return -j*(Math.sqrt(1-(h/=i)*h)-1)+f},easeOutCirc:function(g,h,f,j,i){return j*Math.sqrt(1-(h=h/i-1)*h)+f},easeInOutCirc:function(g,h,f,j,i){if((h/=i/2)<1){return -j/2*(Math.sqrt(1-h*h)-1)+f}return j/2*(Math.sqrt(1-(h-=2)*h)+1)+f},easeInElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}return -(h*Math.pow(2,10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k))+f},easeOutElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}return h*Math.pow(2,-10*i)*Math.sin((i*l-j)*(2*Math.PI)/k)+m+f},easeInOutElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l/2)==2){return f+m}if(!k){k=l*(0.3*1.5)}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}if(i<1){return -0.5*(h*Math.pow(2,10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k))+f}return h*Math.pow(2,-10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k)*0.5+m+f},easeInBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}return k*(h/=j)*h*((i+1)*h-i)+f},easeOutBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}return k*((h=h/j-1)*h*((i+1)*h+i)+1)+f},easeInOutBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}if((h/=j/2)<1){return k/2*(h*h*(((i*=(1.525))+1)*h-i))+f}return k/2*((h-=2)*h*(((i*=(1.525))+1)*h+i)+2)+f},easeInBounce:function(g,h,f,j,i){return j-d.easing.easeOutBounce(g,i-h,0,j,i)+f},easeOutBounce:function(g,h,f,j,i){if((h/=i)<(1/2.75)){return j*(7.5625*h*h)+f}else{if(h<(2/2.75)){return j*(7.5625*(h-=(1.5/2.75))*h+0.75)+f}else{if(h<(2.5/2.75)){return j*(7.5625*(h-=(2.25/2.75))*h+0.9375)+f}else{return j*(7.5625*(h-=(2.625/2.75))*h+0.984375)+f}}}},easeInOutBounce:function(g,h,f,j,i){if(h<i/2){return d.easing.easeInBounce(g,h*2,0,j,i)*0.5+f}return d.easing.easeOutBounce(g,h*2-i,0,j,i)*0.5+j*0.5+f}})})(jQuery);;

//jQuery ui datepicker de start

//jQuery ui datepicker de start

/* German initialisation for the jQuery UI date picker plugin. */

/* Written by Milian Wolff (mail@milianw.de). */

jQuery(function($){
	$.datepicker.regional['de'] = {
		closeText: 'schließen',
		prevText: '&#x3c;zurück',
		nextText: 'Vor&#x3e;',
		currentText: 'heute',
		monthNames: ['Januar','Februar','März','April','Mai','Juni',
		'Juli','August','September','Oktober','November','Dezember'],
		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
		'Jul','Aug','Sep','Okt','Nov','Dez'],
		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dateFormat: 'dd.mm.yy', firstDay: 1,
		isRTL: false};
	$.datepicker.setDefaults($.datepicker.regional['de']);
});


//jQuery ui datepicker de end

//jQuery ui datepicker sl start

/* Slovenian initialisation for the jQuery UI date picker plugin. */

/* Written by Jaka Jancar (jaka@kubje.org). */

/* c = &#x10D;, s = &#x161; z = &#x17E; C = &#x10C; S = &#x160; Z = &#x17D; */

jQuery(function($){
	$.datepicker.regional['sl'] = {
		closeText: 'Zapri',
		prevText: '&lt;Prej&#x161;nji',
		nextText: 'Naslednji&gt;',
		currentText: 'Trenutni',
		monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
		'Julij','Avgust','September','Oktober','November','December'],
		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
		'Jul','Avg','Sep','Okt','Nov','Dec'],
		dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','&#x10C;etrtek','Petek','Sobota'],
		dayNamesShort: ['Ned','Pon','Tor','Sre','&#x10C;et','Pet','Sob'],
		dayNamesMin: ['Ne','Po','To','Sr','&#x10C;e','Pe','So'],
		dateFormat: 'dd.mm.yy', firstDay: 1,
		isRTL: false};
	$.datepicker.setDefaults($.datepicker.regional['sl']);
});


//jQuery ui datepicker sl end


//jQuery ui datepicker sl end

//LazyLoad

/*
 * Lazy Load - jQuery plugin for lazy loading images
 *
 * Copyright (c) 2007-2009 Mika Tuupola
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Project home:
 *   http://www.appelsiini.net/projects/lazyload
 *
 * Version:  1.4.0
 *
 */
(function($) {

    $.fn.lazyload = function(options) {
        var settings = {
            threshold    : 0,
            failurelimit : 0,
            event        : "scroll",
            effect       : "show",
            container    : window
        };
                
        if(options) {
            $.extend(settings, options);
        }

        /* Fire one scroll event per scroll. Not one scroll event per image. */
        var elements = this;
        if ("scroll" == settings.event) {
            $(settings.container).bind("scroll", function(event) {
                
                var counter = 0;
                elements.each(function() {
                    if ($.abovethetop(this, settings) ||
                        $.leftofbegin(this, settings)) {
                            /* Nothing. */
                    } else if (!$.belowthefold(this, settings) &&
                        !$.rightoffold(this, settings)) {
                            $(this).trigger("appear");
                    } else {
                        if (counter++ > settings.failurelimit) {
                            return false;
                        }
                    }
                });
                /* Remove image from array so it is not looped next time. */
                var temp = $.grep(elements, function(element) {
                    return !element.loaded;
                });
                elements = $(temp);
            });
        }
        
        return this.each(function() {
            var self = this;
            $(self).data("original", $(self).attr("src"));

            if ("scroll" != settings.event || (
                         $.abovethetop(self, settings) ||
                         $.leftofbegin(self, settings) || 
                         $.belowthefold(self, settings) || 
                         $.rightoffold(self, settings) )) {
                if (settings.placeholder) {
                    $(self).attr("src", settings.placeholder);      
                } else {
                    $(self).removeAttr("src");
                }
                self.loaded = false;
            } else {
                self.loaded = true;
            }
            
            /* When appear is triggered load original image. */
            $(self).one("appear", function() {
                if (!this.loaded) {
                    $("<img />")
                        .bind("load", function() {
                            $(self)
                                .hide()
                                .attr("src", $(self).data("original"))
                                [settings.effect](settings.effectspeed);
                            self.loaded = true;
                        })
                        .attr("src", $(self).data("original"));
                };
            });

            /* When wanted event is triggered load original image */
            /* by triggering appear.                              */
            if ("scroll" != settings.event) {
                $(self).bind(settings.event, function(event) {
                    if (!self.loaded) {
                        $(self).trigger("appear");
                    }
                });
            }
        });

    };

    /* Convenience methods in jQuery namespace.           */
    /* Use as  $.belowthefold(element, {threshold : 100, container : window}) */

    $.belowthefold = function(element, settings) {
        if (settings.container === undefined || settings.container === window) {
            var fold = $(window).height() + $(window).scrollTop();
        } else {
            var fold = $(settings.container).offset().top + $(settings.container).height();
        }
        return fold <= $(element).offset().top - settings.threshold;
    };
    
    $.rightoffold = function(element, settings) {
        if (settings.container === undefined || settings.container === window) {
            var fold = $(window).width() + $(window).scrollLeft();
        } else {
            var fold = $(settings.container).offset().left + $(settings.container).width();
        }
        return fold <= $(element).offset().left - settings.threshold;
    };
        
    $.abovethetop = function(element, settings) {
        if (settings.container === undefined || settings.container === window) {
            var fold = $(window).scrollTop();
        } else {
            var fold = $(settings.container).offset().top;
        }
        return fold >= $(element).offset().top + settings.threshold  + $(element).height();
    };
    
    $.leftofbegin = function(element, settings) {
        if (settings.container === undefined || settings.container === window) {
            var fold = $(window).scrollLeft();
        } else {
            var fold = $(settings.container).offset().left;
        }
        return fold >= $(element).offset().left + settings.threshold + $(element).width();
    };
    /* Custom selectors for your convenience.   */
    /* Use as $("img:below-the-fold").something() */

    $.extend($.expr[':'], {
        "below-the-fold" : "$.belowthefold(a, {threshold : 0, container: window})",
        "above-the-fold" : "!$.belowthefold(a, {threshold : 0, container: window})",
        "right-of-fold"  : "$.rightoffold(a, {threshold : 0, container: window})",
        "left-of-fold"   : "!$.rightoffold(a, {threshold : 0, container: window})"
    });
    
})(jQuery);



/*
VERSION: Drop Shadow jQuery Plugin 1.6  12-13-2007

REQUIRES: jquery.js (verified for 1.3.2)

SYNTAX: $(selector).dropShadow(options);  // Creates new drop shadows
$(selector).redrawShadow();       // Redraws shadows on elements
$(selector).removeShadow();       // Removes shadows from elements
$(selector).shadowId();           // Returns an existing shadow's ID

OPTIONS:

left    : integer (default = 4)
top     : integer (default = 4)
blur    : integer (default = 2)
opacity : decimal (default = 0.5)
color   : string (default = "black")
swap    : boolean (default = false)

The left and top parameters specify the distance and direction, in  pixels, to
offset the shadow. Zero values position the shadow directly behind the element.
Positive values shift the shadow to the right and down, while negative values 
shift the shadow to the left and up.
  
The blur parameter specifies the spread, or dispersion, of the shadow. Zero 
produces a sharp shadow, one or two produces a normal shadow, and three or four
produces a softer shadow. Higher values increase the processing load.
  
The opacity parameter should be a decimal value, usually less than one. You can
use a value higher than one in special situations, e.g. with extreme blurring. 
  
Color is specified in the usual manner, with a color name or hex value. The
color parameter does not apply with transparent images.
  
The swap parameter reverses the stacking order of the original and the shadow.
This can be used for special effects, like an embossed or engraved look.

EXPLANATION:
  
This jQuery plug-in adds soft drop shadows behind page elements. It is only
intended for adding a few drop shadows to mostly stationary objects, like a
page heading, a photo, or content containers.

The shadows it creates are not bound to the original elements, so they won't
move or change size automatically if the original elements change. A window
resize event listener is assigned, which should re-align the shadows in many
cases, but if the elements otherwise move or resize you will have to handle
those events manually. Shadows can be redrawn with the redrawShadow() method
or removed with the removeShadow() method. The redrawShadow() method uses the
same options used to create the original shadow. If you want to change the
options, you should remove the shadow first and then create a new shadow.
  
The dropShadow method returns a jQuery collection of the new shadow(s). If
further manipulation is required, you can store it in a variable like this:

var myShadow = $("#myElement").dropShadow();

You can also read the ID of the shadow from the original element at a later
time. To get a shadow's ID, either read the shadowId attribute of the
original element or call the shadowId() method. For example:

var myShadowId = $("#myElement").attr("shadowId");  or
var myShadowId = $("#myElement").shadowId();

If the original element does not already have an ID assigned, a random ID will
be generated for the shadow. However, if the original does have an ID, the 
shadow's ID will be the original ID and "_dropShadow". For example, if the
element's ID is "myElement", the shadow's ID would be "myElement_dropShadow".

If you have a long piece of text and the user resizes the window so that the
text wraps or unwraps, the shape of the text changes and the words are no
longer in the same positions. In that case, you can either preset the height
and width, so that it becomes a fixed box, or you can shadow each word
separately, like this:

<h1><span>Your</span> <span>Page</span> <span>Title</span></h1>

$("h1 span").dropShadow();

The dropShadow method attempts to determine whether the selected elements have
transparent backgrounds. If you want to shadow the content inside an element,
like text or a transparent image, it must not have a background-color or
background-image style. If the element has a solid background it will create a
rectangular shadow around the outside box.

The shadow elements are positioned absolutely one layer below the original 
element, which is positioned relatively (unless it's already absolute).

*** All shadows have the "dropShadow" class, for selecting with CSS or jQuery.

ISSUES:
  
1)  Limited styling of shadowed elements by ID. Because IDs must be unique,
and the shadows have their own ID, styles applied by ID won't transfer
to the shadows. Instead, style elements by class or use inline styles.
2)  Sometimes shadows don't align properly. Elements may need to be wrapped
in container elements, margins or floats changed, etc. or you may just 
have to tweak the left and top offsets to get them to align. For example,
with draggable objects, you have to wrap them inside two divs. Make the 
outer div draggable and set the inner div's position to relative. Then 
you can create a shadow on the element inside the inner div.
3)  If the user changes font sizes it will throw the shadows off. Browsers 
do not expose an event for font size changes. The only known way to 
detect a user font size change is to embed an invisible text element and
then continuously poll for changes in size.
4)  Safari support is shaky, and may require even more tweaks/wrappers, etc.
    
The bottom line is that this is a gimick effect, not PFM, and if you push it
too hard or expect it to work in every possible situation on every browser,
you will be disappointed. Use it sparingly, and don't use it for anything 
critical. Otherwise, have fun with it!
        
AUTHOR: Larry Stevens.  This work is in the public domain,
and is not supported in any way. Use it at your own risk.
*/


(function($) {

    var dropShadowZindex = 1;  //z-index counter

    $.fn.dropShadow = function(options) {
        // Default options
        var opt = $.extend({
            left: 4,
            top: 4,
            blur: 2,
            opacity: .5,
            color: "black",
            swap: false
        }, options);
        var jShadows = $([]);  //empty jQuery collection

        // Loop through original elements
        this.not(".dropShadow").each(function() {
            var jthis = $(this);
            var shadows = [];
            var blur = (opt.blur <= 0) ? 0 : opt.blur;
            var opacity = (blur == 0) ? opt.opacity : opt.opacity / (blur * 8);
            var zOriginal = (opt.swap) ? dropShadowZindex : dropShadowZindex + 1;
            var zShadow = (opt.swap) ? dropShadowZindex + 1 : dropShadowZindex;

            // Create ID for shadow
            var shadowId;
            if (this.id) {
                shadowId = this.id + "_dropShadow";
            }
            else {
                shadowId = "ds" + (1 + Math.floor(9999 * Math.random()));
            }

            // Modify original element
            $.data(this, "shadowId", shadowId); //store id in expando
            $.data(this, "shadowOptions", options); //store options in expando
            jthis
        .attr("shadowId", shadowId)
        .css("zIndex", zOriginal);
            if (jthis.css("position") != "absolute") {
                jthis.css({
                    position: "relative",
                    zoom: 1 //for IE layout
                });
            }

            // Create first shadow layer
            bgColor = jthis.css("backgroundColor");
            if (bgColor == "rgba(0, 0, 0, 0)") bgColor = "transparent";  //Safari
            if (bgColor != "transparent" || jthis.css("backgroundImage") != "none"
          || this.nodeName == "SELECT"
          || this.nodeName == "INPUT"
          || this.nodeName == "TEXTAREA") {
                shadows[0] = $("<div></div>")
          .css("background", opt.color);
            }
            else {
                shadows[0] = jthis
          .clone()
          .removeAttr("id")
          .removeAttr("name")
          .removeAttr("shadowId")
          .css("color", opt.color);
            }
            shadows[0]
        .addClass("dropShadow")
        .css({
            height: jthis.outerHeight(),
            left: blur,
            opacity: opacity,
            position: "absolute",
            top: blur,
            width: jthis.outerWidth(),
            zIndex: zShadow
        });

            // Create other shadow layers
            var layers = (8 * blur) + 1;
            for (i = 1; i < layers; i++) {
                shadows[i] = shadows[0].clone();
            }

            // Position layers
            var i = 1;
            var j = blur;
            while (j > 0) {
                shadows[i].css({ left: j * 2, top: 0 });           //top
                shadows[i + 1].css({ left: j * 4, top: j * 2 });   //right
                shadows[i + 2].css({ left: j * 2, top: j * 4 });   //bottom
                shadows[i + 3].css({ left: 0, top: j * 2 });       //left
                shadows[i + 4].css({ left: j * 3, top: j });       //top-right
                shadows[i + 5].css({ left: j * 3, top: j * 3 });   //bottom-right
                shadows[i + 6].css({ left: j, top: j * 3 });       //bottom-left
                shadows[i + 7].css({ left: j, top: j });           //top-left
                i += 8;
                j--;
            }

            // Create container
            var divShadow = $("<div></div>")
        .attr("id", shadowId)
        .addClass("dropShadow")
        .css({
            left: jthis.position().left + opt.left - blur,
            marginTop: jthis.css("marginTop"),
            marginRight: jthis.css("marginRight"),
            marginBottom: jthis.css("marginBottom"),
            marginLeft: jthis.css("marginLeft"),
            position: "absolute",
            top: jthis.position().top + opt.top - blur,
            zIndex: zShadow
        });

            // Add layers to container  
            for (i = 0; i < layers; i++) {
                divShadow.append(shadows[i]);
            }

            // Add container to DOM
            jthis.after(divShadow);

            // Add shadow to return set
            jShadows = jShadows.add(divShadow);

            // Re-align shadow on window resize
            $(window).resize(function() {
                try {
                    divShadow.css({
                        left: jthis.position().left + opt.left - blur,
                        top: jthis.position().top + opt.top - blur
                    });
                }
                catch (e) { }
            });

            // Increment z-index counter
            dropShadowZindex += 2;

        });  //end each

        return this.pushStack(jShadows);
    };


    $.fn.redrawShadow = function() {
        // Remove existing shadows
        this.removeShadow();

        // Draw new shadows
        return this.each(function() {
            var shadowOptions = $.data(this, "shadowOptions");
            $(this).dropShadow(shadowOptions);
        });
    };


    $.fn.removeShadow = function() {
        return this.each(function() {
            var shadowId = $(this).shadowId();
            $("div#" + shadowId).remove();
        });
    };


    $.fn.shadowId = function() {
        return $.data(this[0], "shadowId");
    };


    $(function() {
        // Suppress printing of shadows
        var noPrint = "<style type='text/css' media='print'>";
        noPrint += ".dropShadow{visibility:hidden;}</style>";
        $("head").append(noPrint);
    });

})(jQuery);


