/**
 * @author Bartek G
 */
getPath = function() {
    if(document.URL.lastIndexOf('www/')>-1)
    var url = document.URL.substr(0,document.URL.lastIndexOf('www')) + 'www/';
    else if (document.URL.lastIndexOf('.co.uk')>-1)
    	var url = document.URL.substr(0,document.URL.lastIndexOf('o.uk')+4) + '/';
    else if (document.URL.lastIndexOf('.com.au')>-1)
        var url = document.URL.substr(0,document.URL.lastIndexOf('om.au')+5) + '/';
    else if (document.URL.lastIndexOf('.com')>-1)
        var url = document.URL.substr(0,document.URL.lastIndexOf('.com')+4) + '/';
    return url;
};
cleanOnClick = function(id,string,pass) {
    if(id) {
        if(pass==1) {
            var el = new Element('div', {'class': 'passwordDummy'});
            el.set('html',string).inject(id,'after');
            el.setStyles({
                'top': id.getPosition($('loginWrapper')).y + 2 + 'px',
                'left': id.getPosition($('loginWrapper')).x + 1 + 'px',
                'width': id.getSize().x - 6 + 'px',
                'height': id.getSize().y - 7 + 'px'
            });
            el.addEvent('fire', function() {
                el.setStyle('display', 'none');
                if(id.get('value') == string) id.set('value','');
            });
            el.addEvent('click', function() {
                el.fireEvent('fire');
                id.fireEvent('focus');
                id.focus();
            });
            id.addEvent('focus',function(){
                el.fireEvent('fire');
            });
            id.addEvent('blur',function(){
                if (id.get('value') == '') {
                    $$('.bof').each(function(el){el.dispose();});
                    el.setStyle('display', 'block');
                }
            });
        } 
        else {
            id.addClass('cleanMe');
            id.addEvent('click',function(){
                if (id.hasClass('cleanMe') && id.get('value') == string) {
                    id.set('value', '');
                    id.removeClass('cleanMe');
                }
            });
            id.addEvent('focus',function(){
                if (id.hasClass('cleanMe') && id.get('value') == string) {
                    id.set('value', '');
                }
            });
            id.addEvent('blur',function(){
                if (id.get('value') == '') {
                    id.set('value', string);
                }
            });
        }
    }
};
roundCorn = function(id, pre, ext, w, h, alt,nodiv) {
    if(nodiv && Browser.Engine.presto) {
        var el = new Element('div',{'class':'formwrapper'});
        el.wraps(id);
        id = el;
    }
    $$('roundCorn'+id.uid).each(function(el){
        el.dispose();
    });
    var width = id.getSize().x;
    var height = id.getSize().y;
    w = parseInt(w);
    h = parseInt(h);
    var leftTop = new Element('div', {'class': 'roundCorn'}).inject(id);
    var top = new Element('div', {'class': 'roundCorn'}).inject(id);
    var rightTop = new Element('div', {'class': 'roundCorn'}).inject(id);
    var right = new Element('div', {'class': 'roundCorn'}).inject(id);
    var rightBottom = new Element('div', {'class': 'roundCorn'}).inject(id);
    var bottom = new Element('div', {'class': 'roundCorn'}).inject(id);
    var leftBottom = new Element('div', {'class': 'roundCorn'}).inject(id);
    var left = new Element('div', {'class': 'roundCorn'}).inject(id);
    if(alt) {
        var leftIns = new Element('div', {'class': 'roundCorn'}).inject(left);
        var rightIns = new Element('div', {'class': 'roundCorn'}).inject(right);
    }
    id.setStyle('position', 'relative');
    if(Browser.Engine.gecko) id.setStyle('-moz-border-radius', '0');
    if(Browser.Engine.webkit) id.setStyle('-webkit-border-radius', '0');
    $$('.roundCorn').each(function(el,i){
        el.setStyles({
            'position': 'absolute',
            'width': w + 'px',
            'height': h + 'px',
            'left': '0',
            'top': '0',
            'margin': '0',
            'padding': '0',
            'overflow': 'hidden',
            'text-align': 'left'
        });
        el.removeClass('roundCorn');
        el.addClass('roundCorn'+id.uid);
    });
    leftTop.setStyles({
        'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-lt.' + ext + ')'
    });
    top.setStyles({
        'left': w + 'px',
        'width': width - (2 * w) + 'px',
        'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-t.' + ext + ')'
    });
    rightTop.setStyles({
        'left': width - w + 'px',
        'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-rt.' + ext + ')'
    });
    right.setStyles({
        'left': width - w + 'px',
        'top': h + 'px',
        'height': height - (2 * h) + 'px',
        'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-r.' + ext + ')'
    });
    rightBottom.setStyles({
        'left': width - w + 'px',
        'top': height - h + 'px',
        'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-rb.' + ext + ')'
    });
    bottom.setStyles({
        'left': w + 'px',
        'width': width - (2 * w) + 'px',
        'top': height - h + 'px',
        'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-b.' + ext + ')'
    });
    leftBottom.setStyles({
        'top': height - h + 'px',
        'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-lb.' + ext + ')'
    });
    left.setStyles({
        'top': h + 'px',
        'height': height - (2 * h) + 'px',
        'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-l.' + ext + ')'
    });
    if(alt) {
        leftIns.setStyles({
            'position': 'static',
            'margin-left': 0 + 'px',
            'height': height - (2 * h),
            'width': alt,
            'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-lalt.' + ext + ') 0 0 no-repeat'
        });
        rightIns.setStyles({
            'position': 'static',
            'height': height - (2 * h),
            'width': alt,
            'margin-left': w - alt + 'px',
            'background': 'transparent url(' + getPath() + 'static/img/' + pre + '-ralt.' + ext + ') 0 0 no-repeat'
        });
    }
};

