﻿var detailBrowser = null;
var a2a_config = null; 

BrowserClass = function () {
    this.Links = new Array();
    this.currentDetail = -1; 
    this.showSocialLink = 1; 
}

BrowserClass.prototype = {
    ClearLinks: function () {
        this.Links = new Array();
        this.currentDetail = -1;
    },
    NoSocialLink: function () {
        this.showSocialLink = 0;
    },
    AddLinkWithGoogle: function (name, url, template, originalUrl, latitude, longitude, markup, markerclass) {
        this.Links.push({ image: 0, name: name, url: url, template: template, originalUrl: originalUrl, latitude: latitude, longitude: longitude, markup: markup, markerletter: markerclass });
    },
    AddLink: function (name, url, template, originalUrl) {
        this.Links.push({ image: 0, name: name, url: url, template: template, originalUrl: originalUrl });
    },

    AddImage: function (name, url, template, originalUrl) {
        this.Links.push({ image: 1, name: name, url: url, template: template, originalUrl: originalUrl });
    },
    Init: function () {
        var self = this;

        $("body").delegate('#modalclose', "click", function () { self.CloseDetail(); });
        $("body").delegate('#modelprint', "click", function () { self.PrintDetail(); });
        $("body").delegate('#modalprev', "click", function () { self.DetailPrevious(); });
        $("body").delegate('#modalnext', "click", function () { self.DetailNext(); });

    },
    PrintDetail: function () {
        var url = this.Links[this.currentDetail].originalUrl + "?prt=1";
        var w = window.open(url);
        return false;
    },
    OpenPage: function (ndx) {
        link = this.Links[ndx];
        document.location.href = link.originalUrl;
        return false;
    },

    OpenDetail: function (ndx) {
        try {
            $("#modal").jqm({ modal: false });
            $("#modal").jqmShow();
            this.ShowDetail(ndx);
        } catch (ex) {
            alert(ex);
        }
        return false;
    },

    LoadGoogle: function () {
        if (gMarkers != null) {
            if (gMarkers) {
                for (var i = 0; i < gMarkers.length; i++) {
                    gMarkers[i].m.setMap(null);
                    google.maps.event.clearListeners(gMarkers[i].m, 'click');
                    gMarkers[i].m = null;
                    gMarkers[i].i = null;
                }
            }
        }

        gMarkers = new Array();

        for (var x = 0; x < this.Links.length; x++) {



            var item = this.Links[x];
            var myLatlng = new google.maps.LatLng(item.latitude, item.longitude);
            var marker = null;
            if (item.markerletter != null && item.markerletter != "") {
                var greenIcon = "http://maps.gstatic.com/intl/en_us/mapfiles/marker_green" + item.markerletter + ".png";
                marker = new google.maps.Marker({ icon: greenIcon, position: myLatlng, title: item.name });
            } else {
                marker = new google.maps.Marker({ position: myLatlng, title: item.name });
            }
            marker.setMap(gMap);
            var infowindow = new google.maps.InfoWindow({ content: item.markup });
            gMarkers.push(new GMarkerClass(marker, infowindow));
        }


        var latlngbounds = new google.maps.LatLngBounds();
        if (gMarkers != null) {
            if (gMarkers) {
                for (var i = 0; i < gMarkers.length; i++) {
                    if (gMarkers[i].m.position.lat() != 0 && gMarkers[i].m.position.lng() != 0) {
                        latlngbounds.extend(gMarkers[i].m.position);
                    }
                }
            }
        }

        if (this.Links.length > 1) {
            gMap.fitBounds(latlngbounds); //.setCenter(latlngbounds.getCenter(), map.getBoundsZoomLevel(latlngbounds));
        } else {
            gMap.fitBounds(latlngbounds);
            gMap.setZoom(10);
        }

    },
    ShowDetail: function (ndx) {
        var self = this;
        link = this.Links[ndx];

        this.currentDetail = ndx;

        $("body").undelegate('#modalprev', "click");
        $("body").undelegate('#modalnext', "click");


        if (this.currentDetail != 0) {
            $("body").delegate('#modalprev', "click", function () { self.DetailPrevious(); });
            $('#modalprev').removeClass("disabled").removeAttr("disabled");
        } else {
            $('#modalprev').addClass("disabled").attr("disabled", "disabled");
        }


        if (this.currentDetail < this.Links.length - 1) {
            $("body").delegate('#modalnext', "click", function () { self.DetailNext(); });
            $('#modalnext').removeClass("disabled").removeAttr("disabled");
        } else {
            $('#modalnext').addClass("disabled").attr("disabled", "disabled");
        }


        if (link.image == 0) {

            $("#modal").showLoading();
            $.ajax({
                url: link.url + "&tpl=" + link.template,
                type: 'GET',
                cache: false,
                success: function (html) {
                    $("#articleSpace").html(html);
                    $("#modal").hideLoading();
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    $("#articleSpace").html("<P>An error occured : " + +"</P>");
                    $("#modal").hideLoading();
                }

            });
        } else {
            $("#articleSpace").html("<img src='" + link.url + " '/>");
        }

        if (this.showSocialLink == 1) {

            a2a_config = a2a_config || {};
            a2a_config.tracking_callback = {
                ready: function () {
                    a2a_config.target = '.share-this';
                    a2a.init('page');
                }
            };

            a2a_config = {
                linkname: link.name,
                linkurl: link.originalUrl,
                num_services: 10,
                show_title: 1
            };


            var addtohtml = $('<div class="share-this a2a_target a2a_kit a2a_default_style" style="float: right; margin-top: 28px;"><a class="a2a_dd" id="shareLink" href="http://www.addtoany.com/share_save">Share</a> <span class="a2a_divider"></span><a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_email"></a></div>');

            $("#addtoanytgt").html("");
            $("#addtoanytgt").append(addtohtml);

            $("#shareLink").attr("href", "http://www.addtoany.com/share_save?linkurl=" + link.originalUrl + "&name=" + link.name);


            var a = document.createElement('script');
            a.type = 'text/javascript';
            a.async = true;
            a.id = 'bdaddtoany';
            $("#bdaddtoany").remove();
            a.src = 'http://static.addtoany.com/menu/page.js';
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(a, s);
        }


    },
    ListDetail: function (link, cat, ln) {
        var self = this;
        $("#itemsBrowser").showLoading();
        $.ajax({
            url: link + "?ln=" + ln + "&cat=" + cat,
            type: 'GET',
            cache: false,
            success: function (html) {
                var extract = $(html);
                self.ClearLinks();
                for (var ne = 0; ne < extract.length; ne++) {
                    if (extract[ne].id && extract[ne].id == 'itemsBrowser') {
                        $("#" + extract[ne].id).html(extract[ne].innerHTML);
                        break;
                    }
                }
                for (var ne = 0; ne < extract.length; ne++) {
                    if (extract[ne].id && extract[ne].id == 'dynamic') {
                        script = extract[ne].innerHTML;
                        eval(script);
                        break;
                    }
                }

                $("#itemsBrowser").hideLoading();

            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $("#itemsBrowser").html("<P>An error occured : " + +"</P>");
                $("#itemsBrowser").hideLoading();
            }

        });

    },
    DetailNext: function () {
        this.currentDetail++;
        this.ShowDetail(this.currentDetail);
    },
    DetailPrevious: function () {
        this.currentDetail--;
        this.ShowDetail(this.currentDetail);

    },
    CloseDetail: function (id) {
        $("#modal").jqmHide();
    }

}


