var index=0;
var time_id;
function tree_toggle(event) {
    event = event || window.event
    var clickedElem = event.target || event.srcElement

    if (!hasClass(clickedElem, 'Expand')) {
        return // ���� �� ���
    }

    // Node, �� ������� ��������
    var node = clickedElem.parentNode
    if (hasClass(node, 'ExpandLeaf')) {
        return // ���� �� �����
    }

    // ���������� ����� ����� ��� ����
    var newClass = hasClass(node, 'ExpandOpen') ? 'ExpandClosed' : 'ExpandOpen'
    // �������� ������� ����� �� newClass
    // ������� ������� �������� ������� open|close � ������ �� newClass
    var re =  /(^|\s)(ExpandOpen|ExpandClosed)(\s|$)/
    node.className = node.className.replace(re, '$1'+newClass+'$3')
}


function hasClass(elem, className) {
    return new RegExp("(^|\\s)"+className+"(\\s|$)").test(elem.className)
}
function createGreenPopup(appendTo,header,html,type,position,arrow,controls)
{
    var popup='';
    index++;
    var id_popup='popup_'+index;
    popup += '<div class="green_popup_wrapper" id="'+id_popup+'">';
    popup += '<div id="outer_border">';
    popup += '<div id="green_popup_header">';
    popup += '<div class="green_header_text" id="'+type+'">'+header+'</div>';
    popup += '<div id="green_popup_close"></div>';
    popup += '</div>';
    popup += '<div class="green_popup_inner_wrapper">';
    
    popup += '<div id="top">';
    popup += '<div id="left_top"></div>';
    popup += '<div id="cent_top"></div>';
    popup += '<div id="right_top"></div>';
    popup += '</div>';
    
    popup += '<div id="center">';
    popup += '<div id="left_center"></div>';
    popup += '<div id="cent_center">'+html+'</div>';
    popup += '<div id="right_center"></div>';
    popup += '</div>';
    
    popup += '<div id="bottom">';
    popup += '<div id="left_bottom"></div>';
    popup += '<div id="cent_bottom"></div>';
    popup += '<div id="right_bottom"></div>';
    popup += '</div>';
    if(typeof(controls)!='undefined')
    {
        popup+='<div class="controls">'+controls+'</div>';
    }
    popup += '</div>';
    popup += '</div>';
    if(arrow==true)
    {
        popup += '<div id="green_arrow"></div>';
    }
    popup += '</div>';
    $('body').append(popup);
    var $pop_obj=$('.green_popup_wrapper[id="'+id_popup+'"]');
    var popup_height=$pop_obj.height();
    var popup_width=$pop_obj.width();
    var left;
    var top;
    if(position=='centered')
    {
        left=($(window).width()-popup_width)/2
        top=($(window).height()-popup_height)/2
        $pop_obj.css({
            'position':'fixed'
        });
    }else
    {
        left = appendTo.offset().left-(popup_width-appendTo.width())/2;
        top = appendTo.offset().top-popup_height;
    }
    
    $pop_obj.css({
        'left':left
    });
    $pop_obj.animate({
        'top':top
    },200);
    $('#green_popup_close').live('click',function(){
        var obj=$(this).parent().parent().parent();
        obj.animate({
            'top':'-1000'
        },600,null,function(){
            $(this).remove()
        }
        );
    });
    return $pop_obj
}
function validate_form(form)
{
    var errors=false;
    var $txt_inp=$(form).find('.req_str');
    var $name_inp=$(form).find('.req_name');
    var $comp_inp=$(form).find('.req_comp');
    var $email_inp=$(form).find('.req_email');
    var $num_inp=$(form).find('.req_num');
    var $tel_inp=$(form).find('.req_tel');
    var $checkbox=$(form).find('.req_check');
    var text='';
    $txt_inp.each(function(){
        $(this).removeClass('error');
        if($.trim($(this).val())=='')
        {
            errors=true;
            $(this).addClass('error');
        }
    });
    $tel_inp.each(function(){
        $(this).removeClass('error');
        if($.trim($(this).val()).length<9)
        {
            errors=true;
            $(this).addClass('error');
            text = '<div style="width:250px; padding:5px;"><p>Введіть номера телефонів, за якими з Вами можна сконтактуватися. Не забудьте вказати код міста чи оператора.</p></div>';
            var popup=createBlackPopup($(this),'left', text);
            hint_show(popup);
        }
    });
    $comp_inp.each(function(){
        $(this).removeClass('error');
        if($.trim($(this).val())!='' && $.trim($(this).val()).length<3)
        {
            errors=true;
            $(this).addClass('error');
            text = '<div style="width:250px; padding:5px;"><p>Якщо представляєте якусь  компанію - введіть її назву, якщо ні то залишіть це поле пустим.</p></div>';
            var popup=createBlackPopup($(this),'left', text);
            hint_show(popup); 
        }
    });
    $name_inp.each(function(){
        $(this).removeClass('error');
        var words=$(this).val().split(' ');
        if(words.length<2 || $.trim($(this).val()).length<7)
        {
            errors=true;
            $(this).addClass('error');
            text = '<div style="width:250px; padding:5px;"><p>Введіть Ваше прізвище та ім’я повністю.  Тільки ввівши реальні дані Ви отримаєте контакти.</p></div>';
            var popup=createBlackPopup($(this),'left', text);
            hint_show(popup); 
        }
    });
    $email_inp.each(function(){
        $(this).removeClass('error');
        if(!$.trim($(this).val()).match(/.+@.+\.[a-z]{2,3}/))
        {
            errors=true;
            $(this).addClass('error');
            text = '<div style="width:250px; padding:5px;"><p>Введіть коректний e-mail.</p></div>';
            var popup=createBlackPopup($(this),'left', text);
            hint_show(popup); 
        }
    });
    $num_inp.each(function(){
        $(this).removeClass('error');
        if($.trim($(this).val()).match(/\D/))
        {
            errors=true;
            $(this).addClass('error');
        }
    });
    $checkbox.each(function(){
        $(this).removeClass('error'); 
        $(this).parent().removeClass('error');
        if(!$(this).is(':checked'))
        {
            errors=true;
            $(this).addClass('error'); 
            $(this).parent().addClass('error');
        }
    })
    return !errors
}
function validate_field(object)
{
     $(object).removeClass('error')
    var string=$(object).val();
    var data={
        'words':string.split(' ')
        };
    var url=location.protocol + '//' + location.host;
    $.ajax({
        type:"POST",
        url:url+'/contacts/is_bad_word',
        data:data,
        success:function(response){
            var obj=eval('('+response+')');
            var errors=obj['ERRORS'];
            if(errors.length>0)
            {
                var text = '<div style="width:250px; padding:5px;"><p>Слова ';
                text += errors.join(',')+' заборонені для використання</p></div>';
                if(errors.length==1)
                {
                    text = '<div style="width:250px; padding:5px;"><p>Слово ';
                    text += errors.join(',')+' заборонене для використання</p></div>';
                }
                    					
                var popup=createBlackPopup($(object),'left', text);
                $(object).addClass('error')
                hint_show(popup); 
            }
        }
    })
}
function make_form(form,action,message,callback)
{
    var $input=$(form).find('input');
    var $textarea=$(form).find('textarea');
    var $submit=$(form).find('.button_usefull').eq(0);
    $(form).parent().append('<div class="form_loader"></div>')
    var $loader=$(form).parent().find('.form_loader');
    $input.focus(function(){
        $(this).attr('id','focused')
    });
    $input.blur(function(){
        if($(this).val()==''){
            $(this).attr('id','')
        }else
        {
            validate_field($(this));
        }
    });
    $textarea.focus(function(){
        $(this).attr('id','focused')
    });
    $textarea.blur(function(){
        if($(this).val()==''){
            $(this).attr('id','')
        }
    });
    if(typeof(action)!='undefined')
    {
        $(form).attr('action',action);  
    }
    $submit.click(function(){
        var data=$(form).serialize();
        $.ajax({
            beforeSend:function(){
                if(validate_form($(form)))
                {
                    $(form).css({
                        'opacity':'0.5'
                    });
                    $loader.show()
                    return;
                }
                return false;
            },
            type:'POST',
            url:$(form).attr('action'),
            data:data,
            success:function(response){
                if(response!='ERROR'){
                    $(form).css({
                        'opacity':'1'
                    });
                    $loader.hide();
                    if(typeof(message)!='undefined')
                    {
                        $(form).before(message);
                        $(form).slideUp();
                    }
                    if(typeof(callback)!='undefined')
                    {
                        callback(response);   
                    }
                }else{
                    $(form).before('<h2 class="err_message" style="color:red;text-align:center">Виникла помилка. Спробуйте знову</h2>');
                    $(form).css({
                        'opacity':'1'
                    });
                    $loader.hide();
                    time_id=setTimeout(hide_error,2000);
                }
            }
        });
    })
}
function hide_error()
{
    clearTimeout(time_id);
    $('.err_message').slideUp(600,function(){
        $(this).remove()
        });
}
function button_html(send_id,value,class_button,pos,custom_style)
{
    send_id=typeof(send_id)!='undefined'?send_id:'';
    class_button=typeof(class_button)!='undefined'?class_button:'';
    var addStyle;
    switch(pos)
    {
        case 'left':
            addStyle='float:left;';
            break;
        case 'right':
            addStyle='float:right;';
            break;
        default:
            addStyle='';
            break;
    }
    addStyle+=typeof(custom_style)!='undefined'?custom_style:'';
    var html='<div class="button_usefull"  id="'+send_id+'" style="'+addStyle+'">';
    html+='<div id="left"></div>';
    html+='<div class="'+class_button+'" id="cent">'+value+'</div>';
    html+='<div id="right"></div>';
    html+='</div>';
    return html;
}
function get_all_attrs(elem)
{
    var attrs={};
    $.each(elem[0].attributes,
        function(index,attr){
            attrs[attr.name]=attr.value;
        });
    return attrs;
}
function createBlackPopup(appendTo,type,html)
{
    //console.log(appendTo)
    index++;
    if($('.pop_all'))$('.pop_all').remove();
    var popup='<div class="pop_all" id="'+index+'">';
    popup+='<div class="to_arrow pup_hind">';
    popup+='<div class="pup_hind_dark">';
    popup+='<div id="cont_message_dark">'+html+'</div>';
    popup+='</div></div>';
    switch(type)
    {
        case 'bottom':
            popup+='<div class="arr pup_arr_bot"></div>';
            break;
        case 'top':
            popup+='<div class="arr pup_arr_top"></div>';
            break;
        case 'left':
            popup+='<div class="arr pup_arr_left"></div>';
            break;
        case 'right':
            popup+='<div class="arr pup_arr_right"></div>';
            break;
        default:
            break;
    }
    popup+='</div>';
    $('body').append(popup);
    var $pop_obj=$('.pop_all[id="'+index+'"]');
    var $arr_obj=$pop_obj.find('.arr');
    var $to_arrow=$pop_obj.find('.to_arrow');
    $pop_obj.show();
    var pop_top;
    var pop_left;
    var arrow_top;
    var arrow_left;
    switch(type)
    {
        case 'bottom':
            pop_top=$(appendTo).offset().top-$pop_obj.height()-$arr_obj.height();
            pop_left=$(appendTo).offset().left-$pop_obj.width()/2;
            arrow_top=$to_arrow.height();
            arrow_left=($to_arrow.width()-$arr_obj.width())/2;
            break;
        case 'top':
            pop_top=$(appendTo).offset().top+$arr_obj.height()+$(appendTo).height();
            pop_left=$(appendTo).offset().left-$pop_obj.width()/2;
            arrow_top=2-$arr_obj.height();
            arrow_left=($to_arrow.width()-$arr_obj.width())/2;
            break;
        case 'left':
            pop_top=$(appendTo).offset().top-($pop_obj.height()-$(appendTo).height())/2;
            pop_left=$(appendTo).offset().left+$arr_obj.width()+$(appendTo).width();
            arrow_top=($to_arrow.height()-$arr_obj.height())/2;
            arrow_left=2-$arr_obj.width();
            break;
        case 'right':
            pop_top=$(appendTo).offset().top-($pop_obj.height()-$(appendTo).height())/2;
            pop_left=$(appendTo).offset().left-$pop_obj.width()-$arr_obj.width();
            arrow_top=($to_arrow.height()-$arr_obj.height())/2;
            arrow_left=$to_arrow.width();
            break;
        default:
            break;
    }
    $pop_obj.css({
        'left':pop_left,
        'top':pop_top
    });
    $arr_obj.css({
        'left':arrow_left,
        'top':arrow_top
    })
    $pop_obj.hide();
    return $pop_obj;
}
