// Research Publications
var rpfilter = {'type_id' : '', 'user_id' : '', 'lab_id' : '', 'theme_id' : '', 'division_id' : ''};
function refresh_publications(key, val) {
	if(val == null||val == rpfilter[key]) val = '';
	if(key) rpfilter[key] = val;
	var url = 'http://www.douglas.qc.ca/research_publications?ajax=1&type_id=' + rpfilter['type_id'] + '&user_id=' + rpfilter['user_id'] + '&lab_id=' + rpfilter['lab_id'] + '&theme_id=' + rpfilter['theme_id'] + '&division_id=' + rpfilter['division_id'];
    $('.ck_pubsYear:checked').each(function(i, o) {
		url += '&years[]=' + $(o).attr('name');
    });
    $('#publications_div').load(url);
	return false;
}

// AEHit
$.widget('aeh', function(me) {
    var h = '#';
    var t = me.text().replace('mailto:', '').replace(/%7E/g,'~').replace(/%28/g,'(').replace(/%29/g,')').replace(/_dot_| dot |_\._|\(\.\)|\+\.\+|\+dot\+|%20dot%20/gi,'.').replace(/_at_|~at~|\(AT\)/gi, '@').replace(/%20/g,'');
    if(me.attr('href')) h = me.attr('href').replace(/%7E/g,'~').replace(/%28/g,'(').replace(/%29/g,')').replace(/_dot_| dot |_\._|\(\.\)|\+\.\+|\+dot\+|%20dot%20/gi,'.').replace(/_at_|~at~|\(AT\)/gi, '@').replace(/%20/g,'');
    else h = "mailto:" + t;
    me.attr('href', h);
    me.text(t);
});

// GATracked
$.widget('GATracked', function(me){
    if(me.is('a')) {
        me.click(function(){
            var pageTracker = _gat._getTracker("UA-827853-1");
            var url = me.attr('href').replace('http://'+window.location.host, '');
            pageTracker._trackPageview(url);
        });
    }
});

// VideoPopup
$.widget('VideoPopup', function(me){
    var layer = $('<div class="video_layer"></div>');
    me.find('a').before(layer);
    layer.click(function(){
        me.find('a').click();
    });
});

// VideoPlayer
$.widget('VideoPlayer',function(me){
    var layer = me.find('.video-options-layer');
    var trigger = me.find('.video-options-trigger');
    var caption = me.find('.video-options-caption');
    var ocaption = caption.text();
    var acaption = caption.attr('ActiveCaption');
    var update_options = function(){
        if(layer.is(':visible')){
            layer.css('display','none');
            caption.text(ocaption);
        } else {
            layer.css('display','block');
            caption.text(acaption);
        }
    };
    trigger.click(update_options);
    caption.click(update_options);
});

// UrlSelect
$.widget('UrlSelect',function(me){
    var target = (me.is('input')) ? me : me.find('input');
    me.click(function(){
        target.get(0).select();
        return false;
    });
});

// AZViewport
$.widget('AZViewport',function(me,widget){	
    var id = me.attr('id');
    var prev_control = me.find('.az-previous-control a');
    var next_control = me.find('.az-next-control a');
    var max = parseInt(me.attr('max'));
    var target = me.find(".az-viewport-inner");
    var pcaption = me.find('.az-previous-page');
    var ncaption = me.find('.az-next-page');
    var navigate = function(incr){
        if((incr<0&&widget.memory[id].page>1)||(incr>0&&widget.memory[id].page<max)){
            widget.memory[id].pos-=(incr*808);
            target.animate({
                'left':widget.memory[id].pos+'px'
                });
            if(incr<0&&widget.memory[id].page>0) widget.memory[id].page--;
            else if(incr>0&&widget.memory[id].page<=max) widget.memory[id].page++;
            pcaption.text((widget.memory[id].page>1)?(widget.memory[id].page-1):1);
            ncaption.text((widget.memory[id].page<max)?(widget.memory[id].page+1):max);
        }
        return false;
    };
    widget.memory[id] = {pos:0, page:1};
    prev_control.click(function(){return navigate(-1);});
    next_control.click(function(){return navigate(1);});
},{
    memory:{}
});

// TestimonyTrigger
$.widget('TestimonyTrigger',function(me){
    var target = $(me.attr('TriggerTarget'));
    var body = target.find('.testimony-body');
    var summary = target.find('.testimony-summary');
    var icon = me.find('img');
    var caption = me.find('span');
    var ac = me.attr('TriggerAltCaption');
    var oc = caption.text();
    me.click(function(){
        if(body.is(':visible')){
            body.slideUp();
            summary.slideDown();
            icon.attr('src',icon.attr('src').replace('less','more'));
            caption.text(oc);
        } else {
            body.slideDown();
            summary.slideUp();
            icon.attr('src',icon.attr('src').replace('more','less'));
            caption.text(ac);
        }
        return false;
    });
});

// FieldSync
$.widget('FieldSync',function(me){
    var target = $(me.attr('target'));
    me.keyup(function(){
        target.attr('value',me.val());
    });
    target.attr('value',me.val());
});

// EventSubAddRow
$.widget('EventSubAddRow',function(me){
    var target = $('.event-template');
    me.click(function(){
        var newRow = target.clone();
        target.after(newRow.removeClass('hidden').removeClass('event-template'));
        newRow.find('.EventSubRemoveRow').click(function(){
            $(this).parent().parent().remove();
            return false;
        });
        return false;
    });
	
});

// GoBackLink
$.widget('GoBackLink',function(me){
    me.click(function(){
        history.go(-1);
    });
});

// BoxExpander
$.widget('BoxExpander',function(me){	
    if(me.attr('BoxExpanderTarget')!="#"){
        var t = $(me.attr('BoxExpanderTarget'));
        var mh = parseInt(me.attr('BoxExpanderMaxHeight'));
        var i = $(me.find('img').get(0));
        var oh = t.outerHeight();
        if(oh>mh) {
            me.parent().css('display','block');
            t.css({
                'overflow':'hidden',
                'height':mh+'px'
                });
        }
        me.click(function(){
            var f = t.outerHeight()>mh;
            if(f==false) {
                t.stop().animate({height:oh+'px'});
                i.attr('src',i.attr('src').replace('more','less'));
            } else {
                t.stop().animate({height:mh+'px'});
                i.attr('src',i.attr('src').replace('less','more'));
            }
            return false;
        });
    }
});

