/**
 *
 * Custom js (jQuery) functions of the application
 *
 */

String.prototype.ellipsis = function (limit) {
    var center = ' ... ';
    var len = this.length;
    if (len > limit) {
        var half = Math.floor( (limit - center.length)/2 );
        return this.substr(0, half) + center + this.substr(len-half, half);
    }
    return this.toString();
}



jQuery.extend(jQuery.fn, {
    // simple accordeon menu
    accordeonMenu : function () {
        var menu = $(this);
        $('> li > a:not(.active) ~ .sub', menu).hide();
        var items = $('> li > a', menu).click(function () {
            items.removeClass('active');
            $(this).addClass('active').siblings('.sub').slideDown('normal');
            items.not('.active').siblings('.sub').slideUp('normal');
        });
        return menu;
    },
    digitsOnly : function () {
        var $this = $(this);
        $this.keypress(function (e) {
            // allow digits only
            if (e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) {
                return false;
            }
        });
        return $this;
    },
    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];
                        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;
        }
    }
});


$(document).ready(function () {
	// jQuery Fancybox init
	/*var fancybox_selector = 'a.fancybox';

	if( $(fancybox_selector).length > 0 ) {
		$(fancybox_selector).fancybox({
			'transitionIn'	:	'elastic',
			'transitionOut'	:	'elastic',
			'speedIn'		:	600,
			'speedOut'		:	200,
			'easingIn'		:	'easeInExpo',
			'easingOut'		:	'easeOutExpo',
            'onComplete'    :   function() { $.fancybox.center(); }
		});
	}*/
	
	$("a.fancybox").fancybox();

	// submenu hover
// 	$('#head ul > li').hover(
// 		function() {
// 			$(this).find('ul').show();
// 		}, function() {
// 			$(this).find('ul').hide();
// 		}
// 	);

    $('#accordion').accordeonMenu();

    $('a.menu_item').click(function () {
        //$.cookie('selected_path', $(this).attr('__path'), {path: '/'});
    });

    $('#search_btn').click(function () {
        var criteria = $('#search_criteria').val();

        if (!criteria) {
            return false;
        }

        var search_form = $('#search_form'),
            search_url  = search_form.attr('action');

        // append search criteria to uri
        search_url += '/' + encodeURI(criteria);

        search_form.attr('action', search_url);
        return true;
    });


    var edit_content = $('.edit_content')
    if (edit_content.length) {
        edit_content.nyromodal({
            width: 700,
            height: 300
        });
    }

	$('.bnr div').cycle({
		timeout : 2500
	});

	// work altview slider
	$('#slider').cycle({
    fx:     'scrollHorz',
    speed:  500,
    timeout: 0,
	height : 291,
	width: 450,
    pager:  '#slider_pager',
	pagerAnchorBuilder: function(idx, slide) {
        return '<li><a href="#">'+(idx + 1)+'</a></li>';
    }
});

});

