$(document).ready(function() {
    // remove Sitefinity logo
    $('.poweredBySitefinityLogo').remove();
});

/* PAYPAL ****************************************************************************************************/

$(document).ready(function() {
    // pre-load PayPal checkout image
    var paypalCheckoutImage = new Image(145, 42);
    paypalCheckoutImage.src = '/images/tmv/btn_xpressCheckout.gif';

    $('#donate').click(function() {
        $.ajax({
            cache: false,
            dataType: 'html',
            type: 'GET',
            url: '/PayPalDonate.ashx',
            success: function(html) {
                $.modal(html, {
                    close: false,
                    opacity: 50,
                    containerId: 'paypal-checkout',
                    overlayId: 'body-blur',
                    onShow: function() {
                        $('form#paypal_checkout').submit();
                    }
                });
            }
        });
    });
});

/* FORMS ****************************************************************************************************/

var messages = null;
var group = null;

$(document).ready(function() {
    // show/hide hints
    $('input[type=text].hint, textarea.hint').focus(hideHint);
    $('input[type=text].hint, textarea.hint').blur(showHint);

    $('select').focus(setFocus);
    $('select').blur(clearFocus);

    $('input.submit').click(function() {
        group = $(this).attr('target');
    });

    $('form#aspnetForm').submit(function() {
        var valid = true;
        var selector = null;

        //$('input[type=text].required, textarea.required').removeClass('error');

        if (group)
            selector = String.format('.{0} input[type=text].required:not(.{0} input[type=text].error), .{0} textarea.required:not(.{0} textarea.error), .{0} select.required:not(.{0} select.error)', group);
        else
            selector = 'input[type=text].required:not(input[type=text].error), textarea.required:not(textarea.error), select.required:not(select.error)';

        $(selector).each(function() {
            if ($(this).val() == '' || $(this).val() == this.title) {
                var message = null;
                
                if (group)
                    message = eval(String.format('messages.{0}.required.{1}', group, this.id));
                else
                    message = eval(String.format('messages.required.{0}', this.id));

                setError(this, message);
            }
        });

        if (group)
            selector = String.format('.{0} input[type=text].email:not(.{0} input[type=text].error)', group);
        else
            selector = 'input[type=text].email:not(input[type=text].error)';

        $(selector).each(function() {
            var pattern = new RegExp('.*@.*\\..*');

            if (!pattern.test($(this).val())) {
                var message = null;
                
                if (group)
                    message = eval(String.format('messages.{0}.email.{1}', group, this.id));
                else
                    message = eval(String.format('messages.email.{0}', this.id));

                setError(this, message);
            }
        });

        if (group)
            selector = String.format('.{0} .error:visible', group);
        else
            selector = '.error:visible';

        if ($(selector).length > 0)
            valid = false;

        if (group) {
            selector = String.format('.error:visible:not(.{0} .error)', group);

            $(selector).each(function() {
                $(this).val(this.title);
            });
        }

        return valid;
    });
});

function hideHint() {
    if ($(this).val() == this.title)
        $(this).val('');

    $(this).addClass('focus');
}

function showHint() {
    if ($(this).val() == '')
        $(this).val(this.title);

    $(this).removeClass('focus');
}

function setFocus() {
    $(this).addClass('focus');
}

function clearFocus() {
    $(this).removeClass('focus');
}

function setError(element, message) {
    $(element).addClass('error');

    $(element).val(message);

    $(element).focus(clearError);
}

function clearError() {
    $(this).val('');

    $(this).removeClass('error');
    $(this).addClass('focus');

    $(this).unbind('focus', clearError);
}

function clearForm() {
    $('input[type=text].hint, textarea.hint').val(this.title);
}

String.format = function( text )
{
    // check if there are two arguments in the arguments list
    if ( arguments.length <= 1 )
    {
        // if there are not 2 or more arguments there’s nothing to replace just return the original text
        return text;
    }

    // decrement to move to the second argument in the array
    var tokenCount = arguments.length - 2;

    for( var token = 0; token <= tokenCount; token++ )
    {
        // iterate through the tokens and replace their placeholders from the original text in order
        text = text.replace( new RegExp( '\\{' + token + '\\}', 'gi' ), arguments[ token + 1 ] );
    }

    return text;
};

/* COOKIES ****************************************************************************************************/

$(document).ready(function() {
    // set body font size
    $('body').css('font-size', getCookie('font-size'));

    $('.font-sizer a').click(function() {
        if ($('body').css('font-size') == '12px') {
            $('body').css('font-size', '14px');

            setCookie('font-size', '14px');
        }
        else {
            $('body').css('font-size', '12px');

            setCookie('font-size', '12px');
        }
    });
});

function setCookie(name, value, expiry, path, domain, secure) {
    var docCookie = name + "=" + escape(value) +
        ((expiry) ? "; expires=" + expiry.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");

    document.cookie = docCookie;

    return true;
}

function getCookie(name) {
    var value = null;
    var docCookie = document.cookie;
    var start = docCookie.indexOf(name + "=");
    var finish = -1;

    if (start >= 0) {
        start = start + name.length + 1;
        finish = docCookie.indexOf(";", start);

        if (finish < 0)
            finish = docCookie.length;

        value = unescape(docCookie.substring(start, finish));
    }

    return value;
}

/* TIPS ****************************************************************************************************/

$(document).ready(function() {
    // show qtips
    $('a.links').qtip({
        content: {
            prerender: true,
            url: '/links.html',
            method: 'GET',
            title: {
                text: 'Links',
                button: 'Close'
            }
        },
        position: {
            corner: {
                target: 'topMiddle',
                tooltip: 'bottomLeft'
            }
        },
        show: {
            when: {
                event: 'click'
            },
            effect: {
                type: 'fade'
            }
        },
        hide: {
            delay: 1000,
            when: {
                event: 'unfocus'
            },
            effect: {
                type: 'fade'
            }
        },
        style: {
            name: 'light',
            border: {
                width: 2
            },
            tip: {
                corner: 'bottomLeft'
            }
        }
    });

    $('a.terms').qtip({
        content: {
            prerender: true,
            url: '/terms-conditions.html',
            method: 'GET',
            title: {
                text: 'Terms &amp; Conditions',
                button: 'Close'
            }
        },
        position: {
            corner: {
                target: 'topMiddle',
                tooltip: 'bottomRight'
            }
        },
        show: {
            when: {
                event: 'click'
            },
            effect: {
                type: 'fade'
            }
        },
        hide: {
            delay: 1000,
            when: {
                event: 'unfocus'
            },
            effect: {
                type: 'fade'
            }
        },
        style: {
            name: 'light',
            border: {
                width: 2
            },
            tip: {
                corner: 'bottomRight'
            },
            width: 800
        }
    });
});
