﻿///<reference path=jquery-1.3.2.js/>

$(document).ready(function() {
    // ======== main nav start ============
    $("ul.subnav").parent().append("<span></span>"); //Only shows drop down trigger when js is enabled - Adds empty span tag after ul.subnav

    $("ul.topnav li").hover(function() {
        $(this).find("span").addClass("subhover"); //On hover over, add class "subhover"
    }, function() {	//On Hover Out
        $(this).find("span").removeClass("subhover"); //On hover out, remove class "subhover"
    });

    $("ul.topnav li span").hover(function() { //When trigger is clicked...

        //Following events are applied to the subnav itself (moving subnav up and down)
        $(this).parent().find("ul.subnav").stop().slideDown('fast').show('slow', function() {
            $(this).height("auto");
        }); //Drop down the subnav on click


        $(this).parent().hover(function() {
        }, function() {
            $(this).parent().find("ul.subnav").stop().slideUp('fast'); //When the mouse hovers out of the subnav, move it back up
        });

        //Following events are applied to the trigger (Hover events for the trigger)
    });
    // ======== main nav end  ============\

    //updateLoginStatus();
    updateCssClassPrice();
    setupSymbolTip();
    setupWhatsThis();
    setupDefaultValue();

    // bind jqm login
    $('#jqmMasterLogin').jqm({ ajax: siteUrl + '/ajax/loginlite.aspx', trigger: 'a.jqmMasterLogintrigger' });
    $('#jqmMasterJoin').jqm({ ajax: siteUrl + '/ajax/joinlite.aspx', trigger: 'a.jqmMasterJointrigger' });
    $('#jqmMasterRegisterFB').jqm({ ajax: siteUrl + '/ajax/linkfblite.aspx' });

    $('.fbLoginLink').click(PopFBLogIn);

    $('#masterLogOut').click(function() {
        try {
            FB.Connect.get_status().waitUntilReady(function(status) {
                if (status == FB.ConnectState.connected) {
                    FB.Connect.logout(function() { window.location.href = siteUrl + "/logout"; });
                }
                else {
                    window.location.href = siteUrl + "/logout";
                }
            });
        }
        catch (ex) { window.location.href = siteUrl + "/logout"; }
    }); //end masterLogOut

    $('#loading').ajaxStart(function() { $(this).show(); });
    $('#loading').ajaxStop(function() { $(this).hide(); });

});       // end document ready


function onMainQuoteAutoCompleteSelected(source, eventArgs) {
    $("#" + source._element.id).val(eventArgs.get_value());
    redirect(eventArgs.get_value());
}
//set the width of autocomplete box.
function onMainQuoteAutoCompleteShow(source, eventArgs) {
    $("#" + source._popupBehavior._element.id).css({ 'width': 'auto', 'z-index': 2 });
}

function onQuoteClick() {
    redirect($('#mainQuote :textbox').val());
}

function redirect(symbol) {
    if (symbol == '')
        alert("please enter a symbol");
    else
        window.location.href = "/company/" + symbol;
}

function updateCssClassPrice() {
    $(".price:contains('-')").css({ "color": "red", "text-align": "right" });
    $(".price:not(:contains('-'))").css({ "color": "green", "text-align": "right" });
}

function closeMasterLogin() {
    $('#jqmMasterLogin').jqmHide();
}

function updateLoginStatus() {
    if (isLogin() && $(".loginView:contains('Log In')").length > 0) {
        $.getJSON("/ajax/common.aspx?method=getProfile", function(data) {
            if (checkAjaxResponse(data)) {
                var status = data.Result.UserName + ' - ' + data.Result.Email + ' | <a href=\"/logout\">Log Out</a>';
                $('.loginView').html(status);
            }
        });
    }
}

function checkAjaxResponse(data) {
    if (data.Success) return true;

    if (data.Message == "Login expired")
        window.location = "/login";
    else if (data.Message != "")
        alert(data.Message);

    return false;
}