cssFix = function(last, only, even, odd, focus) {
    if (last) $$('*:last-child').each(function(e){e.addClass('last');});
    if (only) $$('*:only-child').each(function(e){e.addClass('only');});
    if (even) $$('*:even').each(function(e){e.addClass('even');});
    if (odd) $$('*:odd').each(function(e){e.addClass('odd');});
    if (focus) {
        $$('input').each(function(e){
            e.addEvent('focus', function(){e.addClass('focus')});
            e.addEvent('blur', function(){e.removeClass('focus')});
        });
    }
};
addInputClasses = function() {
    /* $$('*:first-child').each(function(e){e.addClass('first');});
    $$('input[type="submit"]').each(function(el){
        el.addClass('submit');
        el.addEvent('mouseover', function(){
            // el.addClass('hover');
        });
        el.addEvent('mouseleave', function(){
            // el.removeClass('hover');
        });
    });
    $$('input[type="checkbox"]').each(function(el){el.addClass('checkbox');});
    $$('input[type="radio"]').each(function(el){el.addClass('radio');}); */
}
browser = function() {
    var x = $('header').getParent();
    var y = Browser.Engine.version;
    var z = Browser.Engine;
    if(z.trident) {
        x.addClass('ie');
        if (y == 4) {
            x.addClass('ie6');
            addInputClasses();
        }
        else 
            if (y >= 5) {
                if (navigator.userAgent.toLowerCase().indexOf('msie 8.0') > -1) 
                    x.addClass('ie8')
                else 
                    x.addClass('ie7');
            }
    }
    else if (z.gecko) {
        x.addClass('firefox');
        if(y==18)
            x.addClass('firefox2');
        else if(y>=19)
            x.addClass('firefox3');
        else
            x.addClass('firefox1');
    }
    else if (z.webkit) {
        if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) x.addClass('chrome');
        else x.addClass('safari');
        x.addClass('webkit' + y);
    }
    else if (Browser.Engine.presto) {
        x.addClass('opera');
        x.addClass('opera' + Browser.Engine.version);
    }
    else {
        x.addClass('unknown');
        x.addClass(z.name);
        x.addClass(z.name + y);
    }
};

