var metaTags = document.getElementsByTagName('meta'), BASE = '/';
for (var i = 0; i < metaTags.length; i++) if (metaTags[i].getAttribute('name') == 'base') {BASE = metaTags[i].getAttribute('content'); break;}


if (swfobject.hasFlashPlayerVersion('9.0.115')) {
    var vars = {};
    var params = {
        'wmode': 'opaque',
        'bgcolor': '#bba87b'
    };
    var attrs = {};
    swfobject.embedSWF(BASE + 'swf/map.swf', 'mapSWF', '996', '327', '9.0.115', BASE + 'swf/expressInstall.swf', vars, params, attrs);
}



$(function(){
// tweet
    $('.tweet').tweet({
        username: 'beachclub117',
        count: 1,
        loading_text: 'Загружаю...'
    });

// gallery fancybox
    $('.gallery .list .img a').fancybox({
        centerOnScroll: true,
        overlayOpacity: 0.5,
        overlayColor: '#000',
        margin: 50
    });

// projects fancybox
    $('.project-list .images a').fancybox({
        centerOnScroll: true,
        overlayOpacity: 0.5,
        overlayColor: '#000'
    });

// calendar fbox
    $('.calendar-descr').fBox();

// calendar select
    $('.calendar .page-title select').jSelect({speed: 100});
    $('.calendar .page-title select').change(function(){
        var $calendarSelect = $(this),
            calendarSelectVal = $('option:selected', $calendarSelect).val(),
            $ajax = $('#ajax'),
            $ajaxLoading = $('#ajaxLoading'),
            $ajaxWrap = $('#ajaxWrap'),
            loadURL = BASE + 'calendar/' + calendarSelectVal + ' #ajaxContent';

        $ajax.height($ajax.height());
        $ajaxLoading.fadeIn(300);
        $ajaxWrap.fadeOut(300, function(){
            $ajaxWrap.load(loadURL, function(){
                $ajax.animate({
                    height: $ajaxWrap.height()
                }, {
                    queue: false,
                    duration: 300,
                    complete: function(){
                        $ajaxLoading.fadeOut(300);
                        $ajaxWrap.fadeIn(300, function(){
                            $('.calendar-descr').fBox();
                        });
                    }
                });
            });
        });
    });

// placeHolder
    $('label.placeholder').placeHolder();

// feedback formSubmit
    $('.feedback form').formSubmit({url: BASE + 'contacts/', speed: 100});
});



// ------------- formSubmit ------------- //
(function($){
$.fn.formSubmit = function(o){
    o = $.extend({
        url: '',
        type: 'post',
        speed: 500
    }, o || {});

    return this.each(function(){
        var $form = $(this),
            $inputArray = $('input, select, textarea, button', $form),
            $submitButton = $('button:submit', $form),
            $loading = $('.loading', $form),
            $statusOk = $('.status-ok', $form),
            $statusError = $('.status-error', $form);

        $form.validate({
            errorPlacement: function(error, el) {
            },
            highlight: function(el, errorClass) {
                $(el).closest('.i').addClass('i-error');
            },
            unhighlight: function(el, errorClass) {
                $(el).closest('.i').removeClass('i-error');
            },
            submitHandler: function() {
                $inputArray.blur();
                $submitButton.attr('disabled', 'disabled').fadeOut(o.speed, function(){
                    $loading.fadeIn(o.speed, function(){
                        $form.ajaxSubmit({
                            url: o.url,
                            type: o.type,
                            success: function(responseText, statusText, xhr, $form){
                                $loading.fadeOut(o.speed, function(){
                                    $statusOk.fadeIn(o.speed);
                                });
                            }
                        });
                    });
                });
            }
        });

        $.validator.addClassRules('requiredph', {
            requiredph: true
        });
    });
};
})(jQuery);



// ------------- placeHolder ------------- //
(function($){
$.fn.placeHolder = function(o){
    o = $.extend({
        'classNames': 'placeholder'
    }, o || {});

    return this.each(function(){
        var $label = $(this),
            labelText = $label.text(),
            $input = $('#' + $label.attr('for')),
            isTextarea = ($input.get(0).nodeName.toLowerCase() == 'textarea');

        $input.data('placeholder', labelText);

        if ($input.val() == '' || $input.val() == labelText) {

            if (isTextarea) $input.text(labelText);
            $input.val(labelText).addClass(o.classNames).focus(function(){
                if ($input.val() == labelText) {
                    if (isTextarea) $input.text('');
                    $input.val('');
                }
                $input.removeClass(o.classNames);
            }).blur(function(){
                if ($input.val() == '') {
                    if (isTextarea) $input.text(labelText);
                    $input.val(labelText).addClass(o.classNames);
                }
            });
        }
    });
};
})(jQuery);