// TableExpander
$.widget('TableExpander',function(me){	
    if(me.attr('TableExpanderTarget')!="#"){
        var t = $(me.attr('TableExpanderTarget'));
        var ac = me.attr('TableExpanderAltCaption');
        var w = me.attr('TBWait');
        var noswap = me.attr('TBNoSwap');
        var i = $(me.find('img').get(0));
        var c = $(me.find('span').get(0));
        var oc = c.text();
        me.click(function(){
            if(t.hasClass('hidden')){
                t.removeClass('hidden');
                if(!noswap) i.attr('src',i.attr('src').replace('more','less'));
                if(w) me.css('visibility','hidden');
                if(w) $(w).click(function(){
                    me.css('visibility','visible');
                });
                if(ac) c.text(ac);
            } else {
                t.addClass('hidden');
                if(!noswap) i.attr('src',i.attr('src').replace('less','more'));
                if(ac) c.text(oc);
            }
            return false;
        });
    }
});

// DocumentPreview
$.widget('DocumentPreview',function(me){
    var target = $(me.attr('DocumentPreviewID'));
    me.click(function(){
        if(target.is(':visible')) target.slideUp().removeClass('current-preview-box');
        else {
            $('.current-preview-box').css('display','none').removeClass('current-preview-box');
            target.slideDown().addClass('current-preview-box');
        }
        return false;
    });
});

// AlphabeticLoader
$.widget('AlphabeticLoader', function(me){
    me.find('.Letter').click(function(){	
        $.ajax({
            url: me.attr('ALPath'),
            type: 'POST',
            success: function(html){
                var wrapper = $('<div></div>');
                $(me.attr('ALTarget')).replaceWith(wrapper);
                wrapper.append($(html));
                me.raise("article-side-menu-outer","adjust");
            },
            data: {letter:$(this).html()}
        });	
        return false;
    });
});

// EmbeddedMap
$.widget('EmbeddedMap', function(me){
    if (GBrowserIsCompatible&&GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById(me.attr('id')));
        map.setCenter(new GLatLng(45.440793,-73.57946), 13);
        map.setUIToDefault();
        map.addOverlay(new GMarker(new GLatLng(45.440793,-73.57946)));
        var marker = new GMarker(new GLatLng(45.440793,-73.57946));
        map.addOverlay(marker);
        marker.openInfoWindowHtml('<div style="font-size: 8pt; white-space: nowrap"><b>Institut universitaire<br /> en santé mentale Douglas</b><br />6875, boulevard LaSalle<br />Arrondissement de Verdun<br />Montréal (Québec) H4H 1R3<br />Canada</div>');
    }
});

// CartQuantityUp
$.widget('CartQuantityUp', function(me){
    var target = $('#'+me.attr('CQTarget'));
    me.click(function(){
        target.text(""+(parseInt(target.text())+1));
    });
});

// CartQuantityDown
$.widget('CartQuantityDown', function(me){
    var target = $('#'+me.attr('CQTarget'));
    me.click(function(){
        var val = parseInt(target.text());
        if(val>0) target.text(""+(val-1));
    });
});

// ArchiveSelector
var now = new Date();
var archive_year = now.getYear();
$.widget('ArchiveSelector', function(me){
    me.find('.previous').mousedown(function(){
        me.find('.viewport-inner').animate({'left':'0px'});
    }).mouseup(function(){
        me.find('.viewport-inner').stop();
    });
    me.find('.next').mousedown(function(){
        me.find('.viewport-inner').animate({'left':'-110px'});
    }).mouseup(function(){
        me.find('.viewport-inner').stop();
    });
    me.find('.year').click(function(){
        archive_year = $(this).attr('year');
        me.find('.current').removeClass('current');
        $(this).addClass('current');
        $(this).after(me.find('.months'));
    });
    me.find('.viewport-inner').find('a').click(function(){
        me.find('.viewport-inner > a.current').removeClass('current');
        $(this).addClass('current');
        month = $(this).attr('month');
        $("#archive_news").load('/header/archive_part', {
            year: archive_year,
            month: month
        });
        return false;
    });
});

// FormValidator
$.widget('FormValidator',function(me){
    var rules = [];
    var form = me.parents('form');
    var addRule = function(rule_name, locale, validator){
        rules.push({name: rule_name, message: locale, validate: validator, fields: form.find('.'+rule_name)});
    };
    me.click(function(){
        // reset
        $('.err-msg').remove();
        $('.empty-field').removeClass('empty-field');
        for(var i=0;i<rules.length;i++) rules[i].fields.each(function(){$(this).data('error', '');});
        // new check
        var submit = true;
        var mToIns = '';
        for(var r=0;r<rules.length;r++){
            rules[r].fields.each(function(){
                var f = $(this);
                if(f.data('error')==''&&rules[r].validate(f.val())==false){
                    // data
                    f.data('error', rules[r].name);
                    if(submit) f.focus();
                    submit = false;
                    // message
                    var offset = f.offset();
                    var msg_err_id = f.attr('id')+rules[r].name;
                    mToIns += ('<div id="'+msg_err_id+'" class="err-msg" style="display:block;top:'+offset.top+'px;left:'+(offset.left+f.width()+8)+'px;">'+rules[r].message+'</div>');
                    // field
                    f.addClass('empty-field');
                    // recover
                    (function(f,r){
                        f.keyup(function(){
                            if(r.validate(f.val())==true){
                                $('#'+f.attr('id')+r.name).css('display', 'none');
                                f.removeClass('empty-field');
                            } else {
                                $('#'+f.attr('id')+r.name).css('display', 'block');
                                f.addClass('empty-field');
                            }
                        });
                    })(f, rules[r]);
                }
            });
        }
        $('body').append(mToIns);
        me.data('validation', submit);
        return submit;
    });
    // Rules
    addRule('MandatoryField', fv_locale_empty, function(val){
        return !(val=="");
    });
    addRule('EmailField', fv_locale_email, function(val){
        var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
        return filter.test(val);
    });
    addRule('ConfirmField', fv_locale_different, function(val){
        var check = true;
        $('.ConfirmField').each(function(){
            if($(this).val()!=val) check = false;
        });
        return check;
    });
});