go = function(el) {
    $$('.bof').each(function(el){el.dispose();});
    if(el) {
        var top = el.getPosition().y;
        var left = el.getPosition().x;
        if(document.body.hasClass('ie8')) {
            var top = el.getPosition().y - 2;
            var left = el.getPosition().x - 2;
        }
        var height = el.getSize().y;
        var width = el.getSize().x;
        var borderLeft = new Element('div', {'class': 'bof'});
        borderLeft.setStyles({'width': '2px','height': height,'left': left - 2,'top': top}).inject(document.body).setOpacity(0.9);;
        var borderTop = new Element('div', {'class': 'bof'});
        borderTop.setStyles({'width': width,'height': '2px','left': left,'top': top - 2}).inject(document.body).setOpacity(0.9);;
        var borderRight = new Element('div', {'class': 'bof'});
        borderRight.setStyles({'width': '2px','height': height,'left': left + width,'top': top}).inject(document.body).setOpacity(0.9);;
        var borderBottom = new Element('div', {'class': 'bof'});
        borderBottom.setStyles({'width': width,'height': '2px','left': left,'top': top + height}).inject(document.body).setOpacity(0.9);;
        borderLTLT = new Element('div', {'class': 'bof'});
        borderLTLT.setStyles({'left': left - 2,'top': top - 2}).inject(document.body).setOpacity(0.3);
        borderLTRT = new Element('div', {'class': 'bof'});
        borderLTRT.setStyles({'left': left - 1,'top': top - 2}).inject(document.body).setOpacity(0.5);
        borderLTRB = new Element('div', {'class': 'bof'});
        borderLTRB.setStyles({'left': left - 1,'top': top - 1}).inject(document.body).setOpacity(0.9);
        borderLTLB = new Element('div', {'class': 'bof'});
        borderLTLB.setStyles({'left': left - 2,'top': top - 1}).inject(document.body).setOpacity(0.5);
        borderRTRT = new Element('div', {'class': 'bof'});
        borderRTRT.setStyles({'left': left + width + 1,'top': top - 2}).inject(document.body).setOpacity(0.3);
        borderRTRB = new Element('div', {'class': 'bof'});
        borderRTRB.setStyles({'left': left + width + 1,'top': top - 1}).inject(document.body).setOpacity(0.5);
        borderRTLB = new Element('div', {'class': 'bof'});
        borderRTLB.setStyles({'left': left + width,'top': top - 1}).inject(document.body).setOpacity(0.9);
        borderRTLT = new Element('div', {'class': 'bof'});
        borderRTLT.setStyles({'left': left + width,'top': top - 2}).inject(document.body).setOpacity(0.5);
        borderRBRT = new Element('div', {'class': 'bof'});
        borderRBRT.setStyles({'left': left + width + 1,'top': top + height}).inject(document.body).setOpacity(0.5);
        borderRBRB = new Element('div', {'class': 'bof'});
        borderRBRB.setStyles({'left': left + width + 1,'top': top + height + 1}).inject(document.body).setOpacity(0.3);
        borderRBLT = new Element('div', {'class': 'bof'});
        borderRBLT.setStyles({'left': left + width,'top': top + height}).inject(document.body).setOpacity(0.9);
        borderRBLB = new Element('div', {'class': 'bof'});
        borderRBLB.setStyles({'left': left + width,'top': top + height + 1}).inject(document.body).setOpacity(0.5);
        borderLBLB = new Element('div', {'class': 'bof'});
        borderLBLB.setStyles({'left': left - 2,'top': top + height + 1}).inject(document.body).setOpacity(0.3);
        borderLBRT = new Element('div', {'class': 'bof'});
        borderLBRT.setStyles({'left': left - 1,'top': top + height + 1}).inject(document.body).setOpacity(0.5);
        borderLBRT = new Element('div', {'class': 'bof'});
        borderLBRT.setStyles({'left': left - 1,'top': top + height}).inject(document.body).setOpacity(0.9);
        borderLBLT = new Element('div', {'class': 'bof'});
        borderLBLT.setStyles({'left': left - 2,'top': top + height}).inject(document.body).setOpacity(0.5);
    }
};

focusInput = function(extend,id) {
    var input = $$('input[type="text"]');
    input.extend($$('input[type="password"]'));
    //input.extend($$('input[type="checkbox"]'));
    //input.extend($$('input[type="radio"]'));
    //input.extend($$('select'));
    //input.extend($$('textarea'));
    input.each(function(el){
        if(Browser.Engine.webkit) el.setStyle('resize', 'none');
        if(!el.hasClass('maininput')) {
            el.addEvent('focus', function(){
                go(el);
                el.addClass('focused');
            });
            el.addEvent('blur', function(){
                $$('.bof').each(function(el){el.dispose();});
                if($$('.focused')[0]) $$('.focused')[0].removeClass('focused');
            });
            window.addEvent('resize', function(){
                go($$('.focused')[0]);
            });
            el.addEvent('resize', function(){
                go($$('.focused')[0]);
            });
        }
    });
    if(extend) {
        extend.addEvent('focus', function(){
            go(extend);
            extend.addClass('focused');
        });
        extend.addEvent('blur', function(){
            $$('.bof').each(function(el){el.dispose();});
            if($$('.focused')[0]) $$('.focused')[0].removeClass('focused');
        });
    }
};

