function testing(form, message)
{
    if (form.words.value.length < 3)
    {
        alert(message);
        return false;
    }
}

function FormsTextCounter(item_id, max)
{
    var length = document.getElementById(item_id).value.length;
    document.getElementById(item_id + '_counter').value = max - length;
}

function smile(code, element)
{
    if ( element == '' ) element = 'description';
    var myTextArea = document.getElementById(element);

    //IE support
    if (document.selection) {
        myTextArea.focus();
        sel = document.selection.createRange();
        sel.text = code;
    }
    //MOZILLA/NETSCAPE support
    else if (myTextArea.selectionStart || myTextArea.selectionStart == "0") {
        var startPos = myTextArea.selectionStart;
        var endPos = myTextArea.selectionEnd;
        var oldText = myTextArea.value;

        myTextArea.value = oldText.substring(0, startPos) + code + oldText.substring(endPos, oldText.length);
        myTextArea.selectionStart = startPos;
        myTextArea.selectionEnd = startPos + code.length;
    } else {
        myTextArea.value += code;
    }

    myTextArea.focus();
}

function showEventForm(href, idBlock, captionShow, captionHide)
{
    var blockStyle = document.getElementById(idBlock).style;
    if (blockStyle.display == 'none')
    {
        blockStyle.display = '';
        !!captionShow && (href.innerHTML = captionShow);

    } else {
        blockStyle.display = 'none';
        !!captionHide && (href.innerHTML = captionHide);
    }
}

function Appender(containerElement, addButtonElement, settings)
{
    var self = this;
    var container = $(containerElement);
    var addButton = $(addButtonElement);
    var model = $('.j-item', container).eq(0).detach();
    settings = jQuery.extend({
        maxrows: 10
    }, settings);
    var delItem = function(event) {
        event.preventDefault();
        if ($('.j-item', container).length < 3) {
            $('.j-delete', container).hide();
        }
        $(this).parents('.j-item').hide(300, function() {
            $(this).remove();
            addButton.get(0).disabled = (!!settings.maxrows
                && $('.j-item', container).length >= settings.maxrows)
        });
    };
    var addItem = function(event) {
        event.preventDefault();
        if (checkOver()) return;
        var element = model.clone(true).hide();
        $('.j-delete', element).click(delItem);
        element.appendTo(container).show(300);
        if ($('.j-item', container).length > 1) {
            $('.j-delete', container).show();
        }
    };
    var checkOver = function() {
        return addButton.get(0).disabled = (!!settings.maxrows
            && $('.j-item', container).length >= settings.maxrows)
    };
    $('.j-delete', container).click(delItem);
    if ($('.j-item', container).length < 2) {
        $('.j-delete', container).hide();
    }
    checkOver();
    addButton.click(addItem);
}

function SlideShow(viewPortSelector, urls, settings)
{
    var self = this;
    var images = [];
    var currentIx = -1;
    var interval;
    settings = jQuery.extend({
        duration: 2000,
        toggleShowButton: $('#j-playToggle'),
        playTitle: 'Play',
        pauseTitle: 'Pause',
        prevSlideButton: $('#j-slidePrev'),
        nextSlideButton: $('#j-slideNext'),
        width: 500,
        height: 400
    }, settings);
    this.next = function() {
        if (currentIx > -1) {
            $(images[currentIx]).fadeOut('slow', $(this).hide);
        }
        nextIx = currentIx + 1;
        if (!images[nextIx]) nextIx = 0;
        $(images[nextIx]).fadeIn('slow');
        currentIx = nextIx;
    };
    this.prev = function() {
        if (currentIx > -1) {
            $(images[currentIx]).fadeOut('slow', $(this).hide);
        }
        prevIx = currentIx - 1;
        if (!images[prevIx]) prevIx = images.length - 1;
        $(images[prevIx]).fadeIn('slow');
        currentIx = prevIx;
    };
    this.toggle = function() {
        if (!interval) {
            self.next();
            interval = setInterval(self.next, settings.duration);
            settings.toggleShowButton.attr('value', settings.pauseTitle);
        } else {
            clearInterval(interval);
            interval = false;
            settings.toggleShowButton.attr('value', settings.playTitle);
        }
    };
    this.stop = function() {
        clearInterval(interval);
        interval = false;
        settings.toggleShowButton.attr('value', settings.playTitle);
    };
    setPosition = function(e) {
        var img = $(this).get(0);
        var vRatio = settings.height / settings.width;
        var iRatio = img.height / img.width;
        if (iRatio > vRatio) {
            var h = Math.min(settings.height, img.height);
            var w = h / iRatio;
            var l = Math.round((settings.width - w) / 2);
            var t = Math.round((settings.height - h) / 2);
        } else {
            var w = Math.min(settings.width, img.width);
            var h = w * iRatio;
            var l = Math.round((settings.width - w) / 2);
            var t = Math.round((settings.height - h) / 2);
        }
        img.style.left = '' + l + 'px';
        img.style.top = '' + t + 'px';
    };
    for (var ix = 0; ix < urls.length; ix++) {
        img = new Image();
        $(img).load(setPosition);
        img.src = urls[ix];
        $(viewPortSelector).append(img);
        img.style.display = 'none';
        img.style.position = 'absolute';
        img.style.maxWidth = '' + settings.width + 'px';
        img.style.maxHeight = '' + settings.height + 'px';
        images[ix] = img;
    }
    $(viewPortSelector).css({
        overflow: 'hidden',
        position: 'relative',
        width: '' + settings.width + 'px',
        height: '' + settings.height + 'px',
    });
    settings.toggleShowButton.click(self.toggle);
    settings.prevSlideButton.click(function() {
        self.stop();
        self.prev();
    });
    settings.nextSlideButton.click(function() {
        self.stop();
        self.next();
    });
    this.next();
}