// SubmitAndConfirm
$.widget('SubmitAndConfirm',function(me){
    var tickerValue = parseInt(me.attr('TickerValue'));
    me.click(function(){
        if(me.data('validation') != false) {
            me.parents('form').ajaxSubmit({
                dataType:'json',
                complete:function(o,t){
                    var match = o.responseText.match(/^captcha:(.*)/)
                    if (match) {
                        if (match.length > 1 ) {
                            alert(match[1]);
                        }
                        return;
                    }
                    $("#"+me.attr('ConfirmContentID')).css('display','block');
                    $("#"+me.attr('FormContentID')).css('display','none');
                    var i = 1;
                    var intrv = setInterval(function(){
                        if(i==tickerValue) {
                            clearInterval(intrv);
                            hs.close();
                        }
                        $("#"+me.attr('TickerID')).text((tickerValue-(i++)));
                    },1000);
                }
            });
    }
    });
});

// VoteBox
$.widget('VoteBox',function(me){
    var proxy = $('<input type="hidden" name="'+me.attr('id')+'" value="3" />');
    var ticks = me.find('li');
    me.before(proxy);
    ticks.each(function(){
        var tick = $(this);
        tick.mouseenter(function(){
            tick.nextAll().removeClass('on');
            tick.addClass('on').prevAll().addClass('on');
        }).click(function(){
            proxy.val(tick.prevAll().length+1);
        });
    });
    me.mouseleave(function(){
        var target = $(ticks[parseInt(proxy.val())-1]).addClass('on');
        target.prevAll().addClass('on');
        target.nextAll().removeClass('on');
    });
});

// StyleSelector
$.widget('StyleSelector',function(me){
    if(me.attr('id')==current_style) me.addClass('CurrentStyle').css('backgroundColor', '#ffffff');
    me.click(function(){
        $('.CurrentStyle').removeClass('CurrentStyle').css('backgroundColor', '#333333');
        me.addClass('CurrentStyle').css('backgroundColor', '#ffffff');
        current_style = me.attr('id');
    }).hover(function(){
        if(!me.hasClass('CurrentStyle')) me.css('backgroundColor', '#ffffff');
    }, function(){
        if(!me.hasClass('CurrentStyle')) me.css('backgroundColor', '#333333');
    });
	
});

// StyleReset
$.widget('StyleReset', function(me){
    me.click(function(){
        current_theme = '';
        current_style = 'style1';
        $($('.StyleSelector').get(0)).click();
        $('.theme-colored-part').css('backgroundColor','#0069AA');
        save_style();
    });
});

// StyleSave
$.widget('StyleSave', function(me){
    me.click(save_style);
});

// ThemeColorPicker
$.widget('ThemeColorPicker',function(me){
    me.find('.theme-color-box').each(function(){
        var t = $(this);
        if(t.attr('id')==current_theme) {
            t.addClass('CurrentTheme');
            $('.theme-colored-part').css('backgroundColor', t.css('backgroundColor'));
        }
        t.click(function(){
            $('.CurrentTheme').removeClass('CurrentTheme');
            $(this).addClass('CurrentTheme');
            current_theme = $(this).attr('id');
            $('.theme-colored-part').css('backgroundColor', $(this).css('backgroundColor'));
        });
    });
});

// Timeline
$.widget('Timeline',function(me){
    me.css('display','block').signal('update',function(){
        var rows = $('#content-column4 > .content-row');
        var rh = rows.outerHeight();
        me.height(rows.length*rh);
    }).raise("update");
});

// InfiniteScrolling
$.widget('InfiniteScrolling',function(me){
    var page = 0;
    $(window).scroll(function(){
        if ($(window).scrollTop() == $(document).height() - $(window).height()){
            page++;
            me.appendHTML(me.attr('AjaxProvider')+"?page="+page,function(){
                //$.widget('Timeline').raise('update');
            });
        }
    });
});

// AjaxSlidePanel
$.widget('AjaxSlidePanel',function(me){
    me.signal('preLoading', function(){
        if(ie_version!=6){
	        $('#dimming').css({
	            'display': 'block',
	            'width': $(window).width(),
	            'height': $(window).height()
	        });
	        $('#dimming-icon').css({
	            'display': 'block',
	            'left': (($(window).width()-200)/2)+'px',
	            'top': (($(window).height()-200)/2)+'px'
	        });
        }
    }).signal('postLoading', function(){
        if(ie_version!=6){
        	$('#dimming-icon').css('display', 'none');
        	$('#dimming').css('display', 'none');
        }
    }).signal('navigate',function(event, params){
        me.loadHTML(params.url, function(){
            if(ie_version!=6) me.raise('preLoading');
            me.slideDown({
                duration:500,
                easing:"linear",
                complete:function(){
                    me.raise("HeaderTabbedMenu","adjust");
                    if(params.callback) params.callback();
                    if(ie_version!=6){
                    me.raise('postLoading');
                    }
                }
            });
        });
    }).signal('close',function(event, params){
        me.slideUp(function(){
            me.empty().attr('url', '');
            me.raise("HeaderAjaxLink", "reset");
            params.callback();
        });
    });
});

// HeaderAjaxLink
$.widget('HeaderAjaxLink',function(me){
    me.signal('reset',function(){
        me.removeClass('active-header-ajax-link');
    }).click(function(){
        var turl = $(this).attr('href');
        var curl = $('.AjaxSlidePanel').attr('url');
        if(!turl) turl = me.attr('rel');
        me.raise('AjaxSlidePanel', 'preLoading');
        me.raise('AjaxSlidePanel','close',{
            callback:function(){
                if(!curl||turl.indexOf(curl)<0)
                    me.raise('AjaxSlidePanel','navigate',{
                        url:turl,
                        callback:function(){
                            me.addClass('active-header-ajax-link');
                            me.raise('ActiveButton', 'update');
                        }
                    });
                else me.raise('AjaxSlidePanel', 'postLoading');
            }
        });
        return false;
    });
});

// HeaderTabbedMenu
$.widget('HeaderTabbedMenu',function(me){
    var startAsset = $('.htp-menu-start').css('display','block');
    var endAsset = $('.htp-menu-end').css('display','block');
    $('.htp-menu-item > a').each(function(){
        var link = $(this);
        link.click(function(){
            var top = link.parent().position().top;
            startAsset.css('top',top+'px');
            endAsset.css('top',top+'px');
            me.find('.htp-menu-current-item').removeClass('htp-menu-current-item');
            link.parent().addClass('htp-menu-current-item');
            if(link.hasClass('HeaderAjaxLink')==false)
                me.raise("load", {trigger:link});
            return false;
        });
    });
    me.signal("adjust",function(){
        var menu = $('.htp-menu-inner');
        var content = $('.htp-content');
        var min = 251;
        var ch = content.height();
        if(ch<min) {
            content.height(min);
            ch = min;
        }
        menu.height(ch-40);
    }).signal("load", function(event, data){
        $('.htp-content').css('height','auto').loadHTML(data.trigger.attr('href'),function(){
            me.raise("adjust").raise("submenu");
        });
    }).signal("submenu",function(){
        $('.htp-submenu-item').click(function(){
            me.raise("load",{trigger:$(this)});
            return false;
        });
    });
    if(ie_version==6) DD_belatedPNG.fix('.htp-menu-end-img');
});