mpConfirm = function() {
    if($('back')) $('back').destroy();
    var background = new Element('div', {'id':'back'});
    background.setStyles({
        'width': window.getSize().x + 'px',
        'height': window.getSize().y + 'px',
        'display': 'none'
    });
    background.fade('hide');
    background.inject($('footer'),'after');
    if(Browser.Engine.trident4) {
        background.setStyle('position','absolute');
        window.addEvent('scroll', function(){
            background.setStyle('top',window.getScroll().y + 'px');
        });
    }
    var elements = $$('a[rel^="alert"]','input[rel^="alert"]');
    elements.each(function(element){
        element.addEvent('click', function(e){
            var e = new Event(e);
            e.preventDefault();
            var conf = new Array;
            conf = element.get('rel').split(';');
            if(conf[1]) var action = conf[1];
            if(conf[2]) var title = conf[2]; else var title = '';
            if(conf[3]) var text = conf[3]; else var text = '';
            if(conf[4]) var buttonYes = '<input type="submit" class="input" id="promptOK" value="' + conf[4] + '"/>'; else var buttonYes = '';
            if(conf[5]) var buttonCancel = 'or <a href="#cancel" class="input" id="promptCancel">' + conf[5] + '</a>'; else var buttonCancel = '';
            if(conf[6]) var buttonAdd = conf[6]; else var buttonAdd = '';
            background.setStyle('display','block');
            background.fade(0.8);
            if(!$('prompt')) {
                var prompt = new Element('div', {'id': 'prompt'});
                prompt.inject(background,'before');
            }
            else var prompt = $('prompt');
            var dragWin = new Drag('prompt', {
                snap: 10,
                handle: prompt.getElement('h3')
            });
            prompt.setStyles({
                'top': window.getSize().y / 2 - 120 + 'px',
                'left': window.getSize().x / 2 - 168 + 'px'
            });
            if(Browser.Engine.trident4) {
                prompt.setStyle('position','absolute');
                window.addEvent('scroll', function(){
                    prompt.setStyle('top', window.getSize().y / 2 - 120 + window.getScroll().y + 'px');
                });
            }
            prompt.set('html', '<h3>' + title + '</h3><div><p>' + text + '</p></div><div class="last">' + buttonYes + '<div class="buttonCancel">' + buttonCancel + '</div>' + buttonAdd + '</div>');
            prompt.getElements('.input').each(function(input,i){
                input.addEvent('mouseover', function(){
                    input.addClass('hover');
                });
                input.addEvent('mouseleave', function(){
                    input.removeClass('hover');
                });
                input.addEvent('focus', function(){
                    input.addClass('focus');
                });
                input.addEvent('blur', function(){
                    input.removeClass('focus');
                });
                input.addEvent('click', function(){
                    prompt.destroy();
                    background.fade(0);
                    (function(){background.setStyle('display','none');}).delay(500);
                    if(i==0) {
                        if(element.get('tag')=='input'&&!element.hasClass('ajaxform')) {
                            var temp = new Element('input', {
                                'type': 'hidden',
                                'name': element.get('name'),
                                'value': element.get('value')
                                });
                            element.set('name','temp');
                            temp.inject(element,'after');
                            element.getParent('form').submit();
                        }
                        else if(element.hasClass('ajaxform')) {
                            var form = element.getParent('form');
                            var parent = form.getParent();
                            parent.setStyle('height', parent.getSize().y);
                            parent.addClass('loading');
                            form.set('send', {
                                onRequest: function() {
                                    parent.getElement('form').setOpacity('0.01');
                                    $$('.focused').each(function(el){el.removeClass('focused');});
                                    $$('.bof').each(function(el){el.dispose();});
                                },
                                onComplete: function(response) { 
                                    parent.set('html', response);
                                    parent.setStyle('height', 'auto');
                                    parent.removeClass('loading');
                                    if(parent.getElement('form'))
                                    sendSubForm(parent.getElement('form'));
                                    else {
                                        if(parent.getElement('div#content')) {
                                            parent.set('html','<ul class="info"><li>' + parent.getElement('div#content').getElement('div').get('html') + '</li></ul>');
                                        }
                                    }
                                    focusInput();
                                }
                            }).send();
                        }
                        else {
                            if(Browser.Engine.trident) window.navigate(element.get('href'));
                            else window.location.href = element.get('href');
                        }
                    }
                });
            });
        });
    });
};
showMap = function(trigger) {
    if($('googleMapWrapper')) {
        var gMap = $('googleMapWrapper');
        gMap.fade('hide');
        gMap.setStyles({
            'height': '0',
            'padding': '0'
        });
        trigger.addEvent('click',function(e){
            var e = new Event(e);
            e.preventDefault();
            if($('back')) {
                var background = $('back');
                background.setStyle('display','block');
                background.fade(0.8);
                gMap.setStyles({
                    'position': 'fixed',
                    'z-index':'99999999',
                    'display':'block',
                    //'top': (window.getSize().y - 500) / 2 + 'px',
                    'top': '10px',
                    'left': (window.getSize().x - 600) / 2 + 'px',
                    'height': 'auto',
                    'padding': '20px'
                });
                gMap.fade(1);
                background.addEvent('click',function(){
                    background.fade(0);
                    gMap.fade(0);
                    $$('select').setStyle('visibility','visible');
                    (function(){
                        gMap.setStyle('display','none');
                        background.setStyle('display','none');
                     }).delay(500);
                });
                gMap.getElements('a.close').each(function(e){
                    e.cloneEvents(background);
                    e.addEvent('click',function(es){
                        var es = new Event(es);
                        es.preventDefault();
                    });
                });
                if(Browser.Engine.trident4) {
                    var scrollIE = function() {
                        gMap.setStyles({
                            'position': 'absolute',
                            'top': 10 + window.getScroll().y + 'px'
                        });
                        $$('select').setStyle('visibility','hidden');
                        background.setStyle('top',window.getScroll().y + 'px');
                    }
                    scrollIE();
                    window.addEvent('scroll',function(){
                        scrollIE();
                    });
                }
            }
        });
    }
}
searchHandling = function() {
    var inp = $('search');
    if (!inp.get('value')) {
        inp.set('value', inp.get('rel'));
        inp.addClass('fresh');
    }
    inp.addEvent('focus',function(){
        if (this.hasClass('fresh')) {
            this.set('value', '');
            this.removeClass('fresh');
        }
    });
    inp.addEvent('change',function(){
        if (!this.hasClass('fresh') && !this.get('value')) {
            this.set('value', inp.get('rel'));
            this.addClass('fresh');
        }
    });
    var form = inp.getParent();
    var sadv = form.getElement('div');
    sadv.setStyles({
        'display': 'none',
        'left': form.getPosition().x - 45 + 'px'
    }).inject($('footer'),'after');
    var fx = new Fx.Morph(sadv,{wait:false,duration:200});
    sadv.addEvent('mouseenter',function() {
        this.addClass('hover');
    });
    sadv.addEvent('mouseleave',function() {
        this.removeClass('hover');
        (function(){
            if (!form.hasClass('hover')) {
                fx.start({
                    'height': '0',
                    'line-height': '0'
                });
            }
        }).delay(500);
    });
    form.addEvent('mouseenter',function() {
        form.addClass('hover');
        sadv.setStyle('display','block');
        fx.start({
            'height': '23px',
            'line-height': '23px'
        });
    });
    form.addEvent('mouseleave',function() {
        form.removeClass('hover');
        (function(){
            if(!sadv.hasClass('hover')) {
                fx.start({
                    'height': '0',
                    'line-height': '0'
                });
            }
        }).delay(500);
    });
    form.addEvent('submit', function(e){
        e.stop();
        if(!inp.hasClass('fresh')&&inp.get('value')!='') form.submit();
    });
}
window.addEvent('domready', function(){
    browser();
    if(!Browser.Engine.trident4) focusInput();
    if ($('splash')) {
        cleanOnClick($$('input[name="password"]')[0], 'password', 1);
        cleanOnClick($$('input[name="email"]')[0], 'your e-mail address');
    }
    mpConfirm();
    if($('search')) searchHandling();
    if($('addPost')||$('addThread')) {
        $$('dt').each(function(el){
            if (el.get('html') == '&nbsp;') {
                //alert(el.get('html') + ' ' + el.getNext().get('html'));
                el.empty();
            }
        });
    }
});

