
function $(element) {
    return document.getElementById(element);
}

function getDirName(path) {
    var position = path.lastIndexOf('/');
    return (position != -1)
        ? path.substr(0, position)
        : path;
}

function getLocale() {
    var html = document.getElementsByTagName('html')[0];
    var lang = html.getAttribute('xml:lang') || html.getAttribute('lang');

    return lang || 'en';
}

function getBaseUrl(localeSensitive) {
    var head = document.getElementsByTagName('head')[0];
    var scripts = head.getElementsByTagName('script');
    var size = scripts.length;

    for (var i = 0; i < size; ++i) {
        var name = scripts[i].src;
        if (name.lastIndexOf('scripts.js') != -1) {
        	var base = getDirName(getDirName(name));
        	if (localeSensitive) {
        		return base + '/' + getLocale();
        	}
            return base;
        }
    }
    return '';
}

function setOverviewPolaroid(url, title, text) {
    var div = $('polaroid');
    var path = getBaseUrl() + '/swf/polaroidSmall.swf';
    var swf = new SWFObject(path, 'polaroid', '240', '270', '7', '#ffffff');
    swf.addParam('wmode', 'transparent');
    swf.addVariable('imageURL', url);
    swf.addVariable('polaroidTitle', title);
    swf.addVariable('polaroidText', text);
    swf.write(div);
}

function setOverviewNotes(notes) {
    var wrapper = $('noteWrapper');
    var path = getBaseUrl() + '/swf/noteSmall.swf';
    var size = notes.length;
    for (var i = 0; i < size; ++i) {
        var id = 'note' + i;
        var div = document.createElement('div');
        div.id = id;
        div.className = 'note';

        var swf = new SWFObject(path, id, '125', '123', '7', '#ffffff');
        swf.addParam('wmode', 'transparent');
        swf.addVariable('noteName', notes[i][0]);
        swf.addVariable('noteText', notes[i][1]);
        swf.write(div);

        wrapper.appendChild(div);
    }
}

function setPortrait(name, url) {
    var div = $(name);
    var path = getBaseUrl() + '/swf/frameNews.swf';
    var swf = new SWFObject(path, name, '202', '200', '7', '#ffffff');
    swf.addParam('wmode', 'transparent');
    swf.addVariable('imageURL', url);
    swf.write(div);
}

function setCase(name, url) {
    var div = $(name);
    var path = getBaseUrl() + '/swf/frameCase.swf';
    var swf = new SWFObject(path, name, '275', '275', '7', '#ffffff');
    swf.addParam('wmode', 'transparent');
    swf.addVariable('imageURL', url);
    swf.write(name);
}

function setNews(name, url) {
    var div = $(name);
    var path = getBaseUrl() + '/swf/frameNews.swf';
    var swf = new SWFObject(path, name, '170', '170', '7', '#ffffff');
    swf.addParam('wmode', 'transparent');
    swf.addVariable('imageURL', url);
    swf.write(name);
}

function setArchive(name, url) {
    var div = $(name);
    var path = getBaseUrl() + '/swf/frameNewsArchive.swf';
    var swf = new SWFObject(path, name, '120', '120', '7', '#ffffff');
    swf.addParam('wmode', 'transparent');
    swf.addVariable('imageURL', url);
    swf.write(name);
}

function setNote(div, id, name, text) {
    var path = getBaseUrl() + '/swf/note.swf';
    var swf = new SWFObject(path, id, '227', '224', '7', '#ffffff');
    swf.addParam('wmode', 'transparent');
    swf.addVariable('noteName', name);
    swf.addVariable('noteText', text);
    swf.write(div);
}

function setPolaroid(div, id, title, text, url) {
    var path = getBaseUrl() + '/swf/polaroidSmall.swf';
    var swf = new SWFObject(path, id, '385', '426', '7', '#ffffff');
    swf.addParam('wmode', 'transparent');
    swf.addVariable('imageURL', url);
    swf.addVariable('polaroidTitle', title);
    swf.addVariable('polaroidText', text);
    swf.write(div);
}

