var AdminImageSorter = Class.create({
    initialize: function(container, data_holder) {
    	this.data_holder = $(data_holder);
		this.container = $(container);
		this.form = this.container.up('form');
		this.images = this.container.select('.sortable_image');
		var t = this;

		Sortable.create(this.container, {elements: this.images});

		this.images.each(function(el) {
		    el.observe('dblclick', t.toggle_select.bind(this));
		});
		
		this.form.observe('submit', this.submit.bind(this));
    },
    
    submit: function(ev) {
    	Event.stop(ev);
    	var val = this.container.select('.sortable_image_selected').map(function(s){
    		return s.readAttribute('id').gsub(/[^0-9]/, '');
    	}).join(',');
    	this.data_holder.setAttribute('value', val);
    	this.form.submit();
    },
    
    toggle_select: function(ev) {
		var el = Event.element(ev);
		el.toggleClassName('sortable_image_selected');
    }
});

var AdminTable = Class.create({
    initialize: function() {
	this.icons = '/home/wp-content/themes/rawtigo/style/images/icons/fffs';

	this.lines = $$('table.sortable tr');

	this.links = $$('table.sortable td a').findAll(function(el){
	    var h = el.readAttribute('href');
	    var c = el.innerHTML.strip();
	    return 	h.match(/\/(delete|view|edit)\//) &&
		c.match(/^(View|Delete|Edit)/);
	});

	this.views = this.links.findAll(function(el){
	    return el.readAttribute('href').include('view');
	});

	this.edits = this.links.findAll(function(el){
	    return el.readAttribute('href').include('edit');
	});

	this.deletes = this.links.findAll(function(el){
	    return el.readAttribute('href').include('delete');
	});

	this.actions();

	var t = this;
	this.lines.each(function(line){
	    line.observe('mouseover', t.hover.bind(this));
	    line.observe('mouseout', t.hover.bind(this));
	});
    },

    actions: function() {
	var icons = this.icons;

	this.edits.each(function(el){
	    el.setAttribute('title', 'Edit');
	    el.update('<img src="' + icons + '/page_edit.png" alt="Edit" />');
	});

	this.deletes.each(function(el){
	    el.setAttribute('title', 'Delete');
	    el.update('<img src="' + icons + '/page_delete.png" alt="Delete" />');
	});

	this.views.each(function(el){
	    el.setAttribute('title', 'View');
	    el.update('<img src="' + icons + '/page.png" alt="View" />');
	});
    },

    hover: function (ev) {
	var el = Event.element(ev);
	el.up('tr').toggleClassName('altRow');
    }
});

var ResultDuplicator = Class.create({
    initialize: function() {
        $$('a[href="#duplicate"]').each(function(s){
            s.observe('click', function(ev){
                var base = s.siblings()[2];
                var clone = new Element(
                    'input', {
                        'class': base.readAttribute('class'),
                        'name': base.readAttribute('name'),
                        'title': base.readAttribute('title'),
                        'type': base.readAttribute('type'),
                        'value': '' });
                s.insert({'after': clone });

                base = s.siblings()[1];
                clone = new Element(
                    'input', {
                        'class': base.readAttribute('class'),
                        'name': base.readAttribute('name'),
                        'title': base.readAttribute('title'),
                        'type': base.readAttribute('type'),
                        'value': '' });
                s.insert({'after': clone });
                
                s.insert({'after': '<br />'});
            })
        });
    }
});


Event.observe(window, 'load', function() {	
    new AdminTable();
    if ($('image_sorter') != null)
		new AdminImageSorter('image_sorter', 'ImageImage');
	
	if ($('upload_solution') && document.location.href.indexOf("error=true") != -1)
	   alert('Invalid username and password combination.');
	   
    new ResultDuplicator();
});