/**
 * global.js
 * @author Martin Bean <martin@digitalpop.co.uk>
 * @todo Minimize file when deploying on live server
 **/

$(document).ready(function() {
    // $(document).pngFix(); // global PNG fix
    initBBCode('textarea.bbcode');
    advancedSearch();
    advertiserForm();
    closeFacebox();
    commentsHover();
    commentsWall();
    confirmDelete();
    confirmLogout();
    // crudeAccordion();
    externalLinks();
    faqAnimation();
    // hoverClass();
    imageSwapper('#additional_review_images li a', '#main_review_image img');
    inputDefault('#login #username', 'Email address');
    inputDefault('#login #password', 'Password');
    inputDefault('#register #email', 'Email address');
    inputDefault('#register #first_name', 'First name');
    navigationFade();
    popupContent();
    // redeemProduct();
    smsDropdown();
    toggleBBLinkDropdown();
    validateSubmit('#update_status', '#new_status');
    // validateSubmit('form.comments', 'textarea[name="comment"]');
    // wallComments();

    $('.sifr').sifr({path:'yikes.swf'});
});

//
function advancedSearch() {
    var speed = 'fast';
    $('div#advanced_search').hide();
    $('a#show_advancedSearch').click(function() {
        if ($('a#show_advancedSearch').text() == 'More search options') {
            $('a#show_advancedSearch').text('Less search options');
        } else {
            $('a#show_advancedSearch').text('More search options');
        }
        $('div#advanced_search').slideToggle(speed);
        return false;
    });
};

//
function advertiserForm() {
    $('#enquire_form').hide();
    $('#enquire_button').show();
    $('#enquire_button').click(function() {
        $('#enquire_button').fadeTo(500, 0.01).slideUp();
        $('#enquire_form').slideDown();
        return false;
    });
};

//
function closeFacebox()
{
    $('a.close_window').click(function() {
        $.facebox.close();
        return false;
    });
};

//
function commentsHover() {
    $('.wall li').each(function() {
        $(this).hover(function() {
            $(this).addClass('hover');
        }, function() {
            $(this).removeClass('hover');
        });
    });
};

//
function commentsWall() {
    var speed = 230;
    $('form.comments fieldset').hide();
    $('a.add_comment').click(function() {
        $('.wall fieldset').slideUp(speed);
        var targetElm = $(this).attr('href');
        var parentElm = $(targetElm).parent().parent();
        $(parentElm).fadeIn(speed);
        $(targetElm).focus();
        return false;
    });
};

//
function confirmDelete() {
    $('a.delete').click(function() {
        return confirm('Er du sikker på du vil slette denne post?');
    });
};

// confirmation dialog when logout link is clicked
function confirmLogout() {
    $('a.logout, .logout a').click(function() {
        return confirm('Er du sikker på du ønsker at logge ud?');
    });
};

// makes a basic accordion out of an element
function crudeAccordion() {
    $('.crude_accordion fieldset').hide();
    $('.crude_accordion fieldset#basic_information, .crude_accordion fieldset.actions').show();
    $('.crude_accordion h2 a').click(function() {
        var url = this.href.split('#');
        var speed = 'fast';
        $('#' + url[1]).slideToggle(speed);
        return false;
    });
};

// opens external links in a new window; also applies a class and note to title attribute
function externalLinks() {
    $('a[rel=external], a[rel=advert]').each(function() {
        if ($(this).attr('title') == '') {
            var children = $(this).children();
            if ($(children[0]).is('img')) {
                var newTitle = $(children[0]).attr('alt');
            } else {
                var newTitle = $(this).html();
            }
            /*
            if ($(this).next().is('img')) {
                var newTitle = $(this).next().attr('alt');
            } else {
                var newTitle = $(this).html();
            }
            */
        } else {
            var newTitle = $(this).attr('title');
        }
        newTitle += ' (opens in a new window)';
        $(this).attr('title', newTitle);
        $(this).addClass('external');
        $(this).click(function () {
            window.open($(this).attr('href'));
            return false;
        });
    });
};

//
function faqAnimation() {
    /*
    var speed = 'fast';
    $('.faq_content').hide();
    $('.faq_title').click(function() {
        $('.faq_content').slideUp(speed);
        $(this).next('.faq_content').slideDown(speed);
    });
    */
};

//
function hoverClass() {
    $('#content *').hover(function() {
        $(this).addClass('hover');
    }, function() {
        $(this).removeClass('hover');
    });
};

//
function goTo(url) {
    window.location.href=url;
}

// swaps target image with thumb href
function imageSwapper(thumb, target) {
    $(thumb).click(function() {
        $(target).attr('src', this.href);
        return false;
    });
};

//
function initBBCode(elm) {
    $('.bbcode_palette').show();
    $(elm).bbcodeeditor({
        bold:$('.bbcode_palette .bold'),
        italic:$('.bbcode_palette .italics'),
        underline:$('.bbcode_palette .underline'),
        //link:$('.bbcode_palette .url'),
        link:false,
        quote:$('.bbcode_palette .quote'),
        code:false,
        image:$('.bbcode_palette .image'),
        usize:false,
        dsize:false,
        nlist:false,
        blist:false,
        litem:false,
        back:false,
        forward:false,
        back_disable:'sprite e_back_disabled',
        forward_disable:'sprite e_forward_disabled',
        exit_warning:false,
        preview:false
    });
};