function isActiveImage(id) {
    var activeImage = 'overview_' + id + '.gif';
    var current = $('current');
    return (current.src.lastIndexOf(activeImage) != -1);
}

function setOver(image) {
    if (!isActiveImage(image.id)) {
        image.src = getBaseUrl(true) + '/images/tabs/' + image.id + '_over.gif';
    }
}

function setOff(image) {
    if (!isActiveImage(image.id)) {
        image.src = getBaseUrl(true) + '/images/tabs/' + image.id + '_off.gif';
    }
}

function setTop(image) {
    var current = $('current');
    var name = current.src;
    current.src = getBaseUrl(true) + '/images/captions/overview_' + image.id + '.gif';
    image.src = getBaseUrl(true) + '/images/tabs/' + image.id + '_on.gif';

    var active = '';
    var result = name.match(/overview_(.*?)\.gif/);
    if (result && result.length == 2) {
        active = result[1];
        active = $(active);
        setOff(active);
    }
}

function setNoteOver() {
    var leaveNote = $('leaveNote');
    leaveNote.style.background = 'url("' + getBaseUrl(true) + '/images/wall/leave_note_over.gif") top left no-repeat';
    leaveNote.style.cursor = 'pointer';
}

function setNoteOff() {
    var leaveNote = $('leaveNote');
    leaveNote.style.background = 'url("' + getBaseUrl(true) + '/images/wall/leave_note_off.gif") top left no-repeat';
    leaveNote.style.cursor = '';
}

function setNoteOn() {
    var leaveNote = $('leaveNote');
    leaveNote.style.display = 'none';

    var noteForm = $('noteForm');
    noteForm.style.display = 'block';

    var name = $('name');
    name.focus();
}

function setCharCount(max) {
    var form = document.input;
    var length = form.body.value.length;
    var remainder = Math.max(max - length, 0);
    var isValid = (remainder > 0);

    var html = remainder + ((getLocale() == 'en') ? ' character' : ' karakter');
    if (remainder != 1) {
        html += 's';
    }
    var span = $('chars');
    span.style.color = (isValid) ? '#000' : '#f00';
    span.innerHTML = html;
    if (!isValid) {
        form.body.value = form.body.value.substr(0, max);
    }
}

function setMessageWall(entries) {
    var leaveNote = $('leaveNote');
    var container = $('container');

    // Safari doesn't like dynamically generated values...
    var baseHeight = 502; //container.offsetHeight;
    var baseLeft = 230; //container.offsetLeft + leaveNote.offsetWidth + 15;

    var top = 0;
    var left = baseLeft;
    var prevWidth = 0;
    var prevHeight = 0;
    var prevLeft = 0;

    var size = entries.length;
    for (var i = 0; i < size; ++i) {
        var id = 'wallEntry' + i;
        var div = document.createElement('div');
        div.id = id;
        div.style.position = 'absolute';

        var isPolaroid = (entries[i].length == 3);

        var width = 227;
        var height = 224;
        if (isPolaroid) {
            width = 385;
            height = 426;
        }
        if ((prevHeight + height) < baseHeight) {
            top += prevHeight;
        } else {
            prevHeight = 0;
            top = 0;
            left += prevWidth;
        }

        div.style.width = width + 'px';
        div.style.height = height + 'px';
        div.style.top = top + 'px';
        div.style.left = left + 'px';

        container.appendChild(div);

        if (!isPolaroid) {
            setNote(div, id, entries[i][0], entries[i][1]);
        } else {
            setPolaroid(div, id, entries[i][0], entries[i][1], entries[i][2]);
        }
        prevWidth = div.offsetWidth;
        prevHeight += div.offsetHeight;
        prevLeft = div.offsetLeft;
    }
}

function validateNote(nameLength, bodyLength) {
    var form = document.input;
    form.name.className = '';
    form.body.className = '';

    var length = form.name.value.length;
    if (length == 0 || length > nameLength) {
        form.name.className = 'error';
        form.name.focus();
        return false;
    }

    length = form.body.value.length;
    if (length == 0 || length > bodyLength) {
        form.body.className = 'error';
        form.body.focus();
        return false;
    }
    return true;
}