/* jSelect */
(function($){
$.fn.jSelect = function(o){
    o = $.extend({
        speed: 'normal'
    }, o || {});

    var $doc = $(document),
        isExpanded = false;

    return this.each(function(){
        var $select = $(this),
            selectWidth = this.offsetWidth,
            $optionArray = $('option', $select),
            $optionSelected = $optionArray.filter(':selected'),
            optionSelectedText = $optionSelected.text(),

            $jSelect = $('<div class="jselect" />'),
            $jSelectTitle = $('<div class="jselect-title" />').appendTo($jSelect),
            $jSelectTitleWrap = $('<div class="jselect-title-wrap" />').appendTo($jSelectTitle),
            $jSelectTitleSPAN = $('<span class="placeholder" />').appendTo($jSelectTitleWrap),
            $jSelectList = $('<div class="jselect-list" />').appendTo($jSelect),
            $jSelectListUL = $('<ul />').appendTo($jSelectList),
            $jSelectListArr = $('<div class="jselect-arr"></div>').appendTo($jSelectTitle);

        $select.hide();
        $jSelect.width(selectWidth);
        $jSelectTitleSPAN.text(optionSelectedText);

        if ($optionSelected.hasClass('placeholder')) {
            $jSelectTitleSPAN.addClass('placeholder');
        }

        $optionArray.each(function(i){
            var $option = $(this);

            if ($option.hasClass('placeholder')) {
                return;
            }

            $('<li />', {
                text: $option.text(),
                click: function(){
                    set($option);
                }
            }).hover(
                function(){
                    $(this).addClass('hover');
                },
                function(){
                    $(this).removeClass('hover');
                }
            ).appendTo($jSelectListUL);
        });

        $jSelect.insertAfter($select);

        $jSelect.click(function(e){
            e.stopPropagation();

            if ($jSelect.hasClass('jselect-expanded')) {
                hide();
            } else {
                if (isExpanded) {
                    hide();
                    show();
                } else {
                    show();
                }
            }
        });

        $doc.click(function(){
            if (isExpanded) {
                hide();
            }
        });

        function show() {
            $jSelect.addClass('jselect-expanded');
            $jSelectList.show();
            isExpanded = true;
        }

        function hide() {
            $('.jselect').removeClass('jselect-expanded');
            $('.jselect-list').hide();
            isExpanded = false;
        }

        function set($option) {
            $jSelectTitleSPAN.text($option.text()).removeClass('placeholder');
            $select.val($option.val()).change();
        }
    });
};
})(jQuery);



/* fBox */
(function($){
$.fn.fBox = function(o){
    var o = $.extend({
        speed: 140
    }, o || {});
    
    var $win = $(window), $doc = $(document), $body = $('body'),
        $fBox, $fBoxBg, $fBoxContent, $fBoxTop, $fBoxBot;

    fBoxInit = function(){
        $('#fBox').remove();

        $body.append(
            $fBox = $('<div id="fBox" />').css({opacity: 0}).show().append(
                $fBoxTop = $('<div class="fbox-top" />'),
                $fBoxBg = $('<div class="fbox-bg" />').append(
                    $fBoxContent = $('<div class="fbox-content" />')
                ),
                $fBoxBot = $('<div class="fbox-bot" />')
            )
        );
    }

    fBoxInit();

    return this.each(function(){
        var $descr = $(this),
            $parent = $descr.parent(),
            parentOffset = $parent.offset();

        $win.resize(function(){
            parentOffset = $parent.offset();
        });

        $parent.hover(
            function(){
                $fBoxContent.html($descr);

                fBoxOffset = {
                    left: parentOffset.left - $fBox.width(),
                    top: parentOffset.top + ($parent.height() / 2) - ($fBox.height() / 2)
                };
                
                if (fBoxOffset.left < 0) {
                    $fBox.addClass('fbox-right');
/*                     $fBoxBg.addClass('fbox-bg-right'); */
                    fBoxOffset.left = parentOffset.left + $parent.width();
                } else {
                    $fBox.removeClass('fbox-right');
/*                     $fBoxBg.removeClass('fbox-bg-right'); */
                }

                $fBox.css({left: fBoxOffset.left, top: fBoxOffset.top + 30}).animate({
                    top: fBoxOffset.top,
                    opacity: 1
                }, {
                    queue: false,
                    duration: o.speed
                });
            },
            function(){
                $fBox.css({opacity: 0, left: -9999});
            }
        );
    });
};
})(jQuery);