// Highslide Video
$.widget('HSVideo',function(me){
    me.click(function(){
        return hs.htmlExpand(this, {
            objectType: 'swf',
            width: 425,
            objectWidth: 425,
            objectHeight: 344,
            preserveContent: false,
            wrapperClassName: 'no-footer',
            allowSizeReduction: false,
            swfOptions: {
                params: {allowfullscreen: 'true'},
                maincontentText: 'You need to upgrade your Flash player'
            }
        });
    });
});

// EventSubTrigger
$.widget('EventSubTrigger',function(me){
    me.click(function(){
        var panel = $('.event-subscription');
        if(panel.is(':visible')) panel.slideUp();
        else panel.slideDown();
    });
});

// Button
$.widget('Button',function(me){
    me.css('cursor','pointer').click(function(){
        document.location = $(this).find('a').attr('href');
    });
});

// LinkButton
$.widget('LinkButton',function(me){
    me.css('cursor','pointer').click(function(){
        document.location = $(this).attr('href');
    });
});

// LabeledInput
$.widget('LabeledInput',function(me){
    var hColor = (me.attr('LabeledInputHover')) ? me.attr('LabeledInputHover') : me.css('color');
    var nColor = me.css('color');
    me.attr('LabeledInputTxt',me.attr('value'));
    me.focus(function(){
        $(this).css('color',hColor);
        if($(this).attr('value')==me.attr('LabeledInputTxt')) $(this).attr('value','');
    });
    me.blur(function(){
        if(!$(this).attr('value')) $(this).attr('value',me.attr('LabeledInputTxt')).css('color',nColor);
    });
});

// AjaxList
$.widget('AjaxList',function(me){		
    me.bind('change',function(){
        var selected = $("select option:selected");
        if(selected.attr('rel')) $('#'+me.attr('AjaxListTarget')).loadHTML(selected.attr('rel'),function(){
            me.raise("article-side-menu-outer","adjust");
        });
    });
});

// YTMinPlayer
$.widget('YTMinPlayer',function(me){	
    me.css('overflow','hidden').height(104);
    me.bind('mouseenter',function(){
        me.stop().animate({height:"131px"});
    });
    me.bind('mouseleave',function(){
        me.stop().animate({height:"104px"});
    });
});

// TriggerOn
$.widget('TriggerOn',function(me){ 
    me.click(function(){
        $($(this).attr('TriggerTarget')).slideDown();
        if(me.attr('TriggerActiveClass')) me.attr('class',me.attr('TriggerActiveClass'));
    });
});

// TriggerOff
$.widget('TriggerOff',function(me){
    me.click(function(){
        $($(this).attr('TriggerTarget')).slideUp();
    });
});

// PanelExpander
$.widget('PanelExpander',function(me){
    var t = $('#'+me.attr('PanelID'))
    me.click(function(){
        $('#'+id).css('display',(t.is(':visible'))?'none':'block');
        return false;
    });
});

// CatFilterToggle
$.widget('CatFilterToggle',function(me){	
    var t = $('#category-filter');
    me.click(function(){
        t.css('display',(t.is(':visible'))?'none':'block');
        return false;
    });
});

// AltCaptionOn
$.widget('AltCaptionOn',function(me){
    var target = $(me.attr('AltCaptionTarget'));
    me.click(function(){
        if(!target.attr('Caption')) target.attr('Caption',target.attr('value'));
        target.attr('value',target.attr('AltCaption'));
    });
});

// AltCaptionOff
$.widget('AltCaptionOff',function(me){
    var target = $(me.attr('AltCaptionTarget'));
    me.click(function(){
        target.attr('value',target.attr('Caption'));
    });
});

// StyledCheckbox
$.widget('StyledCheckbox',function(me){
    if(ie_version!=6){
        var isChecked = me.is(':checked');
        var control = (isChecked) ? $('<img src="'+me.attr('SROn')+'" />') : $('<img src="'+me.attr('SROff')+'" />');
        me.after(control).css('display', 'none');
        control.attr('class',me.attr('class')).removeClass('StyledCheckbox').addClass('SRControl').css('cursor','pointer');
        control.click(function(){
            isChecked = !isChecked;
            me.attr('checked', isChecked);
            $(this).attr('src', (isChecked) ? me.attr('SROn') : me.attr('SROff') );
            me.focus();
            me.change();
            me.blur();
        });
    }
});

// StyledCombobox
$.widget('StyledCombobox',function(me){
    if(ie_version!=6){
        var wrapper = $('<div class="styled-combobox-wrapper"></div>');
        var caption = $('<div class="styled-combobox-caption"></div>');
        var captionInner = $('<div class="styled-combobox-caption-inner"></div>');
        var control = $('<div class="styled-combobox-control"></div>');
        var list = $('<ul class="styled-combobox-list"></ul>');
        if (me.attr('id')) {
            var id = ' id="styled-combobox-list-' + me.attr('id') + '"';
            list = $('<ul class="styled-combobox-list"' + id + '></ul>');
        }
        var options = me.find('option');
        var timer = null;
        var captionWidth = (me.attr('SCWidth')) ? parseInt(me.attr('SCWidth')) : 125;
        me.after(wrapper).css('display', 'none');
        wrapper.append(caption).append(control).after(list).width(captionWidth+control.outerWidth()+"px");
        list.undock();	
        caption.append(captionInner).width(captionWidth+"px");
        captionInner.text($(options.get(0)).text());
        options.each(function(){
            var option = $(this);
            var row = $("<li value='"+option.attr('value')+"'>"+option.text()+"</li>");
            list.append(row);
            row.hover(function(){
                row.addClass('styled-combobox-hover');
            },function(){
                row.removeClass('styled-combobox-hover');
            }).click(function(){
                captionInner.text(option.text());
                list.css('display','none');
                if(row.attr('value')) me.val(row.attr('value'));
                else me.val('0');
                me.change();
                setTimeout(function(){
                    me.raise("article-side-menu-outer","adjust");
                }, 600);
            });
            if(option.is(':selected')) captionInner.text(option.text());
        });
        wrapper.click(function(){
            var offset = wrapper.offset();
            list.css({'display':'block', 'width':(wrapper.outerWidth()-4)+'px', 'top':(offset.top+wrapper.outerHeight()), 'left':(offset.left+2)});
        }).mouseleave(function(){
            timer = setTimeout(function(){list.css('display','none');},250);
        });	
        list.mouseenter(function(){
            clearTimeout(timer);
        }).mouseleave(function(){
            timer = setTimeout(function(){list.css('display','none');},250);
        });
    }
});

