/* SVN FILE: $Id: application.js 208 2010-04-15 12:12:57Z kharchenko $ */
/*
 * @version			$Revision: 208 $
 * @modifiedby		$LastChangedBy: kharchenko $
 * @lastmodified	$Date: 2010-04-15 14:12:57 +0200 (Thu, 15 Apr 2010) $
 */

jQuery.extend(jQuery.fn, {
    advForm : function (options) {
        // main settings
        var settings = $.extend({
            validate          : false,
            ajax              : false,
            sent_message      : 'please wait...',
            error_message     : 'your message was rejected',
            highlight         : false,
            highlight_message : 'please fill the fields in red',
            highlight_class   : 'required'
        }, options);

        if (!settings.validate && !settings.ajax) {
            return true;
        }

        var _form = $(this);

        // params to pass to the validation plugin
        var validation_settings = {
            errorClass   : 'error-message',
            errorElement : 'div',
            highlight    : false
        };

        if (settings.highlight === true) {
            delete validation_settings.highlight;
            validation_settings = $.extend(validation_settings, {
                showErrors : function (errors) {
                    for ( var i = 0; this.errorList[i]; i++ ) {
                        var error = this.errorList[i];
                        if (typeof this.settings.highlight == 'function') {
                            this.settings.highlight.call( this, error.element, settings.highlight_class );
                        }
                    }
                    for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
                        this.settings.unhighlight.call( this, elements[i], settings.highlight_class );
                    }
                    if (_form.find('.' + settings.highlight_class).length > 0) {
                        _form.find('.form_status').text(settings.highlight_message);
                    } else {
                        _form.find('.form_status').text('');
                    }
                }
            });
        }

        $.metadata.setType('attr', 'validation');

        if (settings.validate && !settings.ajax) {
            _form.validate(validation_settings);
            return true;
        }

        if (settings.ajax) {
            var createMessage = function (text) {
                return '<div class=\"wait_message\">' + text + '</div>';
            }
            _form.ajaxForm({
                beforeSubmit : function () {
                    if (settings.validate && !_form.validate(validation_settings).form()) {
                        return false;
                    }
                    $.blockUI({ message : createMessage(settings.sent_message) });
                },
                success : function (data, status) {
                    setTimeout(function () {
                        $.unblockUI();
                        _form.resetForm();
                    },2000);
                }
            });

            _form.ajaxError(function () {
                $.blockUI({ message : createMessage(settings.error_message) });
                $.unblockUI({ fadeOut : 4000});
            });

            return true;
        }
    }
});

    function initBanner() {
        // init banner
        var swf_url = '/swf/banner.swf',
            xml_url = '/swf/banner.xml',
            so      = new SWFObject(swf_url, "sotester", "484px", "113px", "8", "#FFFFFF","high");
        so.addParam("scale", "noscale");
        so.addParam("wmode", "transparent");	
        so.addVariable("xmlfile", xml_url);			
        so.write("banner");
    }//eof

    function initMenu() {
        var subs = $('#accordion > li > div.sub');
        subs.not('.active').hide();
        $('#accordion > li > a.head').click(function () {
            var current = $(this).next('div.sub');
            if (!current) {
                return true;
            }
            subs.removeClass('active');
            if (current.is(':visible')) {
                current.slideUp('normal');
            } else {
                current.slideDown('normal').addClass('active');
            }
            subs.not('.active').slideUp('normal');
        })
    }//eof

