﻿/*----------------------------------------------------
Load scripts from ajax api
*/
google.load("swfobject", "2.1");
google.load("jquery", "1.4.1");
google.load("jqueryui", "1.8.4");

google.setOnLoadCallback(_run);

/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
// Run
function _run() {
    /*---------------------------------------------------------------------------------------------------------------------------------------------------------------*/
    /*---------------------------------------------------------------------------------------------------------------------------------------------------------------*/
    /*---------------------------------------------------------------------------------------------------------------------------------------------------------------*/
    // On Doc Ready
    $(document).ready(function () {
        // Drop In Loading Animation

        $(".fb-window, .socialTwitter").popupWindow({
            height: 400,
            width: 600,
            centerBrowser: 1
        });

        $("#requestInfo").click(function () { $("#requestInfoDialog").dialog('open'); return false; });
        $("#requestInfoHost").click(function () { $("#requestInfoDialog").dialog('open'); return false; });
        $(".socialEmail").click(function () { populateContentLink($(this)); $("#shareLinkDialog").dialog('open'); return false; });
        $(".socialEmailVid").click(function () { populateVideoLink(); $("#shareLinkDialog").dialog('open'); return false; });

        /*---------------------------------------------------------------*/
        // Share Link dialog validation
        /*---------------------------------------------------------------*/

        function showLoading(type, loc) {
            var loader = $("<div class='loader'>Loading...</div>");
            loc.append(loader);
        };

        function endLoading(loc) {
            $(".loader").remove();
        };

        /*---------------------------------------------------------------*/
        // Share Link dialog validation
        /*---------------------------------------------------------------*/
        var yname = $("#yname"),
        yemail = $("#yemail"),
        fname = $("#fname"),
        femail = $("#femail"),
        fmessage = $("#fmessage"),
        fallFields = $([]).add(yname).add(yemail).add(fname).add(femail).add(fmessage),
        ftips = $("#requestInfoForm-tips");

        function shareSubmitSuccess() {
            updateTips($.g.submitSuccess, ftips);
            yname.val("");
            yemail.val("");
            fname.val("");
            femail.val("");
            fmessage.val("");
            setTimeout(shareCloseAfterSuccess, 2000);
        };

        function shareCloseAfterSuccess() {
            $('#shareLinkDialog').dialog('close');
            ftips.html("");
        }

        /*---------------------------------------------------------------*/
        // Request more information dialog validation
        /*---------------------------------------------------------------*/
        var name = $("#cname"),
		email = $("#cemail"),
        message = $("#cmessage"),
        allFields = $([]).add(name).add(email).add(message),
        tips = $("#form-tips");

        var yname = $("#yname"),
        yemail = $("#yemail"),
        fname = $("#fname"),
        femail = $("#femail"),
        fmessage = $("#fmessage"),
        fallFields = $([]).add(yname).add(yemail).add(fname).add(femail).add(fmessage),
        ftips = $("#requestInfoForm-tips");

        function submitSuccess() {
            updateTips($.g.submitSuccess, tips);
            name.val("");
            email.val("");
            message.val("");
            setTimeout(closeAfterSuccess, 2000);
        };

        function closeAfterSuccess() {
            $('#requestInfoDialog').dialog('close');
            tips.html("");
        }

        /*---------------------------------------------------------------*/
        // General dialog validation
        /*---------------------------------------------------------------*/

        function updateTips(t, tip) {
            tip.text(t).effect("highlight", {}, 1500);
        }

        function checkLength(o, n, min, max, tip) {
            if (o.val().length > max || o.val().length < min) {
                o.addClass('ui-state-error');
                updateTips(n + " " + $.g.isRequiredField, tip);
                return false;
            } else {
                return true;
            }
        }

        function checkRegexp(o, regexp, n, tip) {
            if (!(regexp.test(o.val()))) {
                o.addClass('ui-state-error');
                updateTips(n, tip);
                return false;
            } else {
                return true;
            }
        }
        /*---------------------------------------------------------------*/
        // Request more information Dialog Buttons
        /*---------------------------------------------------------------*/

        var gsend = $.g.send;
        var gcancel = $.g.cancel;

        var requestInfoButtons = {};

        requestInfoButtons[gsend] = function () {
            var bValid = true;
            allFields.removeClass('ui-state-error');

            bValid = bValid && checkLength(name, $.g.errorName, 3, 136, tips);
            bValid = bValid && checkLength(email, $.g.errorEmail, 6, 80, tips);

            bValid = bValid && checkRegexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "Enter a valid address. eg. name@domain.com", tips);

            if (bValid) {
                var options = {
                    success: submitSuccess,
                    url: '/Categories/ContactForm/',
                    type: 'post',
                    dataType: 'json'
                };
                $("#requestForm").ajaxSubmit(options);
            }
        };

        requestInfoButtons[gcancel] = function () {
            $(this).dialog('close');
        };

        /*---------------------------------------------------------------*/
        // Request more information dialog
        /*---------------------------------------------------------------*/
        $("#requestInfoDialog").dialog({
            autoOpen: false,
            width: 500,
            modal: true,
            draggable: false,
            buttons: requestInfoButtons
        });

        /*---------------------------------------------------------------*/
        // Share Video Dialog Buttons
        /*---------------------------------------------------------------*/

        var shareLinkButtons = {};

        shareLinkButtons[gsend] = function () {
            var bValid = true;
            allFields.removeClass('ui-state-error');

            bValid = bValid && checkLength(yname, $.g.errorYourName, 3, 136, ftips);
            bValid = bValid && checkLength(yemail, $.g.errorYourEmail, 6, 80, ftips);

            bValid = bValid && checkLength(fname, $.g.errorFriendsName, 3, 136, ftips);
            bValid = bValid && checkLength(femail, $.g.errorFriendsEmail, 6, 80, ftips);

            bValid = bValid && checkRegexp(yemail, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "Enter a valid address. eg. name@domain.com", ftips);
            bValid = bValid && checkRegexp(femail, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "Enter a valid address. eg. name@domain.com", ftips);

            if (bValid) {
                var options = {
                    success: shareSubmitSuccess,
                    url: '/Categories/ShareForm/',
                    type: 'post',
                    dataType: 'json'
                };
                $("#shareLinkForm").ajaxSubmit(options);
            }
        };

        shareLinkButtons[gcancel] = function () {
            $(this).dialog('close');
            clearShareLink();
        };

        /*---------------------------------------------------------------*/
        // Share Video Dialog
        /*---------------------------------------------------------------*/
        $("#shareLinkDialog").dialog({
            autoOpen: false,
            width: 500,
            modal: true,
            draggable: false,
            buttons: shareLinkButtons
        });

        function populateVideoLink() {
            var pTitle = $("#videoTitle").html();
            var pDesc = $("#videoDescription").html();
            var pUrl = location.href;

            var title = $("#shareDetails .title");
            var desc = $("#shareDetails .desc");
            var url = $("#shareDetails .url");

            $("#ctitle").val(pTitle);
            $("#cdescription").val(pDesc);
            $("#curl").val(pUrl);

            title.html(pTitle);
            desc.html($.truncate(pDesc, 80));
            url.html(pUrl);
        }

        function populateContentLink(obj) {
            var pTitle = obj.parent().parent().find("h1").html();
            var pDesc = obj.parent().parent().find("h2").html();
            var pUrl = location.href;

            var title = $("#shareDetails .title");
            var desc = $("#shareDetails .desc");
            var url = $("#shareDetails .url");

            $("#ctitle").val(pTitle);
            $("#cdescription").val(pDesc);
            $("#curl").val(pUrl);

            title.html(pTitle);
            desc.html($.truncate(pDesc, 80));
            url.html(pUrl);
        }

        function clearShareLink() {
            $("#shareDetails .title").html("");
            $("#shareDetails .desc").html("");
            $("#shareDetails .url").html("");
        }

        /*---------------------------------------------------------------*/
        // Copy Link Dialog
        /*---------------------------------------------------------------*/
        var copyLinkButtons = {};
        var gOk = $.g.ok;

        copyLinkButtons[gOk] = function () {
            $(this).dialog('close');
        };

        $("#copyLinkDialog").dialog({
            autoOpen: false,
            width: 500,
            modal: true,
            draggable: false,
            buttons: copyLinkButtons
        });
        $(".socialLink").click(function () {
            $("#copyLinkDialog input").val("");

            $("#copyLinkDialog").dialog('open');

            $("#copyLinkDialog input").val(location.href);
            return false;
        });

        /*---------------------------------------------------------------*/
        // Truncate Text
        /*---------------------------------------------------------------*/

        jQuery.truncate = function (txt, size) {
            txt = txt.substring(0, size) + "...";
            return txt;
        }

    });                 //End Doc Ready
} // End _run