// StyledRadio
$.widget('StyledRadio', function(me){
    if(ie_version!=6){
        var wasChecked = me.is(':checked');
        var control = $("<img src='"+((wasChecked)?me.attr('SROn'):me.attr('SROff'))+"' class='SRControl' />");
        me.after(control).css('display', 'none');
        control.attr('TriggerTarget', me.attr('TriggerTarget'));
        control.attr('AltCaptionTarget', me.attr('AltCaptionTarget'));
        if(me.hasClass('TriggerOn')) control.addClass('TriggerOn');
        if(me.hasClass('TriggerOff')) control.addClass('TriggerOff');
        if(me.hasClass('AltCaptionOn')) control.addClass('AltCaptionOn');
        if(me.hasClass('AltCaptionOff')) control.addClass('AltCaptionOff');
        control.click(function(){
            $('input[name='+me.attr('name')+']').next().attr('src', me.attr('SROff'));
            control.attr('src', me.attr('SROn'));
            me.click();
        });
    }
});

// ToolTip
$.widget('ToolTip',function(me){	
    var offset = (me.attr('TTOffset')) ? parseInt(me.attr('TTOffset')) : 18;
    //me.attr('ToolTipText',me.attr('title')).attr('title','').find('img').attr('title','');
    if(me.attr('title')) me.attr('ToolTipText',me.attr('title')).attr('title','').find('img').attr('title','');
    me.hover(function(e){
        $('#tooltip').html("<span>"+$(this).attr('ToolTipText')+"</span>");
        $('#tooltip').css("top",(e.pageY + (offset)) + "px").css("left",(e.pageX + offset) + "px").css('display','block');
    },function(){
        $('#tooltip').css('display','none');
    });
    me.mousemove(function(e){
        $("#tooltip").css("top",(e.pageY + (offset)) + "px").css("left",(e.pageX + offset) + "px");
    });
});

// ArticleSideMenuAdjuster
function adjust_side_column()
{
            var me = $('.article-side-menu-outer');
            var side_menu_h = $('.article-side-menu').outerHeight();
            var content_h = $('.article-content').outerHeight();
            var min_height = ($('#menu-item-box-last').position().top+$('#menu-item-box-last').outerHeight());
            var me_height = me.outerHeight();
            if(content_h<min_height) {
                me.height(min_height+"px");
            } else if(me_height!=content_h) me.height(content_h+"px");
}

$.widget('article-side-menu-outer',function(me) {
    var genuine_h = me.outerHeight();
    var min_h = ($('#menu-item-box-last').position().top+$('#menu-item-box-last').outerHeight());
    me.signal("adjust",function(){
        setTimeout(function() {
            var side_h = me.outerHeight();
            var content_h = $('.article-content').outerHeight();
            if(content_h<min_h&&side_h<min_h) me.height(min_h+'px');
            else if(content_h>side_h) me.height(content_h+'px');
            else if(side_h>content_h&&content_h>genuine_h)  me.height(content_h+'px');
            else me.height('auto');
        }, 500);
    }).raise("adjust");
});

// HorizontalMenu
$.widget('HorizontalMenu',function(me){	
    me.find('a').each(function(){
        var timer = false;
        var panel = $('#'+$(this).attr('HorizontalMenuPID')).undock();
        $(this).bind('mouseenter',function(){
            clearTimeout(timer);
            var nleft = $(this).offset().left-Math.floor(panel.outerWidth()/2)+Math.floor($(this).outerWidth()/2)+"px";
            var ntop = $(this).offset().top-panel.outerHeight()-2+"px";
            $('.HorizontalMenuPanel').css('display','none');
            panel.css('top',ntop).css('left',nleft).css('display','block');
            panel.find('.horizontal-menu-panel-bottom').width(panel.find('.horizontal-menu-panel-inner').outerWidth());
        });
        $(this).bind('mouseleave',function(){
            timer = setTimeout(function(){
                panel.css('display','none');
            },250);
        });
        panel.bind('mouseenter',function(){
            clearTimeout(timer);
        });
        panel.bind('mouseleave',function(){
            panel.css('display','none');
        });
    });
});

// VerticalMenu
$.widget('VerticalMenu',function(me){	
    var panels = $('.VerticalMenuPanel').undock();
    var timer = false;
    var reset =	function(){
        $('.vertical-menu-hover').removeClass('vertical-menu-hover');
        panels.css('display','none');
    };
    me.find('div').bind('mouseenter',function(){
        var panel = $('#'+$(this).attr('VerticalMenuPID'));
        clearTimeout(timer);
        reset();
        $(this).addClass('vertical-menu-hover');
        var nleft = $(this).offset().left+$(this).outerWidth()+2+"px";
        var ntop = $(this).offset().top+"px";
        panel.css('top',ntop).css('left',nleft).css('display','block');
    }).bind('mouseleave',function(){
        timer = setTimeout(function(){
            reset();
        },250);
    });
    panels.bind('mouseenter',function(){
        clearTimeout(timer);
    }).bind('mouseleave',function(){
        reset();
    });
});

// AjaxTwoColumnsMenu
$.widget('AjaxTwoColumnsMenu',function(me){	
    me.find('a').each(function(){
        $(this).click(function(){
            $(this).attr('AjaxTwoColumnsMenuInactive',$(this).css('color'));
            var oParent = me.find('span').parent();
            me.find('span').remove();
            $(this).before($('<span>&gt;&nbsp;</span>'));
            var hColor = "#fff";
            if(hColor!="") {
                $(this).parent().find('*').css('color',hColor);
                oParent.find('*').css('color', $(this).attr('AjaxTwoColumnsMenuInactive'));
            }
            $(me.attr('rel')).loadHTML($(this).attr('href'));
            return false;
        });
    });
});

// Faq
$.widget('Faq',function(me){
    var api = me.tabs("div.faq-answer", {
        tabs: 'h3',
        effect: 'slide',
        api:true
    });
    me.raise("article-side-menu-outer","adjust");
});

