$(document).ready(function() {
    $(document).pngFix();
    if(($('#UserStateId').length > 0 && $('#UserCityId').length > 0) || ($('#JobStateId').length > 0 && $('#JobCityId').length > 0)) { dUp.getCities(); }
    if($('#noticia').length > 0) { dUp.setupnoticia(); }
    if($('.expandform').length > 0) { dUp.expandForms(); }
    if($('.expandport').length > 0) { dUp.expandFormPort(); }
    if($('.spreadcodes').length > 0) { dUp.spreadcode(); }
    if($('.userimgholder').length > 0) { dUp.userpanel(); }
    if($('.bigcont').length > 0) { dUp.accordion(); }
    if($('.jobscont').length > 0) { dUp.candidate(); }
    if($('#notif').length > 0) { dUp.notif(); }
    if($('#portlist').length > 0) { dUp.portFunc(); }
    if($('#UserBirth').length > 0) {
        $("#UserBirth").mask("99/99/9999", {placeholder:" "});
    }
    dUp.jHint();
    if($('#vai').length > 0) { dUp.getBmDetails(); }
    if($('.loadTags').length > 0) { dUp.sTag(); }
    if($('.bmRes').length > 0) { dUp.websnap(); }
    if($('.bmarrow').length > 0) { dUp.giveUp(); }
    if($('#ImgUrl').length > 0) { dUp.imgPreview(); }
    if($('#colorpicker').length > 0) { dUp.colorPicker(); }
    if($('.favheart').length > 0) { dUp.imgFav(); }
    if($('#iprBigImg').length > 0) { dUp.getColors(); }
    if($('.destaques').length > 0) { dUp.blogDestaques(); }
    if($('.albumMpCont').length > 0) { dUp.albumRotate(); }
    if($('.inspImgMp').length > 0) { dUp.inspImgMp(); }
    if($('.fanstar').length > 0) { dUp.markAsFan(); }
    
    /*****************************************************/
    
    FLIR.init({path: fullurl+'facelift/'}, new FLIRStyle({mode:'wrap', realFontHeight:true}));
    
    $('.content h1').each(function() { FLIR.replace(this); })
    $('.content h2').each(function() { FLIR.replace(this); })
})