function isLogin() {
    return Sys.Services.AuthenticationService.get_isLoggedIn();
}

function isFBLogin() {
    FB.Connect.get_status().waitUntilReady(function(status) {
        return (status == FB.ConnectState.connected);
    });
}

function PopFBLogIn() {
    FB.Connect.get_status().waitUntilReady(function(status) {
        if (status == FB.ConnectState.connected)
            FBSSOLogin();
        else
            FB.Connect.requireSession(FBSSOLogin);
    });
}

function FBSSOLogin() {
    $.getJSON("/ajax/common.aspx?method=fbLogin", function(data) {
        if (data.Success)
            window.location.reload();
        else if (data.Message == "AppNotAuthorized")
            $('#jqmMasterRegisterFB').jqmShow();
    });
}

function setupSymbolTip() {
    $('.symbol').each(function() {

        // Destroy currrent tooltip if present
        if ($(this).data("qtip")) return true; //$(this).qtip("destroy");

        var symbol = $(this).text();

        $(this).qtip(
        {
            // Give it a loading message while request is being sent
            content: $('#loading').html(),
            position: {
                corner: { tooltip: 'leftMiddle' },
                adjust: { screen: true }
            },
            show: { delay: 500 },
            style: {
                width: 400,
                border: { width: 1, radius: 1, color: '#000000' }
            },
            api: {
                // Retrieve the content when tooltip is first rendered
                onRender: function() {
                    var self = this;
                    TSService.GetChart(symbol, 3, function(url) {
                        self.updateContent("<img src=\"" + url + "\">");
                    });
                }}//end api 
            });
        });
    } // end setupSymbolTip

