function gotoStep(step) {
    if (window.saveSettings) {
        saveSettings();
    }

    var url = root + '/create/step-' + step + '.php';
    var form = $('settings-form');

    if (form) {
        form.action = url
        form.submit();
    } else {
        document.location = url;
    }

    return false;
}

function selectLayout(rows, cols) {
	$A($('layouts-container').getElementsByTagName('td')).each( function(node) {
		node.className = 'layout-box';
	});
    $('layout-' + rows + 'x' + cols).addClassName('layout-box-selected');

    Form.Element.enable('button-next')
    $('settings-form')['rows'].value = rows;
    $('settings-form')['cols'].value = cols;
}

function updateTip(value) {
    if (value == '') {
        disable('Please enter a value');
        return;
    }

    if (value == '' || isNaN(value)) {
        disable('Dude, a number! A number!');
        return;
    }

    if (value < 0 || value > 30) {
        disable('The number should be between 1 and 30');
        return;
    }

    var options = 1;

    for (var i = 1; i < value; i++) {
        if (value % i == 0)
            options++;
    }

    enable("You'll have " + options + " different collage options with " + value + " pictures");
}

Form.Element.disable = function(elt) {
	elt = $(elt);

    if (!elt.oldOnclick)
	   elt.oldOnclick = (elt.onclick) ? elt.onclick : function() { return true; };
    elt.onclick = function() { return false; };
    elt.addClassName('disabled');
}

Form.Element.enable = function(elt) {
	elt = $(elt);
	if (elt.oldOnclick) elt.onclick = elt.oldOnclick;
    elt.removeClassName('disabled');
}

function enable(message) {
	Form.Element.enable('button-next');
    $('tip').innerHTML = message;
}

function disable(message) {
	Form.Element.disable('button-next');
	$('tip').innerHTML = message;
}

function initFileUpload(node) {
    node = $(node);
    if ( node.type != 'file' || node.parentNode.className != 'fileinputs' )
        return;

    var fake_id = (node.id) ? node.id + '-fake' : null;
    var fake_field = Builder.node('input', {type: 'text', className: 'fake', id: fake_id, style: 'margin-right: 2px;'});
    var fake = Builder.node('div', {className: 'fakefile'}, [
        fake_field,
        Builder.node('input', {type: 'button', className: 'button-v2', value: 'Browse'})
    ]);

    node.className = 'file hidden';
    node.parentNode.appendChild(fake);
    node.relatedElement = fake_field;
    node.onchange = function () {
        this.relatedElement.value = this.value;
    }
}

function resetFile(id) {
    var node = $(id);
    if (!node) return;
    var parent = node.parentNode;

    var relatedElement = $A(parent.getElementsByTagName('input')).find( function(elt) {
        return (elt.type == 'text');
    });

    relatedElement.value = '';

    $A(parent.getElementsByTagName('input')).each( function(elt) {
        if (elt.type == 'file') {
            var new_file = Builder.node('input', {
                type: 'file',
                id: elt.id,
                name: elt.name,
                className: 'file'
            });

            new_file.relatedElement = relatedElement;
            new_file.onchange = function () {
                this.relatedElement.value = this.value;
            }

            parent.appendChild(new_file);
            upload_form.addRule(new_file, {callback: validateUploadFile, required: elt.required});
            parent.removeChild(elt);
        }
    });
}

function getPosition(e) {
     e = e || window.event;
     var cursor = {x:0, y:0};
     if (e.pageX || e.pageY) {
         cursor.x = e.pageX;
         cursor.y = e.pageY;
     }
     else {
         cursor.x = e.clientX +
             (document.documentElement.scrollLeft ||
             document.body.scrollLeft) -
             document.documentElement.clientLeft;
         cursor.y = e.clientY +
             (document.documentElement.scrollTop ||
             document.body.scrollTop) -
             document.documentElement.clientTop;
     }
     return cursor;
}

function log(message) {
    if (console) {
        console.log(message);
    }
}