var dUp = {
    markAsFan: function() {
        $('.fanstar').click(function() {
            elm = $(this);
            
            if(elm.hasClass('working') == false) {
                if(elm.hasClass('on') == true) {
                    elm.addClass('working');
                    
                    $.ajax({
                        type: "POST",
                        data: {user: elm.attr('href')},
                        url: fullurl+'users/fanrem',
                        dataType: "json",
                        error: function() {
                            elm.removeClass('working');
                            dUp.displayFlash('error', 'Ops! Ocorreu um erro inesperado! Tente novamente ou entre em contato conosco!');
                        },
                        success: function(d) {
                            if(d.status == 'success') {
                                elm.removeClass('on').removeClass('working').addClass('off').attr('title', 'Quero virar fã deste profissional').html('Quero virar fã deste profissional');
                            } else {
                                elm.removeClass('working');
                            }
                            
                            dUp.displayFlash(d.status, d.msg);
                        }
                    })
                } else if(elm.hasClass('off') == true) {
                    elm.addClass('working');
                    
                    $.ajax({
                        type: "POST",
                        data: {user: elm.attr('href')},
                        url: fullurl+'users/fanadd',
                        dataType: "json",
                        error: function() {
                            elm.removeClass('working');
                            dUp.displayFlash('error', 'Ops! Ocorreu um erro inesperado! Tente novamente ou entre em contato conosco!');
                        },
                        success: function(d) {
                            if(d.status == 'success') {
                                elm.removeClass('off').removeClass('working').addClass('on').attr('title', 'Quero parar de seguir este profissional').html('Quero parar de seguir este profissional');
                            } else {
                                elm.removeClass('working');
                            }
                            
                            dUp.displayFlash(d.status, d.msg);
                        }
                    })
                }
            } else {
                alert('Aguarde enquanto trabalhamos em sua última requisição...');
            }
            
            return false;
        })
    },
    
    inspImgMp: function() {
        $('.inspImgMp').bind('mouseenter', function() {
            $(this).find('.inspDetails:first').show();
        }).bind('mouseleave', function() {
            $(this).find('.inspDetails:first').hide();
        })
    },
    
    albumRotate: function() {
        $('.albumMpCont').innerfade({
            animationtype: 'fade',
            speed: 1000,
            timeout: 3500,
            containerheight: '300px'
        })
    },
    
    blogDestaques: function() {
        $('.destaques').innerfade({
            animationtype: 'fade',
            speed: 2000,
            timeout: 5500,
            containerheight: '220px'
        })
    },
    
    getColors: function() {
        var Img = $('#iprBigImg');
        
        $.ajax({
            url: fullurl+'imgs/getcolors',
            data: {img: Img.attr('rel')},
            type: "POST",
            dataType: "json",
            success: function(d) {
                for(var i = 0; i < d.length; i++) {
                    $('<div/>').css({
                        position: "absolute",
                        left: d[i].x - 15,
                        top: d[i].y - 15,
                        height: 28,
                        width: 28,
                        backgroundColor: "#"+d[i].hex,
                        zIndex: 1000+i
                    }).addClass('colorPrw').attr({rel: d[i].hex, title: d[i].hex}).appendTo('.imgPosCont')
                }
                
                $('.colorPrw').css({cursor: "pointer"}).hide();
                
                $('.imgPosCont').css({width: Img.width()}).bind('mouseenter', function() {
                    $('.colorPrw').fadeIn('fast', function() {
                        $(this).each(function() {
                            var tElm = $(this);
                            var p = tElm.position();
                            
                            tElm.bind('mouseenter', function() {
                                $(this).stop().animate({
                                    width: 38,
                                    height: 38,
                                    top: p.top - 5,
                                    left: p.left - 5
                                }, 100)
                            }).bind('mouseleave', function() {
                                $(this).stop().animate({
                                    width: 28,
                                    height: 28,
                                    top: p.top,
                                    left: p.left
                                }, 100)
                            }).bind('click', function() {
                                window.location = fullurl + 'imgs/index/color:'+$(this).attr('rel');
                            })
                        })
                    });
                }).bind('mouseleave', function() {
                    $('.colorPrw').fadeOut('fast', function() {
                        $(this).unbind('mouseenter').unbind('mouseleave').unbind('click');
                    });
                })
            }
        })
    },
    
    toHex: function(rgb) {
        return "#" + dUp.Hex(rgb[0]) + dUp.Hex(rgb[1]) + dUp.Hex(rgb[2]);
    },
    
    Hex: function(x) {
        hexDigits = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
        return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
    },
    
    imgFav: function() {
        $('.favheart').click(function() {
            var elm = $(this);
            var favId = $(this).attr('id');
            var tCount = elm.html();
            
            if(elm.hasClass('noFav')) {
                return;
            }
            
            if(elm.hasClass('working') == false) {
                if(elm.hasClass('off') == true) {
                    elm.addClass('working');
                    
                    $.ajax({
                        type: "POST",
                        data: {fav: favId},
                        url: fullurl+'inspiracao/fav',
                        dataType: "json",
                        beforeSend: function() { elm.html('. . .'); },
                        error: function() {
                            dUp.displayFlash('error', 'Ops! Ocorreu um erro inesperado! Tente novamente ou entre em contato conosco!');
                            elm.html(tCount).removeClass('working');
                        },
                        success: function(d) {
                            if(d.status == 'error') {
                                elm.html(tCount).removeClass('working');
                            } else {
                                elm.removeClass('working').removeClass('off').addClass('on').attr('title', 'Clique aqui para remover esta imagem dos seus favoritos!').html(d.count);
                            }
                            
                            dUp.displayFlash(d.status, d.msg);
                        }
                    })
                } else if(elm.hasClass('on') == true) {
                    elm.addClass('working');
                    
                    $.ajax({
                        type: "POST",
                        data: {fav: favId},
                        url: fullurl+'inspiracao/rem',
                        dataType: "json",
                        beforeSend: function() { elm.html('. . .'); },
                        error: function() {
                            dUp.displayFlash('error', 'Ops! Ocorreu um erro inesperado! Tente novamente ou entre em contato conosco!');
                            elm.html(tCount).removeClass('working');
                        },
                        success: function(d) {
                            elm.removeClass('working').removeClass('on').addClass('off').attr('title', 'Clique aqui para favoritar esta imagem!').html(d.count);
                            dUp.displayFlash(d.status, d.msg);
                        }
                    })
                }
            } else {
                alert('Aguarde enquanto trabalhamos em sua última requisição...');
            }
            
            return false;
        })
    },
    
    colorPicker: function() {
        var mElm = $('#ImgColor');
        
        if(mElm.val() != "") {
            mElm.css({backgroundColor: mElm.val()})
        }
        
        mElm.focus(function() {
            var Color = $(this).val();
            
            $.farbtastic("#colorpicker", function(color) {
                mElm.val(color).css({backgroundColor: color});
            }).setColor(Color);
            
            $(this).bind('keyup', function() {
                var Color = $(this).val();
                $.farbtastic("#colorpicker").setColor(Color);
            });
            
            $('#colorpicker').fadeIn();
        }).blur(function() {
            $('#colorpicker').fadeOut();
            mElm.unbind('keyup');
        })
    },
    
    imgPrw: function(elm) {
        if(elm.val() != "" && elm.val() != dUp.curImgPrw) {
            var ImgSrc = elm.val();
            var PrvSrc = $('.imgPreview').attr('src');
            
            var NewImage = $('<img src="'+ImgSrc+'" alt="Preview" class="imgPreview" />')
            .css({display: "none"})
            .error(function() {
                return;
            })
            .load(function() {
                var X = $(this).width();
                var Y = $(this).height();
                var nX = 300;
                var nY = (Y / X) * nX;
                
                $(this).css({
                    width: nX,
                    height: nY
                });
                
                $('.imgPreview').hide("fast", function() {
                    $(this).remove();
                });
                
                $(this).appendTo('.imgPrevCont').show('fast');
            });
            
            dUp.curImgPrw = ImgSrc;
        }
    },
    
    imgPreview: function() {
        var mElm = $('#ImgUrl');
        
        dUp.curImgPrw = "";
        
        if(mElm.val() != "") { dUp.imgPrw(mElm) }
        
        mElm.blur(function() {
            dUp.imgPrw($(this));
        });
    },
    
    giveUp: function() {
        $('.bmarrow').click(function() {
            elm = $(this);
            bmId = $(this).attr('id');
            tCount = $(this).html();
            
            if(elm.hasClass('noUp')) {
                return;
            }
            
            if(elm.hasClass('working') == false) {
                if(elm.hasClass('off') == true) {
                    elm.addClass('working');
                    
                    $.ajax({
                        type: "POST",
                        data: {bm: bmId},
                        url: fullurl+'ups/add',
                        dataType: "json",
                        beforeSend: function() { elm.html('. . .'); },
                        error: function() {
                            dUp.displayFlash('error', 'Ops! Ocorreu um erro inesperado! Tente novamente ou entre em contato conosco!');
                            elm.html(tCount).removeClass('working');
                        },
                        success: function(d) {
                            if(d.status == 'error') {
                                elm.removeClass('working').html(tCount);
                            } else {
                                elm.removeClass('working').removeClass('off').addClass('on').html(d.count).attr('title', 'Clique aqui para remover seu Up!');
                            }
                            
                            dUp.displayFlash(d.status, d.msg);
                        }
                    })
                } else if(elm.hasClass('on') == true) {
                    elm.addClass('working');
                    
                    $.ajax({
                        type: "POST",
                        data: {bm: bmId},
                        url: fullurl+'ups/remove',
                        dataType: "json",
                        beforeSend: function() { elm.html('. . .'); },
                        error: function() {
                            dUp.displayFlash('error', 'Ops! Ocorreu um erro inesperado! Tente novamente ou entre em contato conosco!');
                            elm.html(tCount).removeClass('working');
                        },
                        success: function(d) {
                            elm.removeClass('working').removeClass('on').addClass('off').html(d.count).attr('title', 'Clique aqui para dar um Up!');
                            
                            dUp.displayFlash(d.status, d.msg);
                        }
                    })
                }
            } else {
                alert('Aguarde enquanto trabalhamos em sua última requisição...');
            }
            
            return false;
        })
    },
    
    websnap: function() {
        $('.bmRes').each(function() {
            var Link = $(this).find('.bmLink:first');
            
            var Img = $('<img src="http://images.websnapr.com/?size=S&key=Zbt68d83YSEE&url='+Link.attr('href')+'" alt="'+Link.attr('title')+'" />')
                        .css({display: "none"
                             ,position: "absolute"
                             ,border: '1px solid #FF0000'})
                        .appendTo($(this));
                        
            Link.bind('mouseenter', function() {
                $().mousemove(function(e) {
                    Img.css({
                        top: e.pageY - 76,
                        left: e.pageX + 25
                    })
                })
                Img.show();
            }).bind('mouseleave', function() {
                Img.hide();
            })
        })
    },
    
    sTag: function() {
        $.ajax({
            url: fullurl + 'tags/getall',
            dataType: 'json',
            success: function(d) {
                $('.loadTags').tagSuggest({
                    tags: d,
                    separator: ", ",
                    tagWrap: 'div',
                    tagContainer: 'div',
                    limit: 5,
                    sort: true
                })
            }
        })
    },
    
    getBmDetails: function() {
        if($('.form-error').length > 0) {
            $('#vai').remove();
            $('#BookmarkUrl').removeAttr('style').addClass('longinput');
            $('#BookmarkDetails').show();
        } else {
            $('#BookmarkUrl').focus();
            
            $('#vai').click(function() {
                var tBtn = $(this);
                
                var Url = $('#BookmarkUrl').val();
                var eUrl = Url.split("/");
                if(eUrl[0] != "http:") {
                    Url = "http://"+Url;
                    $('#BookmarkUrl').val(Url);
                }
                
                $.ajax({
                    dataType: "json",
                    data: {url: Url},
                    type: "POST",
                    url: fullurl+'bookmarks/getdetails/',
                    beforeSend: function() {
                        tBtn.attr({value: 'Aguarde...', disabled: 'disabled'})
                    },
                    success: function(d) {
                        if(d.status == 'error') {
                            dUp.displayFlash('error', 'Ops! Ocorreu algum erro. O endereço pode ser inválido ou ocorreu algum erro interno. Tente novamente ou entre em contato!');
                            tBtn.attr({value: 'Vai'}).removeAttr('disabled');
                        } else if(d.status == 'neutral') {
                            window.location = fullurl+'bookmarks/edit/'+d.id;
                        } else {
                            $('#BookmarkTitle').val(d.url);
                            $('#BookmarkDetails').show('slow');
                            $('#BookmarkUrl').removeAttr('style').addClass('longinput');
                            tBtn.remove();
                            
                            if(d.url == "") {
                                $('#BookmarkTitle').focus();
                            } else {
                                $('#BookmarkTags').focus();
                            }
                        }
                    },
                    erro: function() {
                        dUp.displayFlash('error', 'Ops! Nosso sistema não conseguiu completar sua requisição. Tente novamente ou entre em contato com o suporte!');
                        tBtn.attr({value: 'Vai'}).removeAttr('disabled');
                    }
                });
                
                return false;
            })
        }
    },
    
    spreadcode: function() {
        $('.activateYeah').show();
        
        $('.spread').click(function() {
            $('.spreadcodes').slideToggle('slow');
            return false;
        })
    },
    
    jHint: function() {
        if($('.jHint').length > 0) {
            var Count = 1;
            
            $('.jHint').each(function() {
                var mElm = $(this);
                var mElmCopy = mElm.clone();
                
                mElmCopy.css({
                    width: "300px",
                    padding: "8px",
                    border: "2px solid #CCC",
                    backgroundColor: "#FFF",
                    display: "none",
                    position: "absolute"
                }).attr({id: "jHint"+Count}).appendTo('body');
                
                var mElmOffset = mElmCopy.height() / 2;
                
                var tImg = $('<img src="'+fullurl+'img/halp.jpg" />').bind('mouseenter', function() {
                    $().mousemove(function(e) {
                        mElmCopy.css({left: e.pageX+20, top: e.pageY - mElmOffset});
                    });
                    mElmCopy.fadeIn();
                }).bind('mouseleave', function() {
                    mElmCopy.fadeOut();
                })
                
                mElm.replaceWith(tImg);
                Count++;
            })
        }
    },
    
    portFunc: function() {
        dUp.zindex = 999;
        
        $('#portlist').find('li').each(function() {
            var liElm = $(this);
            var imgElm = $(this).find('.imgPreview');
            
            imgElm.css({
                position: "absolute",
                opacity: '0.80',
                zIndex: 9999
            });
            
            liElm.mouseover(function() {
                var x = this.offsetLeft;
                var y = this.offsetTop;
                
                liElm.css({zIndex: dUp.zindex});
                dUp.zindex++;
                
                if(liElm.hasClass('order') == false) {
                    $().mousemove(function(e){
                        imgElm.css({
                            left: (e.pageX - x)+15,
                            top: (e.pageY - y)-60
                        })
                    });
                    imgElm.show();
                }
            }).mouseout(function() {
                imgElm.hide();
            })
        });
        
        $('#portOrder').click(function() {
            var liElm = $('#portlist li');
            
            if($(this).attr('class') == 'toOrder') {
                $(this).attr('value', 'Ok! Terminei de ordenar meus trabalhos!').removeClass('toOrder');
                liElm.addClass('order');
                
                $('#portlist').sortable({
                    axis: 'y',
                    opacity: '0.5',
                    placeholder: 'placeholder'
                });
            } else {
                var btElm = $(this)
                var orderIds = $('#portlist').sortable('toArray');
                var thisOrder = orderIds.join(',');
                
                $('#portlist').sortable('destroy').css({position: "static"});
                liElm.removeClass('order');
                
                $.ajax({
                    type: "POST",
                    url: fullurl+'users/orderport/',
                    dataType: "json",
                    data: {order: thisOrder},
                    beforeSend: function() {
                        btElm.attr('value', 'Aguarde...').attr({disabled: "disabled"})
                    },
                    success: function(r) {
                        if(r.status == 'success') {
                            var message = "Suas imagens foram ordenadas com sucesso! Oba!";
                        } else {
                            var message = "Ops! Ocorreu um erro ao ordenar suas imagens. Tente novamente ou entre em contato conosco!";
                        }
                        
                        dUp.displayFlash(r.status, message);
                        btElm.removeAttr('disabled').addClass('toOrder').attr('value', 'Ordenar trabalhos');
                    }
                })
            }
        })
    },
    
    displayFlash: function(status, msg) {
        if($('#notif').length > 0) { $('#notif').remove(); }
        
        $('<div id="notif"><div id="flashMessage" class="message"><div class="'+status+'">'+msg+'</div></div></div><hr />').appendTo('body');
        this.notif();
    },
    
    notif: function() {
        $('<img src="'+fullurl+'img/bt_close.png" />').css({
            float: "right",
            cursor: "pointer",
            marginTop: "5px"
        }).click(function() {
            $('#notif').slideUp("fast", function() {
                $('#notif').remove();
            });
        }).prependTo('#flashMessage');
        
        $('#notif').slideDown("fast");
    },
    
    candidate: function() {
        cont = $('.jobscont');
        link = cont.find('h3:first');
        div = link.next();
        area = window.location.hash;
        
        div.hide();
        link.addClass('h3inactive').css({cursor: "pointer"});
        
        link.click(function() {
            if(div.css("display") == "none") {
                div.show("fast");
                window.location.hash = "candidatar";
                $(this).removeClass('h3inactive').addClass('h3active');
            }
        });
        
        if(area.length > 0) {
            div.show();
            link.removeClass('h3inactive').addClass('h3active');
        }
    },
    
    setupnoticia: function() {
        var nHeight = $('#noticia').height();
        $('#header').css({marginTop: nHeight+30});
        
        $('#noticia').show().css({
            display: "block",
            position: "absolute",
            top: 0,
            width: "100%"
        });
    },
    
    accordion: function() {
        var cont = $('.bigcont');
        var linkElm = cont.find('h3');
        
        linkElm.next().hide();
        linkElm.css({cursor: "pointer"}).addClass('h3inactive');
        
        linkElm.click(function() {
            if($(this).next().css("display") == "none") {
                cont.find('.h3active').removeClass('h3active').addClass('h3inactive');
                linkElm.next().hide("fast");
                $(this).addClass('h3active').next().show("fast", function() { $.scrollTo($(this).prev(), 500); });
            }
        });
        
        $('.selectedArea').next().show();
        
        if($('#showAllMsgs').length > 0) { this.showMsgs(); }
    },
    
    showMsgs: function() {
        $('#showAllMsgs').click(function() {
            $('<div>').css({
                position: 'absolute',
                top: '0px',
                left: '0px',
                backgroundColor: 'black',
                opacity: '0.75',
                width: '100%',
                height: $(document).height(),
                zIndex: 5000,
                display: 'none'
            }).attr({'class': 'lightbox'}).appendTo("body").fadeIn("slow");
            
            $('<div>').css({
                position: 'fixed',
                margin: '25px',
                width: '650px',
                top: '0px',
                bottom: '0px',
                right: '0px',
                overflow: 'auto',
                padding: '15px',
                backgroundColor: 'white',
                border: '10px solid #CCC',
                zIndex: 6000,
                display: 'none'
            }).attr({'class': 'lightbox', id: 'appendTo'}).appendTo('body').fadeIn("slow");
            
            $('<img src="'+fullurl+'img/bt_fechar.png" />').css({
                position: 'fixed',
                top: '45px',
                right: '725px',
                display: 'none',
                cursor: 'pointer',
                zIndex:5500
            }).appendTo("body").fadeIn("slow").click(function() {
                $('.lightbox').fadeOut('slow', function() {
                    $(this).remove();
                });
                
                return false;
            }).addClass('lightbox');
            
            $('<p>').text('carregando mensagens...').attr({id: 'wait'}).appendTo('#appendTo');
            
            $.get(fullurl.substr(0, -1) + $(this).attr('href'), function(data) {
                $('#wait').remove();
                $(data).appendTo("#appendTo");
            })
            
            return false;
        })
    },
    
    getCities: function() {
        var stateElm = ($('#UserStateId').length > 0) ? $('#UserStateId') : $('#JobStateId');
        var cityElm = ($('#UserCityId').length > 0) ? $('select#UserCityId') : $('select#JobCityId');
        
        stateElm.change(function() {
            $.ajax({
                url:fullurl+'users/getcity/'+$(this).val(),
                beforeSend: function() {
                    var loading = '<option value="">aguarde...</option>';
                    cityElm.html(loading);
                },
                success: function(j) {
                    var options = '';
                    for (var i = 0; i < j.length; i++) {
                        options += '<option value="' + j[i].id + '">' + j[i].nome + '</option>';
                    }
                    cityElm.html(options);
                },
                dataType:"json"
            });
        })
    },
    
    expandForms: function() {
        $('.expandform').click(function() {
            var elm = $(this).next();
            elm.slideToggle("slow");
            return false;
        })
    },
    
    expandFormPort: function() {
        if($('.error-message').length < 1) {
            $('.hidethis').hide();
        }
        
        $('.expandport').click(function() {
            $('.hidethis').slideToggle("slow");
            return false;
        })
    },
    
    userpanel: function() {
        $('.userOpts').hide();
        
        $('.userimgholder').hover(function() {
            $('.userOpts').slideDown('fast');
        }, function() {
            $('.userOpts').slideUp('fast');
        });
    }
}