function setupWhatsThis() {
    $('.whatsThis').each(function() {
        // Destroy currrent tooltip if present
        if ($(this).data("qtip")) return true; //$(this).qtip("destroy");

        var content = $(this).attr('tip');
        $(this).qtip({content: content});
    });
} // end setupWhatsThis

    function setupDefaultValue() {
        $('.defaultValue').each(function() {
            var v = this.value;
            $(this).css('color', '#666'); // this could be in the style sheet instead
            $(this).focus(function() {
                if (this.value == v) {
                    this.value = '';
                    $(this).css('color', '#333');
                }
            });
            $(this).blur(function() {
                if (this.value == '') {
                    $(this).css('color', '#666');
                    this.value = v;
                }
            });
        });
    } // end setupDefaultValue

    /*=====jqModal start =====*/
    /*
    * jqModal - Minimalist Modaling with jQuery
    *   (http://dev.iceburg.net/jquery/jqModal/)
    *
    * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
    * Dual licensed under the MIT and GPL licenses:
    *   http://www.opensource.org/licenses/mit-license.php
    *   http://www.gnu.org/licenses/gpl.html
    * 
    * $Version: 03/01/2009 +r14
    */
    (function($) {
        $.fn.jqm = function(o) {
            var p = {
                overlay: 50,
                overlayClass: 'jqmOverlay',
                closeClass: 'jqmClose',
                trigger: '.jqModal',
                ajax: F,
                ajaxText: '',
                target: F,
                modal: F,
                toTop: F,
                onShow: F,
                onHide: F,
                onLoad: F
            };
            return this.each(function() {
                if (this._jqm) return H[this._jqm].c = $.extend({}, H[this._jqm].c, o); s++; this._jqm = s;
                H[s] = { c: $.extend(p, $.jqm.params, o), a: F, w: $(this).addClass('jqmID' + s), s: s };
                if (p.trigger) $(this).jqmAddTrigger(p.trigger);
            });
        };

        $.fn.jqmAddClose = function(e) { return hs(this, e, 'jqmHide'); };
        $.fn.jqmAddTrigger = function(e) { return hs(this, e, 'jqmShow'); };
        $.fn.jqmShow = function(t) { return this.each(function() { t = t || window.event; $.jqm.open(this._jqm, t); }); };
        $.fn.jqmHide = function(t) { return this.each(function() { t = t || window.event; $.jqm.close(this._jqm, t) }); };

        $.jqm = {
            hash: {},
            open: function(s, t) {
                var h = H[s], c = h.c, cc = '.' + c.closeClass, z = (parseInt(h.w.css('z-index'))), z = (z > 0) ? z : 3000, o = $('<div></div>').css({ height: '100%', width: '100%', position: 'fixed', left: 0, top: 0, 'z-index': z - 1, opacity: c.overlay / 100 }); if (h.a) return F; h.t = t; h.a = true; h.w.css('z-index', z);
                if (c.modal) { if (!A[0]) L('bind'); A.push(s); }
                else if (c.overlay > 0) h.w.jqmAddClose(o);
                else o = F;

                h.o = (o) ? o.addClass(c.overlayClass).prependTo('body') : F;
                if (ie6) { $('html,body').css({ height: '100%', width: '100%' }); if (o) { o = o.css({ position: 'absolute' })[0]; for (var y in { Top: 1, Left: 1 }) o.style.setExpression(y.toLowerCase(), "(_=(document.documentElement.scroll" + y + " || document.body.scroll" + y + "))+'px'"); } }

                if (c.ajax) {
                    var r = c.target || h.w, u = c.ajax, r = (typeof r == 'string') ? $(r, h.w) : $(r), u = (u.substr(0, 1) == '@') ? $(t).attr(u.substring(1)) : u;
                    r.html(c.ajaxText).load(u, function() { if (c.onLoad) c.onLoad.call(this, h); if (cc) h.w.jqmAddClose($(cc, h.w)); e(h); });
                }
                else if (cc) h.w.jqmAddClose($(cc, h.w));

                if (c.toTop && h.o) h.w.before('<span id="jqmP' + h.w[0]._jqm + '"></span>').insertAfter(h.o);
                (c.onShow) ? c.onShow(h) : h.w.show(); e(h); return F;
            },
            close: function(s) {
                var h = H[s]; if (!h.a) return F; h.a = F;
                if (A[0]) { A.pop(); if (!A[0]) L('unbind'); }
                if (h.c.toTop && h.o) $('#jqmP' + h.w[0]._jqm).after(h.w).remove();
                if (h.c.onHide) h.c.onHide(h); else { h.w.hide(); if (h.o) h.o.remove(); } return F;
            },
            params: {}
        };
        var s = 0, H = $.jqm.hash, A = [], ie6 = $.browser.msie && ($.browser.version == "6.0"), F = false,
i = $('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({ opacity: 0 }),
e = function(h) { if (ie6) if (h.o) h.o.html('<p style="width:100%;height:100%"/>').prepend(i); else if (!$('iframe.jqm', h.w)[0]) h.w.prepend(i); f(h); },
f = function(h) { try { $(':input:visible', h.w)[0].focus(); } catch (_) { } },
L = function(t) { $()[t]("keypress", m)[t]("keydown", m)[t]("mousedown", m); },
m = function(e) { var h = H[A[A.length - 1]], r = (!$(e.target).parents('.jqmID' + h.s)[0]); if (r) f(h); return !r; },
hs = function(w, t, c) {
    return w.each(function() {
        var s = this._jqm; $(t).each(function() {
            if (!this[c]) { this[c] = []; $(this).click(function() { for (var i in { jqmShow: 1, jqmHide: 1 }) for (var s in this[i]) if (H[this[i][s]]) H[this[i][s]].w[i](this); return F; }); } this[c].push(s);
        });
    });
};
    })(jQuery);

    /*====== jqModal end ========*/

    /*======= common utility start =======*/

    function getCookie(c_name) {
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(c_name + "=");
            if (c_start != -1) {
                c_start = c_start + c_name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) c_end = document.cookie.length;
                return unescape(document.cookie.substring(c_start, c_end));
            }
        }
        return "";
    }

    /*======= common utility end =======*/

