$(document).ready(function() {    
    closeAll = function() {
        $('.sub-nav').hide();
        $('.response-container').hide();
        $('.response-form-inner #form').remove();
        $('#popup-box #form').remove();
        $('.post-active').removeClass('post-active');
        $('#popup-box').hide();
        removeActiveFromMainNav();
    }

    //this is to control the main nav drop down menus
    $('.top-parent').click(function() {
        $('.top-parent').removeClass('active');
        $('.sub-nav').hide();
        $(this).addClass('active');
        $(this).parent().find('.sub-nav').fadeIn();
    });
    //this is to control the subnav links
    $('.sub-nav a').click(function() {
        $('.sub-nav a').removeClass('active');
        $(this).addClass('active');
        $('.sub-nav').hide();
    });

    function removeActiveFromMainNav() {
        $('#main-nav li a').removeClass('active');
    }

    // This is to open the ask form //
    $('#ask').click(function() {
        closeAll();
        $(this).addClass('active');
        $('#popup-box-inner').load('/ask', function() {
            $('#f_question').addClass('required');
            $('#f_contact').addClass('required');
            $('#f_contact_verify').addClass('required');
            $("#form textarea").first().focus();

            $('#f_contact_choices').change( function() { 
                var selection = $('#f_contact_choices :selected').text();  
                $("label[for='f_contact']").text('Enter ' + selection); 
                $("label[for='f_contact_verify']").text('Verify ' + selection); 
            });

        });
        $('#popup-box').fadeIn();
    });
    
    // This is to open the invite form //
    $('#invite').click(function() {
        closeAll();
        $(this).addClass('active');
        $('#popup-box-inner').load('/invite', function() {
            $('#f_email').addClass('required');
            $('#f_body').attr('disabled', 'disabled');
            $('#f_body').val($('#extra_info').html())
            $("#form input:text").first().focus();
        });
        $('#popup-box').fadeIn();
    });

    // This is to open the voce form //
    $('#voce').click(function() {
        closeAll();
        $(this).addClass('active');
        $('#popup-box-inner').load('/voce', function() {
            $("#form textarea").first().focus();
        });
        $('#popup-box').fadeIn();
    });

    $('.close').live('click', function() {
        closeAll();
        flashDoneWorking();
    });

// This is to open the login form //
    $('#secure-login').click(function() {
        closeAll();
        $('#popup-box-inner').load('/login', function() {
            $('#f_username').addClass('required').attr('AUTOCOMPLETE', 'off');
            $('#f_password').addClass('required').attr('AUTOCOMPLETE', 'off');
            $("#form input:text").first().focus();
        });
        $('#popup-box').fadeIn();
        return false;
    });

// This is to open the feedback form //
    $('#site-feedback').click(function() {
        closeAll();
        $('#popup-box-inner').load('/feedback', function() {
            $('#f_message').addClass('required');
            $("#form textarea").first().focus();
        });
        $('#popup-box').fadeIn();
        return false;
    });

// This is to open the search form //
    $('#search').click(function() {
        closeAll();
        $('#popup-box-inner').load('/search_form', function() {
            $('#f_q').addClass('required');
            $("#form input:text").first().focus();
        });
        $('#popup-box').fadeIn();
        return false;
    });
    
// ESCAPE key closes popup window
    $(document).keydown(function(e) {
        var escapeKeyCode = 27;
        if (e.keyCode == escapeKeyCode) {
            flashDoneWorking();
            closeAll();
        }
    });
 
// This is the submit handler for the popup forms//
    $('#popup-box input[type="submit"]').live('click', function() {
        var is_valid = $('#form').validate().form();
        
        if (is_valid) {
            $('#popup-flash').show().html('Working...');
            var url = $('#form').attr('action');
            var postData = {};
            $.each($('#popup-box :input'), function(index, input) {
                postData[input.name] = input.value;
            });

            if (url == '/search') {
                window.location = '/search?q=' + postData['q'];
                return false;
            }
            
            $.ajax({
                type: 'POST',
                url: url,
                data: postData,
                dataType: 'json',
                success: function() {
                    $('#popup-flash').hide().html('');
                    $('#popup-box').fadeOut();
                    removeActiveFromMainNav();
                    if (url == '/login') {
                        window.location = '/';
                    }
                    $('#form').remove();
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) { 
                    $('#popup-flash').show().html(XMLHttpRequest.responseText);
                }
            });
        }
        
        return false;
    });

// This is the submit handler for the action-tray forms//
    $('.action-tray input[type="submit"]').live('click', function() {
        var is_valid = $('#form').validate().form();

        if (is_valid) {
            $('#flash').show().html('Working...');
            var url = $('#form').attr('action');
            var postData = {};
            $.each($('.action-tray :input'), function(index, input) {
                postData[input.name] = input.value;
            });
            var keyName = $(this).closest('.post-active').attr('id');
            postData['conversation_key'] = keyName;
            postData['post_to_twitter'] = $('#f_post_to_twitter').attr('checked');
            $.ajax({
                type: 'POST',
                url: url,
                data: postData,
                dataType: 'json',
                success: function() {
                    $('#flash').hide().html('');
                    closeAll();
                    window.location = window.location.pathname;
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) { 
                    $('#flash').show().html(XMLHttpRequest.responseText);
                }
            });
        }

        return false;
    });

// Handler for ecc  click handler
    $('.ecc-button').live('click', function() {
        var $clicked = $(this);
        var $post = $clicked.closest('.post');
        flashWorking($post);
        var action = '';
        var buttonText = '';
        var label = 'ecc';
        var postData = {};
        var url = "/update_label";
        var keyName = $post.attr('id');

        if ($clicked.hasClass('active')) {
            action = 'remove';
        } else {
            action = 'add';
        }

        postData['conversation_key'] = keyName;
        postData['action'] = action;
        postData['label'] = label;

        $.ajax({
            type: 'POST',
            url: url,
            data: postData,
            dataType: 'json',
            success: function() {
                flashDoneWorking(function() {$clicked.toggleClass('active');} );
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) { 
                $('#flash').show().html(XMLHttpRequest.responseText);
            }
        });

        return false;
    });

    flashWorking = function($postActive, message) {
        var windowWidth = document.documentElement.clientWidth;  
        var windowHeight = document.documentElement.clientHeight;  
        var flashWidth = $('#flash').width();
        var flashHeight = $('#flash').height();
        var postYPosition = $postActive.offset().top;
        var flashMessage = function() {
            if (message) {
                return  message;
            }
            else {
                return 'working...';
            }
        };

        $("#flash").css({  
            "position": "absolute",  
            "top": postYPosition - flashHeight,  
            "left": windowWidth/2-flashWidth/2  
        });  

        $('#flash').fadeIn().html(flashMessage);
    }

    flashDoneWorking = function(onCompleteFunction) {
        if (onCompleteFunction) {
            $('#flash').animate( { opacity: .7 },  500, function() {
                $(this).fadeOut(onCompleteFunction);
            });
        } else {
            $('#flash').animate( { opacity: .7 },  500, function() {
                $(this).fadeOut();
            });
        }
    }

// Handler for flag click handler
    $('.flag-button').live('click', function() {
        var $clicked = $(this);
        var $post = $clicked.closest('.post');
        flashWorking($post);
        var action = '';
        var buttonText = '';
        var label = 'warn';
        var postData = {};
        var url = "/update_label";
        var keyName = $post.attr('id');

        if ($clicked.hasClass('active')) {
            action = 'remove';
        } else {
            action = 'add';
        }

        postData['conversation_key'] = keyName;
        postData['action'] = action;
        postData['label'] = label;

        $.ajax({
            type: 'POST',
            url: url,
            data: postData,
            dataType: 'json',
            success: function() {
                flashDoneWorking(function() {$clicked.toggleClass('active');} );
                // $clicked.toggleClass('active');
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) { 
                $('#flash').show().html(XMLHttpRequest.responseText);
            }
        });

        return false;
    });

// Handler for label click handler
    $('.skip-button').live('click', function() {
        var $clicked = $(this);
        var $post = $clicked.closest('.post');
        flashWorking($post);
        var action = '';
        var buttonText = '';
        var label = 'skip';
        var postData = {};
        var url = "/update_label";
        var keyName = $post.attr('id');

        if ($clicked.hasClass('active')) {
            action = 'remove';
        } else {
            action = 'add';
        }

        postData['conversation_key'] = keyName;
        postData['action'] = action;
        postData['label'] = label;

        $.ajax({
            type: 'POST',
            url: url,
            data: postData,
            dataType: 'json',
            success: function() {
                $post.find('.respond-button').toggleClass('comments')
                flashDoneWorking(function() {$clicked.toggleClass('active');} );
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) { 
                $('#flash').show().html(XMLHttpRequest.responseText);
            }
        });

        return false;
    });

// Handler for label click handler
    $('#more-button').click(function() {
        // var $clicked = $(this);
        var $post = $('.post:last');
        flashWorking($post);
        var postData = {};
        var cursor = $('#more-cursor').text();
        var params = "snippets=true";
        if (cursor) {
            params += "&cursor=" + cursor;
        }
        
        $.ajax({
            type: 'GET',
            url: window.location.pathname,
            data: params,
            dataType: 'html',
            success: function(response) {
                var cursor = $(response).find('#more-cursor');
                $('#more-cursor').remove();
                if (!$(cursor[0]).text()) {
                    $('#more-button').remove();
                }
                $('#conversations-list').append(response);
                flashDoneWorking();
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $('#flash').show().html(XMLHttpRequest.responseText);
            }
        });

        return false;
    });

// Handler for favorite button
    $('.favs-button').live('click', function() {
        var $clicked = $(this);
        var $post = $(this).closest('.post');
        flashWorking($post);
        var url = '/update_favorite';
        var postData = {};
        var action = '';
        var buttonText = '';
        var keyName = $post.attr('id');
        
        if ($clicked.hasClass('active')) {
            action = 'remove';
        } else {
            action = 'add';
        }

        postData['conversation_key'] = keyName;
        postData['action'] = action;
        
        $.ajax({
            type: 'POST',
            url: url,
            data: postData,
            dataType: 'json',
            success: function() {
                flashDoneWorking(function() {$clicked.toggleClass('active');} );
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) { 
                $('#flash').show().html(XMLHttpRequest.responseText);
            }
        });
        
        return false;
    });

// This is to open the comment form //
    $('.respond-button').live('click', function() {
        var $post = $(this).closest('.post');
        var $container = $post.find('.response-container');
        
        if ($post.hasClass('post-active')) {
            $container.slideUp(function(){
                $post.removeClass('post-active');
            });
        } else {
            closeAll();
            $post.addClass('post-active');
            
            var $responseFormContainer = $container.find('.response-form-inner'); 
            var $responsePreview = $container.find('.response-preview'); 
            var $responseCount = $container.find('.response-preview-count'); 
            var $conversation = $(this).parents('.post:first');

            $responseFormContainer.load('/comment', function() {
                $('#f_text').addClass('required');
                var canCallApi = $('#can-post-to-twitter');
                if (canCallApi.text() === 'False') {
                    $('#f_post_to_twitter').hide();
                    $('label[for="f_post_to_twitter"]').hide();
                    $container.find('#twitter-reminder').removeClass('hidden');
                    var message = 'To post a reply to twitter, complete <a href="/start/welcome">registration</a>';
                    flashWorking($post, message);
                } else {
                    checkbox = $post.find('#f_post_to_twitter');
                    checkbox.attr('checked', true);
                    $responsePreview.show();
                }
                $container.slideDown();
            });
    
        }
        
        $('#f_post_to_twitter').live('click', function() {
            if ($('#f_post_to_twitter').attr('checked')) {
                $responsePreview.show(); 
            } else {
                $responsePreview.hide(); 
            }
        });
        
        $('#f_text').live('keyup', function() {
            var screenName = $('#twitter-screen-name').text();
            var bity = 'http://bit.ly/_TEST_ ';
            var viaAgent = ' via @' + screenName;
            var response =  $('#f_text').val();
            var $responseText = $container.find('.response-preview-text'); 
            var twitter_response = bity + response + viaAgent;
            var truncated = false;
            var displayCount = 0;
            if ((140 - twitter_response.length) < 0) {
                var usedChars = bity.length + viaAgent.length;
                var availableChars = 140 - usedChars;
                response = truncate(response, availableChars);
                twitter_response = bity + response + viaAgent;
                truncated = true;
            }
            
            $responseText.text(twitter_response);
            if (truncated) {
                displayCount = 0;
            } else {
                displayCount = 140 - twitter_response.length;
            }
            $responseCount.text(displayCount);
        });
        
    });

// this opens the url-embed box //
    $('.url-preview-small, .url-page-title').click(function() {
        $('.popup-boxes').hide();
        var url = $(this).parent().find('.url-page-url').text();
        var title = $(this).parent().find('.url-page-title').text();
        var description = $(this).parent().find('.url-page-description').text();
        $('#pop-up-url').append(url);
        $('#pop-up-page-title').append(title);
        $('#pop-up-page-description').append(description);
        $('#website-url').attr('href', url);
        $('#url-popup-box').show();
    });

    //This controls the stying of the popup boxes ie keeps them centered when they open

    var windowWidth = document.documentElement.clientWidth;  
    var windowHeight = document.documentElement.clientHeight;  
    var popupHeight = $("#popup-box").height();  
    var popupWidth = $("#popup-box").width();  

    $("#popup-box").css({  
        "position": "absolute",  
        "top": '100px',  
        "left": windowWidth/2-popupWidth/2  
    });  

    //This is for the sortby dropdown on the connections page

    $('#selected').click(function() {
        $('.option').show();
    });

    $('#sort-options li a').click(function() {
        var currentSelection = $('#selected a').text()
        var newSelection = $(this).text();
        $(this).text(currentSelection);
        $('#selected a').text(newSelection);
        $('.option').hide();
    });

    //This is the focus script for the search box
    $('#search-connections').focus(function() { 
        if (this.value == this.defaultValue){  
            this.value = '';  
        }  
        if(this.value != this.defaultValue){  
            this.select();
        }
  });  



  $('#search-connections').blur(function() {  
        if ($.trim(this.value) == ""){
            this.value = (this.defaultValue ? this.defaultValue : "");
        } 
    });  

});