// AjaxTrigger
$.widget('AjaxTrigger',function(me){
    me.click(function(){
        var target = $("#"+$(this).attr('AjaxTriggerTarget'))
        target.loadHTML($(this).attr('href'),function(){});
        target.attr('AjaxUrl',$(this).attr('href'));
        return false;
    });
});

// FontSizer
$.widget('FontSizer',function(me){
    var adjustSize = function(target,adj){
        target.each(function(){
            var t = $(this);
            var of = (t.attr('InitialFontSize')) ? t.attr('InitialFontSize') : t.attr('InitialFontSize',t.css('fontSize')).attr('InitialFontSize');
            t.css('fontSize',(adj>0)?parseFloat(of)+adj+(((of.indexOf('pt')>0))?'pt':'px'):of);
        });
        me.raise("article-side-menu-outer","adjust");
    };

    var adjustText = function(currentFontRatio) {
        adjustSize($('.box-title2'),currentFontRatio);
        adjustSize($('.expanded-menu-items li a'),currentFontRatio);
        adjustSize($('.box-inner2 > *'),currentFontRatio);
        adjustSize($('.article-content-inner > *'),currentFontRatio);
        adjustSize($('h1'),currentFontRatio);
        adjustSize($('h2'),currentFontRatio);
        adjustSize($('h3'),currentFontRatio);
        adjustSize($('h4'),currentFontRatio);
        adjustSize($('h5'),currentFontRatio);
    };

    var options_ajax = {
        url: "/sessions/font_sizer",
        dataType:  'json',
        success: function(json) {
            adjustText(json.font_size);
        }
    };

    if ($(".FontSizer")) {
        $.ajax({
            url: "/sessions/font_sizer?info=true",
            dataType:  'json',
            success: function(json) {
                adjustText(json.font_size);
            }
        });
    }

    me.click(function(){
        $.ajax(options_ajax);
/*
        currentFontRatio = (currentFontRatio<3) ? currentFontRatio+1 : 0;
        adjustSize($('.box-title2'),currentFontRatio);
        adjustSize($('.expanded-menu-items li a'),currentFontRatio);
        adjustSize($('.box-inner2 > *'),currentFontRatio);
        adjustSize($('.article-content-inner > *'),currentFontRatio);
        adjustSize($('h1'),currentFontRatio);
        adjustSize($('h2'),currentFontRatio);
        adjustSize($('h3'),currentFontRatio);
        adjustSize($('h4'),currentFontRatio);
        adjustSize($('h5'),currentFontRatio);
*/
        return false;
    });
});

// QuickSearchBox
$.widget('QuickSearchBox', function(me){
    var input = $('#quick-search-input');
    var eh = me.outerHeight();
    var ew = me.outerWidth();
    var queryUrl = '/search/div';
    var queryTimer;
    var queryQueueID = 0;
    input.keyup(function(event){
        if((event.which>=48&&event.which<=90)||event.which==8) {
            clearTimeout(queryTimer);
            if(queryQueueID>0) queryQueueID--;
            var queryKeywords = input.val();
            if(queryKeywords&&queryKeywords.length>0) {
                queryTimer = setTimeout(function(){
                    queryQueueID++;
                    $.ajax({
                        url: queryUrl,
                        type: 'GET',
                        success: function(queryResult){
                            queryQueueID--;
                            if(queryQueueID<1) {
                                var ep = me.offset();
                                $('#quick-search-results').replaceWith($(queryResult));
                                var target = $('#quick-search-results');
                                target
                                .undock()
                                .css({
                                    'top': (ep.top<100) ? ep.top+eh+6+'px' : ep.top-target.height()-6+'px',
                                    'left': ep.left-(target.width()-ew)+'px',
                                    'display': 'block'
                                })
                                .bind('mouseleave',function(){
                                    me.blur();
                                    $(this).css('display','none');
                                });
                                target.find('.quick-search-results-row1').hover(function(){
                                    $(this).addClass('quick-search-results-hover');
                                },function(){
                                    $(this).removeClass('quick-search-results-hover');
                                });
                                target.find('.quick-search-results-row2').hover(function(){
                                    $(this).addClass('quick-search-results-hover');
                                },function(){
                                    $(this).removeClass('quick-search-results-hover');
                                });
                                target.find('.quick-search-results-more').hover(function(){
                                    $(this).addClass('quick-search-results-more-hover');
                                },function(){
                                    $(this).removeClass('quick-search-results-more-hover');
                                });
                            }
                        },
                        data: {
                            keyword:queryKeywords
                        }
                    });
                }, 350);
            } else $('#quick-search-results').css('display','none');
        }
    });
});

// Mosaic
$.widget('Mosaic',function(me){
    var cols = parseInt(me.attr('MosaicCols')); // 8
    var cellPadding = parseInt(me.attr('MosaicCellPadding'));//8
    var cellSize = parseInt(me.attr('MosaicCellSize')); // 46
    var areaRowspan = parseInt(me.attr('MosaicRowspan'));
    var areaColspan = parseInt(me.attr('MosaicColspan'));
    var cells = me.find('.mosaic-cell');
    var areas = me.find('.mosaic-area');
    var rows = Math.ceil(cells.length/cols);
    var off = me.offset();
    me.css({'overflow':'visible', 'position':'relative', 'height':(rows*cellSize+((rows-1)*cellPadding))+'px'});
    areas.undock();
    for(var i=0;i<cells.length;i++) {
        var cell = $(cells[i]);
        var row = Math.floor(i/cols);
        var col = (i%cols);
        cell.removeClass('mosaic-cell').attr('row',row).attr('col',col).css({
            'position':'absolute',
            'left':(col*cellSize)+(col*cellPadding)+'px',
            'top':(row*cellSize)+(row*cellPadding)+'px'
        }).bind('mouseenter',function(){
            var nrow = parseInt($(this).attr('row'));
            var ncol = parseInt($(this).attr('col'));
            var ard = (rows-areaRowspan);
            var acd = (cols-areaColspan);
            var cmode = true;
            if(nrow<ard) nrow++;
            else if(nrow>=areaRowspan) nrow -= areaRowspan;
            else {
                nrow = 1;
                cmode = false;
            }
            if(cmode==true){
                if(ncol>=(areaColspan-1)) ncol -= (areaColspan-1);
                else if(ncol>acd) ncol = 1;
            } else {
                if(ncol>=(cols/2)) ncol -= areaColspan;
                else ncol++;
            }
            area = $('#'+$(this).attr('MosaicAreaID')).css({
                'display':'block',
                'left':(ncol*cellSize)+(ncol*cellPadding)+off.left+'px',
                'top':(nrow*cellSize)+(nrow*cellPadding)+off.top+'px'
            });
        });
        cell.bind('mouseleave',function(){
            area.css('display','none');
        });
    }
});

