var application = {
    loadScript: function(source){
        var head = document.getElementsByTagName("head")[0];
        script=document.createElement('script');
        script.type='text/javascript';
        script.src=source;
        script.charset="windows-1251";
        head.appendChild(script);
    },
    langMas: {
        ru:{
            search_string: "Поиск...",
            comment_author: "Ваше имя",
            comment_email: "Email",
            comment_text: "Текст сообщения",
            feedback_name: "Название организации/ваше имя",
            feedback_phone: "Телефон",
            feedback_email: "E-mail",
            feedback_text: "Текст",
            feedback_fax:"Факс",
            feedback_mobile:"Мобильный",
            feedback_address:"Адрес",
            feedback_site:"Сайт",
            feedback_opening_hours:"Время работы",
            feedback_icq:"ICQ",
            feedback_skype:"Skype",
            feedback_description:"Описание услуг"
        },
	en:{
            search_string: "Поиск...",
            comment_author: "Ваше имя",
            comment_email: "Email",
            comment_text: "Текст сообщения",
            feedback_name: "Название организации/ваше имя",
            feedback_phone: "Телефон",
            feedback_email: "E-mail",
            feedback_text: "Текст",
            feedback_fax:"Факс",
            feedback_mobile:"Мобильный телефон",
            feedback_address:"Адрес",
            feedback_site:"Сайт",
            feedback_opening_hours:"Время работы",
            feedback_icq:"ICQ",
            feedback_skype:"Skype",
            feedback_description:"Описание услуг"
        }
	},
    lang:{},
    langFun: function(){
        curLang = $('#lang').text();
        switch(curLang){
            case'ru':
                this.lang = this.langMas.ru;
                break;
            case'en':
                this.lang = this.langMas.en;
                break;
        }
    },
    labels: function(self){
        $.each(self.lang, function(node, message){
            var nodeObj = $('.' + node);
            if (nodeObj.length){
                nodeObj.focus(function(){
                    if ($(this).hasClass('pale-text'))
                        $(this).removeClass('pale-text').val('');
                }).blur(function(){
                    if ($.trim($(this).val()) == '')
                        $(this).addClass('pale-text').val(message);
                });
                if ($.trim(nodeObj.val()) == ''){
                    nodeObj.addClass('pale-text').val(message);
                }
            }
        });
        $('form').submit(function(){
            $(this).find('.pale-text').val('');
        });
    },
    ajaxTabs: {
        o: {
            n: {
                tabs: '.bookmarks',
                resConteiter: '#result-conteiner'
            }
        },
        n: {
            tabs: null,
            resConteiter: null
        },
        action:false,
        init: function(parent)
        {
            var self = this;
            self.n.tabs = $(self.o.n.tabs);
            if (!self.n.tabs.length)
                return;
            self.n.resConteiter = $(self.o.n.resConteiter);
            if (!self.n.resConteiter.length)
                return;
            self.n.tabs.find('a').each(function(){
                var link = $(this);
                var tab = link.parent().parent();
                var comments = $('.comments');
                link.click(function(){
                    if(self.action)return false;
                    self.action = true;
                    $.ajax({
                        url: '/ajax'+link.attr('href'),
                        beforeSend: function() {
                            self.n.tabs.children('.active').removeClass('active');
                            tab.addClass('active');
                            $(self.n.resConteiter).html('<div class="pre-load"></div>');
                        },
                        success: function(data){
                            $(self.n.resConteiter).html(data);
                            self.action = false;
                            self.initVideo(self);
                            parent.titleImg.init(parent);
                        },
                        dataType: 'html'
                    });
                    return false;
                });
            });
            $('#ajax-send-mail-client').click(function(){
                var link = $(this);
                if(self.action)return false;
                self.action = true;
                $.ajax({
                    url: '/ajax-mail/'+link.attr('href').replace(/#/g,''),
                    beforeSend: function() {
                        self.preShowVideo(self);
                    },
                    success: function(data){
                        self.action = false;
                        self.showMailForm(self,data);
                        parent.labels(parent);
                        $('#client_feedback_form').addClass('active');
                        $('#client_feedback_form').submit(function(){
                            parent.sendMail.ajaxSendMail($(this),parent.sendMail,parent);
                            return false;
                        });
                    },
                    dataType: 'html'
                });
                return false;
            });
        },
        initVideo: function(self)
        {
            $('.a-video').each(function(){
                var link = $(this);
                link.click(function(){
                    if(self.action)return false;
                    self.action = true;
                    $.ajax({
                        url: '/ajax'+link.attr('href'),
                        beforeSend: function() {
                            self.preShowVideo(self);
                        },
                        success: function(data){
                            self.action = false;
                            self.showVideo(self,data);
                        },
                        dataType: 'html'
                    });
                    return false;
                });
            });
        },
        preShowVideo: function(self)
        {
            $('#video-view').show();
            $('#video-view-bg').css('opacity', 0.75).height($('body').outerHeight()).click(function(){
                return self.closeVideo(self);
            });
            //$('#video-view-block').click(function(){
            //    return self.closeVideo(self);
            //});
        },
        showVideo: function(self,data)
        {
            var top = (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
            $('#video-view-block').css('top', (top)+150);
            $('#video-view-content').html(data);
            $('#video-view-close').click(function(){
                return self.closeVideo(self);
            });
        },
        closeVideo: function(self)
        {
            self.action = false;
            $('#video-view-content').html('');
            $('#video-view').fadeOut();
            return false;
        },
        showMailForm: function(self,data)
        {
            var top = (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
            $('#video-view-block').css('top', (top)+150);
            $('#video-view-content').html(data);
            $('#video-view-close').click(function(){
                return self.closeVideo(self);
            });
        }
    },
    showMail: {
        init: function(parent)
        {
            var self = this;
            $('.show-mail').click(function(){
                var link = $(this);
                $.ajax({
                    url: '/upage/'+link.attr('href').replace(/#/g,'')+'.email',
                    success: function(data){
                        var mail = $(data).find('value').text();
                        link.text(mail).attr('href','mailto:'+mail).unbind();
                    },
                    dataType: 'xml'
                });
                return false;
            });
        }
    },
    sendMail:{
        current:{
            sending:false
        },
        init: function(parent)
        {
            var self = this;
            $('#feedback_form').submit(function(){
                self.ajaxSendMail($(this),self,parent);
                return false;
            });
            $('#add_company_feedback_form').submit(function(){
                self.ajaxAddCompanySendMail($(this),self,parent);
                return false;
            });
        },
        ajaxSendMail:function(form,self,parent)
        {
            if(self.current.sending) return false;
            self.current.sending = true;
            
            $(this).find('.pale-text').val('');
            form.find('div').removeClass('error');
            $('.success').hide();
            $('.loader').show();
            
            var feedback_name = $.trim($(form).find('.feedback_name').val());
            var feedback_email = $.trim($(form).find('.feedback_email').val());
            var feedback_phone = $.trim($(form).find('.feedback_phone').val());
            var feedback_text = $.trim($(form).find('.feedback_text').val());
            var system_form_id = $.trim($(form).find('.system_form_id').val());
            var system_email_to = $.trim($(form).find('.system_email_to').val());
            var captcha = $.trim($(form).find('.captcha').val());
            var client = $.trim($(form).find('.client').val());
            var send_data = {
                'ajax':0,
                'captcha':0,
                'client':0,
                'system_form_id':0,
                'system_email_to':0,
                'data':{
                    'new':{
                        'name':'',
                        'email':'',
                        'phone':'',
                        'text':''
                    }
                }
            };
            send_data['ajax'] = 1;
            send_data['system_form_id'] = system_form_id;
            send_data['system_email_to'] = system_email_to;
            if(client)send_data['client'] = client;
            if(captcha)send_data['captcha'] = captcha;
            if(feedback_name)send_data['data']['new']['name'] = feedback_name;
            if(feedback_email)send_data['data']['new']['email'] = feedback_email;
            if(feedback_phone)send_data['data']['new']['phone'] = feedback_phone;
            if(feedback_text)send_data['data']['new']['text'] = feedback_text;
            $.ajax({
                type: "POST",
                data:send_data,
                url: form.attr('action'),
                success: function(data){
                    if(data.error){
                        self.errorMail(data,form,self,parent);
                    }else{
                        self.okMail(form,self,parent);
                    }
                    self.current.sending = false;
                    $('.loader').hide();
                },
                dataType: 'json'
            });
            return false;
        },
        ajaxAddCompanySendMail:function(form,self,parent)
        {
            if(self.current.sending) return false;
            self.current.sending = true;
            
            $(this).find('.pale-text').val('');
            form.find('div').removeClass('error');
            $('.success').hide();
            form.find('.loader').show();
            
            var feedback_name=$.trim($(form).find('.feedback_name').val());
            var feedback_rubric=$.trim($(form).find('.feedback_rubric').val());
            var feedback_email=$.trim($(form).find('.feedback_email').val());
            var feedback_phone=$.trim($(form).find('.feedback_phone').val());
            var feedback_fax=$.trim($(form).find('.feedback_fax').val());
            var feedback_mobile=$.trim($(form).find('.feedback_mobile').val());
            var feedback_address=$.trim($(form).find('.feedback_address').val());
            var feedback_site=$.trim($(form).find('.feedback_site').val());
            var feedback_opening_hours=$.trim($(form).find('.feedback_opening_hours').val());
            var feedback_icq=$.trim($(form).find('.feedback_icq').val());
            var feedback_skype=$.trim($(form).find('.feedback_skype').val());
            var feedback_description=$.trim($(form).find('.feedback_description').val());
            var system_form_id=$.trim($(form).find('.system_form_id').val());
            var system_email_to=$.trim($(form).find('.system_email_to').val());
            var captcha=$.trim($(form).find('.captcha').val());
            var send_data={
                'ajax':0,
                'captcha':0,
                'system_form_id':0,
                'system_email_to':0,
                'data':{
                    'new':{
                        'rubric':'',
                        'name':'',
                        'email':'',
                        'phone':'',
                        'fax':'',
                        'mobile':'',
                        'address':'',
                        'opening_hours':'',
                        'icq':'',
                        'skype':'',
                        'site':'',
                        'description':''
                    }
                }
            };
            send_data['ajax'] = 1;
            send_data['system_form_id'] = system_form_id;
            send_data['system_email_to'] = system_email_to;
            if(captcha)send_data['captcha']=captcha;
            if(feedback_name)send_data['data']['new']['name']=feedback_name;
            if(feedback_rubric)send_data['data']['new']['rubric']=feedback_rubric;
            if(feedback_email)send_data['data']['new']['email']=feedback_email;
            if(feedback_phone)send_data['data']['new']['phone']=feedback_phone;
            if(feedback_fax)send_data['data']['new']['fax']=feedback_fax;
            if(feedback_mobile)send_data['data']['new']['mobile']=feedback_mobile;
            if(feedback_address)send_data['data']['new']['address']=feedback_address;
            if(feedback_site)send_data['data']['new']['site']=feedback_site;
            if(feedback_opening_hours)send_data['data']['new']['opening_hours']=feedback_opening_hours;
            if(feedback_icq)send_data['data']['new']['icq']=feedback_icq;
            if(feedback_skype)send_data['data']['new']['skype']=feedback_skype;
            if(feedback_description)send_data['data']['new']['description']=feedback_description;
            $.ajax({
                type: "POST",
                data:send_data,
                url: form.attr('action'),
                success: function(data){
                    if(data.error){
                        self.errorMail(data,form,self,parent);
                    }else{
                        self.okMail(form,self,parent);
                    }
                    self.current.sending = false;
                    form.find('.loader').hide();
                },
                dataType: 'json'
            });
            return false;
        },
        okMail:function(form,self,parent)
        {
            $('.success').show();
            form.get(0).reset();
            parent.labels(parent);
        },
        errorMail:function(error,form,self,parent)
        {
            if(error.captcha){
                form.find('.captcha_div').addClass('error');
            };
            if(error.text){
                form.find('.feedback_text').parent().addClass('error');
            };
            if(error.description){
                form.find('.feedback_description').parent().addClass('error');
            };
            if(error.phone){
                form.find('.feedback_phone').parent().addClass('error');
            };
            if(error.name){
                form.find('.feedback_name').parent().addClass('error');
            };
            parent.labels(parent);
        }
    },
    targetBlank: {
        init: function(parent)
        {
            $('.site-address').attr('target','_blank')
        }
    },
    titleImg: {
        init: function(parent)
        {
            var self = this;
            $('.text').find('img').each(function(){
                var img = $(this);
                var src = img.attr('src');
                img.attr('src', '');
                img.attr('src', src);
            });
            $('.text').find('img').load(function(){
                var img = $(this);
                var parent = img.parent();
                img.wrap(function() {
                    if(parent.attr('style')=='text-align: center;')
                    return '<div class="img-div" style="margin: 0 auto;"/>';
                    else
                    return '<div class="img-div" style="'+img.attr('style')+'"/>';
                }).removeAttr('style').parent().width(img.outerWidth()+10).append(function() {
                    return '<p>' + img.attr('title') + '</p>';
                }).find('p').width(img.outerWidth());
            });
        }
    },
    ajaxComments:{
        current:{
            link:null,
            form:null,
            sending:false
        },
        init:function(parent)
        {
            var self = this;
            $('.comments-reply').click(function(){
                var link = $(this);
                var id = link.attr('id').replace(/comments-reply-/g,'');
                if(link.hasClass('active_comment'))return false;
                if(self.current.link)self.current.link.removeClass('active_comment');
                if(self.current.form)self.current.form.remove();
                var target = $('#comment_'+id);
                var form = $('#form_addcomment').clone().appendTo(target);
                form.addClass('form_addsubcomment');
                form.attr('id','form_addcomment_'+id);
                form.attr('action','/comments/post/'+id+'/');
                form.find('.pale-text').removeClass('pale-text');
                form.find('.intext').find('input').val('');
                parent.labels(parent);
                link.addClass('active_comment');
                self.current.link = link;
                self.current.form = form;
                form.find('.comments-abort').click(function(){
                    if(self.current.sending) return false;
                    self.current.link.removeClass('active_comment');
                    self.current.form.remove();
                    return false;
                });
                form.submit(function(){
                    self.ajaxAddComment($(this),self,parent);
                    return false;
                });
                return false;
            });
            $("#form_addcomment").submit(function(){
                self.ajaxAddComment($(this),self,parent);
                return false;
            });
        },
        ajaxAddComment:function(form,self,parent)
        {
            if(self.current.sending) return false;
            self.current.sending = true;
            
            $(this).find('.pale-text').val('');
            form.find('.loader').show();
            
            form.find('div').removeClass('error');
            var comment_author=$.trim($(form).find('.comment_author').val());
            var comment_email=$.trim($(form).find('.comment_email').val());
            var comment_text=$.trim($(form).find('.comment_text').val());
            var captcha=$.trim($(form).find('.captcha').val());
            var send_data = 'ajax=1&comment=';
            if(comment_text)send_data+=comment_text;
            if(comment_author)send_data+='&author_nick='+comment_author;
            if(comment_email)send_data+='&author_email='+comment_email;
            if(captcha)send_data+='&captcha='+captcha;
            $.ajax({
                type: "POST",
                data: send_data,
                url: $(form).attr('action'),
                success: function(data){
                    if(data.error){
                        self.errorComment(data,form,self,parent);
                    }else{
                        self.addComment(data.message,form,self,parent);
                    }
                    self.current.sending = false;
                    form.find('.loader').hide();
                },
                dataType: 'json'
            });
            return false;
        },
        addComment:function(comment,form,self,parent)
        {
            if(form.attr('id') == 'form_addcomment'){
                var newComment = form.parent().children('ul').append(comment);
                form.get(0).reset();
            }else{
                var newComment = form.parent().parent().children('ul').append(comment);
                self.current.link.removeClass('active_comment');
                self.current.form.remove();
            }
            window.location.hash = "#"+newComment.find('.comment').attr('id');
            newComment.find('.new').fadeOut(1000);
            self.init(parent);
            
        },
        errorComment:function(error,form,self,parent)
        {
            if(error.captcha){
                form.find('.captcha_div').addClass('error');
            };
            if(error.comment){
                form.find('.comment_text_div').addClass('error');
            };
            if(error.nick){
                form.find('.comment_author_div').addClass('error');
            };
            parent.labels(parent);
        }
    }
}

$(document).ready(function(){
    (function() {
        this.langFun();
        this.labels(this);
        this.showMail.init(this);
        this.sendMail.init(this);
        this.titleImg.init(this);
        this.targetBlank.init(this);
        this.ajaxTabs.init(this);
        //this.ajaxComments.init(this);
        //this.loadScript('http://vkontakte.ru/js/api/openapi.js?9');
        //this.loadScript('http://vkontakte.ru/js/api/share.js?9');
    }).call(application);
    L.create();
    //VK.init({apiId: 1946826, onlyWidgets: true});
});

