﻿
App = function () {

    /* Private */

    /* Properties */

    var cmp = {};





    /* Defaults */

    TVI.debug = true;





    /* Methods */

    var init = function () {

        // Request a Brochure

        $('.reqBrochure').fancybox({
            padding: '0',
            onComplete: function () {
                cmp.requestBrochure = new TVI.Form({

                    ID: 'requestBrochure',
                    url: TVI.handlers + 'App.BrochureRequest.aspx/sendBrochureForm'

                });
            }
        });

        $('.newsletter').fancybox({
            padding: '0',
            onComplete: function () {
                cmp.newsletter = new TVI.Form({

                    ID: 'newsletter',
                    url: TVI.handlers + 'App.Newsletter.aspx/newsletterSub'

                });
            }
        });





        // Cycle Testimonials

        $('.testimonials').cycle({
            speed: 600,
            timeout: 6000,
            cleartypeNoBg: true
        });


        // Change Language

        $('.flag').live('click', function () {

            $(".textBlockHolder").animate({ opacity: 0.4 }, 300);

            $(".myBookHolder").append("<div class='loading'><img src='/i/loader.gif' /></div>");

            $(".bottomContainer").append("<div class='loading'><img src='/i/loader.gif' /></div>");



            TVI.ajax({

                url: TVI.handlers + "App.aspx/changeLanguage",
                responseType: "text",
                data: { languageID: $(this).attr('data-id'), languagePageTitle: cmp.languagePageTitle, brochurePage: cmp.brochurePage },
                success: function (d) {


                    $(".textBlockHolder").animate({ opacity: 0 }, 200, function () {
                        $(".textBlockHolder").html(d);
                        if (cmp.brochurePage) {
                            bindBook();
                            $("#myBook").booklet(cmp.currentPage);
                        }
                        $(".textBlockHolder").animate({ opacity: 1 }, 500, function () { $(".textBlockHolder").removeAttr("style"); });

                        $('.testimonials').cycle({
                            speed: 600,
                            timeout: 6000,
                            cleartypeNoBg: true
                        });


                        $(".loading").fadeOut("fast");
                        $(".loading").remove();
                    });

                }

            });

            return false;
        });





        $('.glossaryCaller').live('mouseover mouseout', function (event) {
            var callerLink = $(this);
            var termOverlay = $('.termOverlayHolder');

            var hoverPos = $(callerLink).offset();


            if (event.type == 'mouseover') {

                termOverlayTimeout = setTimeout(function () {


                    TVI.ajax({

                        url: TVI.handlers + "App.Master.aspx/getTerm",
                        data: { term: $(callerLink).text() },
                        success: function (d) {

                            $('.termText').html(d.description);

                            $(termOverlay).css('top', hoverPos.top - $(termOverlay).height());
                            $(termOverlay).css('left', hoverPos.left - 30 + ($(callerLink).width() / 2));
                            $(termOverlay).fadeIn("fast");

                        }

                    });


                }, 250);

            } else {
                $(termOverlay).fadeOut("fast");
                clearTimeout(termOverlayTimeout);
            }
        });




        //get your keywords into an array
        var keywords = App.termArray.rows;

        //build regular expression using keywords
        var expression = '/(';

        for (var i = 0, count = keywords.length; i < count; i++) {

            if (i > 0) expression += '|';

            expression += keywords[i];

        }

        expression += ')/gi';


        //create regex object
        var re = new RegExp(eval(expression));


        //function to replace each keyword
        var replace = function (term, match, index, text) {

            return '<a href="javascript:void()" class="glossaryCaller">' + term + '</a>';

        };


        //loop through elements on the page you want to replace
        $('.cmsText').each(function () {

            var text = $(this).html();

            text = text.replace(re, replace);

            $(this).html(text);

        });


    };


    var bindBook = function () {

        var page = $(".page");

        for (i = 0; i < page.length; i++) {

            if (i < page.length - 2 && i % 2 != 0) {

                $(page[i]).append("<div class='nextButton'></div>");
            }

            if (i > 1 && i % 2 == 0) {

                $(page[i]).append("<div class='prevButton'></div>");
            }

            if (i == 0) {

                $(page[i]).append("<a href='/' class='prevHomeButton'></a>");
            }
        }

        cmp.brochurePageCount = page.length - 1;

        $('#myBook').booklet({
            width: 940,
            height: 740,
            pagePadding: 0,
            overlays: false,
            arrows: true,
            hovers: false,
            next: '.nextButton',
            prev: '.prevButton',
            pageNumbers: false,
            after: function (d) {

                cmp.currentPage = d.curr;

                if (d.curr === d.pTotal - 2) {

                    cmp.contactForm = new TVI.Form({

                        ID: 'contactForm',
                        url: TVI.handlers + 'App.Contact.aspx/sendContactForm',


                        success: function (d) {
                            this.success();

                            setTimeout(function () {

                                cmp.contactForm.reset();

                            }, 2000);
                        }

                    });

                    TVI.Mapping.load({

                        key: 'ABQIAAAAVh7hA0wbAwz_b2GGU5sAahToF7MV30AFx_A1tztUqXUDYQV3OxQ6X07oDiO6RdCzEwr9AmMw2q9ZkA',

                        success: function () {

                            var mymap = new TVI.Mapping.GMap({

                                id: 'map',
                                longitude: cmp.mapX,
                                latitude: cmp.mapY,
                                zoomLevel: 15,
                                useCustomMarker: true,
                                customMarkerURL: "/i/mapLogo.png",
                                customMarkerWidth: 115,
                                customMarkerHeight: 38

                            });

                            mymap.addMarker({

                                id: 1,
                                longitude: cmp.mapX - 0.0026,
                                latitude: cmp.mapY


                            });

                            mymap.setCentre({

                                longitude: cmp.mapX,
                                latitude: cmp.mapY,
                                zoomLevel: 15

                            });

                        }

                    }); //mapping



                }

            }
        });



    }


    /* Public */

    TVI.apply(cmp, {

        /* Properties */

        bindBook: function () {

            bindBook();

        },

        languagePageTitle: "",
        brochurePage: false,

        mapX: 0,
        mapY: 0,

        brochurePageCount: 0,
        currentPage: 0

    });


    TVI.ready(init);


    return cmp;


} ();