// Carousel
$.widget('Carousel',function(me){
    var delay = (me.attr('CarouselDelay')) ? me.attr('CarouselDelay') : 10000;
    me.find('.slide-overlay').css('opacity','0').css('cursor','pointer').click(function(){
        document.location = $(this).parent().find('a').attr('href');
    });
    me.find('.slide-title-inner > a').each(function(){
        $(this).replaceWith($('<span>'+$(this).text()+'</span>'));
    });
    $.tools.addTabEffect("slide", function(i) {
        var nextPane = this.getPanes().eq(i);
        var currPane = this.getCurrentPane();
        currPane.slideUp("fast");
        currPane.find('.slide-overlay').css('opacity','0');
        nextPane.slideDown(function() {
            nextPane.find('.slide-overlay').stop().animate({
                opacity:0.7
            },200);
        });
    });
    var api = me.tabs("div.slide-content", {
        tabs: 'h3',
        effect: 'slide',
        api:true
    });
    setInterval(function(){
        if(api.getIndex()<2) api.next(); else api.click(0);
    }, delay);
});

// ProfileBar
$.widget('ProfileBar',function(me,global){
    if(ie_version==6) me.parent().remove();
    else {
    var cA = -1; // current active area
    var surface = me.find(".profile-bar-overlay");
    global.areas = me.find('.profile-bar-area');	// bar areas
    var box = $('.profile-bar-box'); // box control
    var resetBar = $('.profile-bar-reset');
    var bW = 182; // box width
    var timer = false;
    var resolveArea = function(x){
        var acc = 0;
        for(var i=0;i<global.areas.length;i++) {
            acc += $(global.areas[i]).width();
            if(x<acc) return i;
        }
        return -1;
    };
    var reset = function(){
        clearTimeout(timer);
        for(var i=0;i<global.areas.length;i++) $(global.areas[i]).stop().animate( {
            "width":global.data[i].width+"px"
            } );
        cA = -1;
        resetBar.css('display','none');
        box.css('display','none');
        box.find('.profile-bar-area-content').css('display','none');
    };
    var adaptBoxTo = function(area){
        box.width(area.width());
        box.find('.profile-bar-area-title').text(area.attr('PACaption')).css('backgroundColor',area.css('backgroundColor'));
        box.css('left',area.offset().left).css('display','block').css('top',area.offset().top-$('.profile-bar-area-title').outerHeight()+"px");
        box.find('.profile-bar-area-content').html(area.next().html()).slideDown(300);
    };
    var resize = function(area,newSize,callback){
        area.stop().animate({
            "width":newSize+"px"
            },callback);
    };
    var stretch = function(e){
        clearTimeout(timer);
        cA = resolveArea((e.pageX-me.offset().left));
        if(cA<0) resetBar.css('display','block');
        else {
            resetBar.css('display','none');
            var area = $(global.areas[cA]);
            var wD = (global.data[cA].width-bW);
            if(wD<0){
                var adjs = [];
                var oW = (global.tW-global.data[cA].width);
                var newTw = bW;
                for(var i=0;i<global.areas.length;i++) {
                    if(i==cA) adjs.push(bW);
                    else {
                        var nW = global.data[i].width+Math.floor(wD/100*Math.floor(global.data[i].width/oW*100));
                        adjs.push(nW);
                        newTw+=nW;
                    }
                }
                var tWd = (global.tW-newTw);
                if(tWd!=0) adjs[0]+=tWd;
                for(var j=0;j<global.areas.length;j++)
                    resize($(global.areas[j]),adjs[j],(j==cA)?function(){
                        timer = setTimeout(function(){
                            adaptBoxTo(area);
                        },200);
                    }:function(){});
            } else if(area.width()!=global.data[cA].width) {
                for(var k=0;k<global.areas.length;k++)
                    resize($(global.areas[k]), global.data[k].width, (k==cA)?function(){
                        timer = setTimeout(function(){
                            adaptBoxTo(area);
                        }, 200);
                    }:function(){});
            } else adaptBoxTo(area);
        }
    };
    global.compile();
    box.undock();
    surface.bind('mouseenter',stretch);
    surface.bind('mousemove',function(e){
        if(box.is(':visible')) {
            box.css('display','none');
            box.find('.profile-bar-area-content').css('display','none');
            stretch(e);
        }
    });
    box.bind('mouseleave',function(e){
        reset();
    });
    surface.bind('mouseleave',function(e){
        if($(e.relatedTarget).attr('class')!=box.attr('class')) {
            reset();
        }
    });
        }
	surface.click(function(){
		if(cA<0) window.location = resetBar.attr('reset');
	});	
	
},{
    tW:0,
    data: [],
    compile : function(){
        var global = this;
        global.data = [];
        global.tW = 0;
        global.areas.each(function(){
            var aW = $(this).width();
            global.data.push({
                width:aW
            });
            global.tW += aW;
        });
    }
});

// RoundBox
var ddri = 0;
$.widget('RoundBox', function(me){
    var radius = me.attr('RoundBoxRadius');
    if(ie_version!=false){
        //me.addClass('ddri'+ddri);
	//DD_roundies.addRule('.ddri'+ddri, radius+'px', true);
        //ddri++;
    } else {
        me.css({
            '-moz-border-radius': radius+'px',
            '-webkit-border-radius':  radius+'px',
            'border-radius': radius+'px',
            '-khtml-border-radius': radius+'px'
        });
    }
    if(me.attr('RoundBoxHover')) {
        if(ie_version!=false){
            me.hover(function(){
                me.find('a').parent().addClass('round_box_hover');
            }, function(){
                me.find('a').parent().removeClass('round_box_hover');
            });
        } else {
            me.hover(function(){
                me.addClass('round_box_hover');
            }, function(){
                me.removeClass('round_box_hover');
            });
        }
    }
});

// ExtendedFooter
$.widget('ExtendedFooter', function(me){
    var copyrights = $('#copyrights');
    me.signal('adjust', function(){
        var top = me.offset().top;
        var bot = copyrights.offset().top;
        me.height(bot-top+copyrights.height());
        setTimeout(function(){
            me.raise('adjust');
        }, 500);
    });
});