//
function inputDefault(element, defaultValue) {
    var loOpacity = 0.5;
    var hiOpacity = 1;
    var speed = 'fast';
    // sets input value to blank if the input contains the default value
    $(element).parents('form').submit(function() {
        if ($(element).val()==defaultValue) {
            $(element).val('');
        }
    });
    // if input is empty, sets value to default value
    if ($(element).val()=='') {
        $(element).fadeTo(speed, loOpacity);
        $(element).val(defaultValue);
    }
    // empties input on focus
    $(element).focus(function() {
        $(element).fadeTo(speed, hiOpacity);
        $(element).val('');
    });
    // sets input back to default value if empty on blur
    $(element).blur(function() {
        if ($(element).val()=='') {
            $(element).fadeTo(speed, loOpacity);
            $(element).val(defaultValue);
        }
    });
};

//
function insertBBLink(text, elm) {
    var val = $(elm).val();
    $(elm).val(val + ' ' + text);
    $('#insert_link').hide();
    $('.bbcode_palette a.url').toggleClass('hover');
    return false;
};

// inserts text into an element
function insertText(text, elm) {
    if ($(elm).is('textarea') || $(elm).is('input')) {
        // alert('elm is a textarea or input; inserting text ' + text);
        var currentVal = $(elm).val();
        $(elm).val(currentVal + text);
        return true;
    } else {
        return false;
    }
};

//
function launchGame(portNo, roomId, roomDescription, userId) {
    alert(
        'Port number is ' + portNo + "\r\n" +
        'Room ID is ' + portId + "\r\n" +
        'Room description is ' + roomDescription + "\r\n" +
        'user ID is ' + userId + "\r\n"
    );
    return false;
}

//
function navigationFade() {
    return false;
};

//
function popupContent() {
    $('a[rel=popup]').click(function() {
        var target = (this.href + ' #content > *');
        var loading = $('<div id="popup_content"><div style="text-align:center;"><img src="' + facebox_img + 'loading.gif" /></div></div>');
        $(loading).load(target, null, function() {
            $.facebox(loading);
        });
        return false;
    });
};

//
function postAJAX(page, args, callback) {
    $.post(page, args, callback, 'json');
}

function redeemProduct(argument) {
    $.getJSON('http://127.0.0.1/woohoobingo.com/ajax/shop/redeem.php', function(data) {
        if (data.status == 'Success') {
            $('#purchase_status').addClass('success');
            $('#purchase_status p').html(data.title + ' purchased');
        } else {
            $('#purchase_status').html(data.status);
        }
    });
};

//
function reviewFeedback(review_id, member_id, type) {
    var destURL = 'http://woohoodev/ajax/review_feedback/' + review_id + '/' + member_id + '/' + type;
    // alert(scriptURL); return false;
    $.getJSON(destURL, function(data) {
        if (data.result==0) {
            alert(data.error);
        } else {
            // update positive total if required
            if (type=='positive') {
                var posElm = '#review_' + review_id + ' strong.positive';
                var posVal = $(posElm).html();
                var posNew = parseInt(posVal);
                posNew++;
                $(posElm).html(posNew);
            }
            // update total
            var totalElm = '#review_' + review_id + ' strong.total';
            var totalVal = $(totalElm).html();
            var totalNew = parseInt(totalVal);
            totalNew++;
            $(totalElm).html(totalNew);
        }
    });
};

//
function smsDropdown()
{
    var target = $('.sms_sub');
    if ($('#sms_signup:checked').length == 0) {
        $(target).hide();
    }
    $('#sms_signup').click(function() {
        $(target).slideToggle('fast');
    });
}

//
function toggleBBLinkDropdown() {
    var targetElm = "#insert_link";
    $(targetElm).hide();
    $('.bbcode_palette a.url').click(function() {
        $(targetElm).toggle();
        if ($(targetElm).is(':visible')) {
            $('.bbcode_palette a.url').addClass('hover');
        } else {
            $('.bbcode_palette a.url').removeClass('hover');
        }
    });
};

// disables submit button and halts form submission is required field is blank
function validateSubmit(formElm, fieldElm) {
    var submitButton = $(formElm + ' input[type=submit]');
    if ($(fieldElm).val()=='') {
        $(submitButton).attr('disabled', 'disabled');
        $(submitButton).addClass('disabled');
    }
    $(fieldElm).keyup(function() {
        if ($(fieldElm).val()=='') {
            $(submitButton).attr('disabled', 'disabled');
            $(submitButton).addClass('disabled');
        } else {
            $(submitButton).removeAttr('disabled');
            $(submitButton).removeClass('disabled');
        }
    });
    $(formElm).submit(function() {
        if ($(fieldElm).val()=='') {
            return false;
        } else {
            return true;
        }
    });
};

// this function is mint
function wallComments() {
    $('form.comments ol li').hide();
    $('form.comments ol li:last').show();

    // handle "View all" link being clicked
    $('.view_all_comments a').click(function() {
        var parentElm = $(this);
        $(parentElm + ' ol li').show();
        return false;
    })
};