//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2008 Valerio Proietti, <http://mad4milk.net>, MIT Style License.

var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,modifiers:{x:"left",y:"top"}},initialize:function(){var B=Array.link(arguments,{options:Object.type,element:$defined});
this.element=$(B.element);this.document=this.element.getDocument();this.setOptions(B.options||{});var A=$type(this.options.handle);this.handles=(A=="array"||A=="collection")?$$(this.options.handle):$(this.options.handle)||this.element;
this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.Engine.trident)?"selectstart":"mousedown";this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};
this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);
return this;},start:function(C){if(this.options.preventDefault){C.preventDefault();}this.fireEvent("beforeStart",this.element);this.mouse.start=C.page;
var A=this.options.limit;this.limit={x:[],y:[]};for(var D in this.options.modifiers){if(!this.options.modifiers[D]){continue;}if(this.options.style){this.value.now[D]=this.element.getStyle(this.options.modifiers[D]).toInt();
}else{this.value.now[D]=this.element[this.options.modifiers[D]];}if(this.options.invert){this.value.now[D]*=-1;}this.mouse.pos[D]=C.page[D]-this.value.now[D];
if(A&&A[D]){for(var B=2;B--;B){if($chk(A[D][B])){this.limit[D][B]=$lambda(A[D][B])();}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};
}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop);},check:function(A){if(this.options.preventDefault){A.preventDefault();
}var B=Math.round(Math.sqrt(Math.pow(A.page.x-this.mouse.start.x,2)+Math.pow(A.page.y-this.mouse.start.y,2)));if(B>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});
this.fireEvent("start",this.element).fireEvent("snap",this.element);}},drag:function(A){if(this.options.preventDefault){A.preventDefault();}this.mouse.now=A.page;
for(var B in this.options.modifiers){if(!this.options.modifiers[B]){continue;}this.value.now[B]=this.mouse.now[B]-this.mouse.pos[B];if(this.options.invert){this.value.now[B]*=-1;
}if(this.options.limit&&this.limit[B]){if($chk(this.limit[B][1])&&(this.value.now[B]>this.limit[B][1])){this.value.now[B]=this.limit[B][1];}else{if($chk(this.limit[B][0])&&(this.value.now[B]<this.limit[B][0])){this.value.now[B]=this.limit[B][0];
}}}if(this.options.grid[B]){this.value.now[B]-=(this.value.now[B]%this.options.grid[B]);}if(this.options.style){this.element.setStyle(this.options.modifiers[B],this.value.now[B]+this.options.unit);
}else{this.element[this.options.modifiers[B]]=this.value.now[B];}}this.fireEvent("drag",this.element);},cancel:function(A){this.document.removeEvent("mousemove",this.bound.check);
this.document.removeEvent("mouseup",this.bound.cancel);if(A){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element);
}},stop:function(A){this.document.removeEvent(this.selection,this.bound.eventStop);this.document.removeEvent("mousemove",this.bound.drag);this.document.removeEvent("mouseup",this.bound.stop);
if(A){this.fireEvent("complete",this.element);}}});Element.implement({makeResizable:function(A){return new Drag(this,$merge({modifiers:{x:"width",y:"height"}},A));
}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false},initialize:function(C,B){this.parent(C,B);this.droppables=$$(this.options.droppables);
this.container=$(this.options.container);if(this.container&&$type(this.container)!="element"){this.container=$(this.container.getDocument().body);}C=this.element;
var D=C.getStyle("position");var A=(D!="static")?D:"absolute";if(C.getStyle("left")=="auto"||C.getStyle("top")=="auto"){C.position(C.getPosition(C.offsetParent));
}C.setStyle("position",A);this.addEvent("start",function(){this.checkDroppables();},true);},start:function(B){if(this.container){var D=this.element,J=this.container,E=J.getCoordinates(D.offsetParent),F={},A={};
["top","right","bottom","left"].each(function(K){F[K]=J.getStyle("padding-"+K).toInt();A[K]=D.getStyle("margin-"+K).toInt();},this);var C=D.offsetWidth+A.left+A.right,I=D.offsetHeight+A.top+A.bottom;
var H=[E.left+F.left,E.right-F.right-C];var G=[E.top+F.top,E.bottom-F.bottom-I];this.options.limit={x:H,y:G};}this.parent(B);},checkAgainst:function(B){B=B.getCoordinates();
var A=this.mouse.now;return(A.x>B.left&&A.x<B.right&&A.y<B.bottom&&A.y>B.top);},checkDroppables:function(){var A=this.droppables.filter(this.checkAgainst,this).getLast();
if(this.overed!=A){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);}if(A){this.overed=A;this.fireEvent("enter",[this.element,A]);}else{this.overed=null;
}}},drag:function(A){this.parent(A);if(this.droppables.length){this.checkDroppables();}},stop:function(A){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed]);
this.overed=null;return this.parent(A);}});Element.implement({makeDraggable:function(A){return new Drag.Move(this,A);}});