// PageEffects
$.widget('PageEffects', function(me){
    $.tools.addTabEffect("transition", function(i) {
        this.getCurrentTab().parent().parent().removeClass('sitemap-current-tab');
        this.getTabs().eq(i).parent().parent().addClass('sitemap-current-tab');
        this.getCurrentPane().css('display','none');
        this.getPanes().eq(i).css('display','block');
        me.raise('ExtendedFooter', 'adjust');
        me.raise('ActiveButton', 'update');
    });
    $("#sitemap-tabs").tabs("#sitemap-panels > div.sitemap-panel",{
        effect: 'transition'
    });
});

// PageTransition
$.widget('PageTransition', function(me){
    me.click(function(){
        var url = me.attr('href');
        var header = $('#header');
        window.scroll(0,0);

        if(ie_version!=6){
            $('#dimming').css({
                'display': 'block',
                'width': $(window).width(),
                'height': $(window).height()
            });
            $('#dimming-icon').css({
                'display': 'block',
                'left': (($(window).width()-200)/2)+'px',
                'top': (($(window).height()-200)/2)+'px'
            });
        }

        $('#page1').stop().animate({
            height:($(window).height()-header.outerHeight())
        },function(){
            $('#page2').slideUp(function(){
                    $('#page1').css('height','auto').css('paddingBottom',header.outerHeight()+'px');
                    $('#header').css('position','fixed').css('bottom','0');
                    $('#header-navbar').after($('#header-slide-panel'));
                    $('#page1').loadHTML(url, function(){
                        if(ie_version!=6){
                            $('#dimming-icon').css('display', 'none');
                            $('#dimming').css('display', 'none');
                        }
                    });
            });
        });

        return false;
    });
});

// ListToggle
$.widget('ListToggle',function(me){	
    var target = $('#'+me.attr('ListToggleTarget'));
    me.find('a').each(function(){
        $(this).attr('LTNormal',$(this).text()).click(function(){
            if(target.is(':visible')){
                me.find('a').each(function(){
                    $(this).text($(this).attr('LTNormal'));
                });
                target.slideUp();
            } else {
                me.find('a').each(function(){
                    $(this).text($(this).attr('LTActive'));
                });
                target.slideDown();
            }
            return false;
        });
    });
});

// ActiveImage
$.widget('ActiveImage',function(me,global){	
    var ActiveImageID = 'img'+global.index;
    me.attr('ActiveImageID',ActiveImageID);
    global.memory[ActiveImageID] = $('<img src="'+me.attr('src')+'" />');
    me.hover(function(){
        $(this).attr('src',$(this).attr('ActiveImageHover'));
    },function(){
        $(this).attr('src',global.memory[$(this).attr('ActiveImageID')].attr('src'));
    });
    global.index++;
},{
    index:0,
    memory:{}
});

// IconButton
$.widget('IconButton',function(me){
    me.hover(function(){
        me.addClass(me.attr('IBHoverClass'));
    },function(){
        me.removeClass(me.attr('IBHoverClass'));
    });
});

// HoverButton
$.widget('HoverButton',function(me){
    me.attr('HBInactiveColor',me.css('backgroundColor')).css('cursor','pointer');
    me.bind('mouseenter',function(){
        if(me.attr('HBHoverImage')&&me.attr('HBActive')!="true") me.css('backgroundPosition','0px -'+me.outerHeight()+'px');
        if(me.attr('HBActiveColor')&&me.attr('HBActive')!="true") me.stop().animate({
            'backgroundColor':me.attr('HBActiveColor')
            });
    });
    me.bind('mouseleave',function(){
        if(me.attr('HBHoverImage')&&me.attr('HBActive')!="true") me.css('backgroundPosition','0px 0px');
        if(me.attr('HBActiveColor')&&me.attr('HBActive')!="true") me.stop().animate({
            'backgroundColor':me.attr('HBInactiveColor')
            });
    });
    me.click(function(){
        if(me.attr('HBLink')!="false") window.location = me.find('a').attr('href');
        else {
            if(me.hasClass('ActiveButton')&&me.attr('HBActive')!='true') me.css('backgroundPosition','0px -'+(me.outerHeight()*2)+'px').attr('HBActive','true');
            else me.attr('HBActive','false');
            return false;
        }
    });
});

// ActiveButton
$.widget('ActiveButton', function(me,global) {
    var setHover = function(mode) {
        if (global.isActive(me) == false) {
            if(mode==true) {
                var hColor = (me.attr('ABHoverColor')) ? me.attr('ABHoverColor') : me.attr('ABNormalColor');
                me.css('backgroundPosition','0px -'+me.outerHeight()+'px');
                me.find('a').css('color',hColor);
            } else {
                me.css('backgroundPosition','0px 0px');
                me.find('a').css('color',me.attr('ABNormalColor'));
            }
        }
    };
    me.bind('mouseenter',function(){
        setHover(true);
    });
    me.bind('mouseleave',function(){
        setHover(false);
    });
    me.attr('ABNormalColor',me.find('a').css('color'));
    me.find('a').click(function(){
        global.setActive(me);
        return false;
    });
    me.click(function(){
        var link = me.find('a');
        if(link.is('a')) link.click();
        else global.setActive($(this));
    });
    if (me.attr('ActiveButton') == "true") {
        global.setActive(me);
    }
},{
    setActive :	function(me){
        var global = this;
        if(global.isActive(me)==true) {
            me.css('backgroundPosition','0px -'+me.outerHeight()+'px').attr('ActiveButtonState',"false");
        } else {
            var cname = me.attr('class').replace('ActiveButton','').replace(/(?:^\s+|\s+$)/g, "");
            if(cname!=""){
                me.parent().find('.'+me.attr('class').replace('ActiveButton','')).each(function(){
                    $(this).css('backgroundPosition','0px 0px').attr('ActiveButtonState',"false");
                    $(this).find('a').css('color',me.attr('ABNormalColor'));
                });
            }
            me.find('a').css('color',me.attr('ABHoverColor'));
            me.attr('ActiveButtonState',"true");
            if(me.is(':visible')){
                me.css('backgroundPosition','0px -'+(me.outerHeight()*2)+'px');
            } else {
                me.signal('update', function(){
                    if(global.isActive(me)==true) me.css('backgroundPosition','0px -'+(me.outerHeight()*2)+'px');
                });
            }
        }
    },
    isActive : function(me){
        return (me.attr('ActiveButtonState')=="true");
    }
});

