window.addEvent('domready', function() {
    var photos = $$('.photos');
    photos.each(function(item) {
        item.getChildren().each(function(item) {
            item.addEvent('contextmenu', function(event) {
                event.stop();
            });
        });
    });
    var portfolio = $('portfolio');
    if(portfolio) {
        portfolio.setStyle('overflow', 'hidden');
        var children = portfolio.getChildren();
        var offset = 0;
        var fx = new Fx.Scroll(portfolio, {
            transition : 'sine:in:out'
        });
        fx.start(0, 0);
        var slider_element = new Element('div', {
            id : 'slider'
        }).inject(portfolio, 'after');
        var knob_element = new Element('div', {
            id : 'knob',
            styles : {
                width : offset_maximum
            }
        }).inject(slider_element)
        var recalculate = function() {
            offset = 0;
            children.slice(0, -1).each(function(item) {
                offset += item.getSize().x + 20;
            });
            return (children.length > 0) ? Math.min((750 / (offset + children.getLast().getSize().x)) * 750, 750) : 0;
        }
        var offset_maximum = recalculate();
        var make_slider = function() {
            return new Slider(slider_element, knob_element, {
                range : [0, offset],
                steps : offset,
                onChange : function(step) {
                    fx.cancel().start(step, 0);
                }
            });
        }
        var slider = make_slider();
        children.addEvent('load', function() {
            offset_maximum = recalculate();
            $('knob').setStyle('width', offset_maximum);
            slider.detach();
            slider_element.removeEvents();
            knob_element.removeEvents();
            make_slider();
        });
        portfolio.addEvent('mousewheel', function(event) {
            event.stop();
            var scroll = Math.min(Math.max(0, slider.step - (event.wheel * 100)), slider.max);
            slider.set(scroll);
            fx.cancel().set(scroll, 0);
        });
    }
    var bio_text = $('bio_text');
    if(bio_text) {
        bio_text.setStyles({
            height : 500,
            overflow : 'hidden'
        });
        var fx = new Fx.Scroll(bio_text, {
            transition : 'sine:in:out'
        });
        fx.start(0, 0);
        var slider = new Element('div', {
            id : 'slider_vertical'
        }).inject(bio_text, 'after');
        slider = new Slider(slider, new Element('div', {
            id : 'knob',
            styles : {
                height : Math.min((500 / bio_text.getScrollSize().y) * 500, 500)
            }
        }).inject(slider), {
            mode : 'vertical',
            range : [0, bio_text.getScrollSize().y],
            steps : bio_text.getScrollSize().y,
            onChange : function(step) {
                fx.cancel();
                fx.start(0, step);
            }
        });
        bio_text.addEvent('mousewheel', function(event) {
            event.stop();
            var scroll = Math.min(Math.max(0, slider.step - (event.wheel * 100)), slider.max);
            slider.set(scroll);
            fx.cancel().set(0, scroll);
        });
    }
    $$('.sortable').each(function(list) {
      new Sortables(list, {
        onComplete : function() {
          var values = [];
          this.serialize(false, function(element) {
            values[values.length] = parseInt(element.get('id').replace('item_', ''));
            return true;
          });
          list.getNext('input[type="hidden"]').set('value', values.join(','));
        }
      });
    });
});