﻿// JScript File

if (typeof eSmart == "undefined" || !eSmart) { var eSmart = {}; }

eSmart.IsBrowserIE = function() {
    try
    { return (window.navigator.userAgent.indexOf("MSIE ") > 0); }
    catch (x)
    { return false; }
}

eSmart.IsBrowserIE8 = function() {
    try {
        if (eSmart.IsBrowserIE()) {
            if (window.navigator.userAgent.indexOf("Trident/4.0") > 0) {
                return true;
            }
        }
        return false;
    }
    catch (x)
    { return false; }
}

// IsBrowserNS:
// Returns true if the executing browser it a Netscape browser.
eSmart.IsBrowserNS = function() {
    try
    { return (window.navigator.userAgent.indexOf("Netscape") > 0); }
    catch (x)
    { return false; }
}

// IsBrowserFirefox:
// Returns true if the executing browser it a Firefox browser.
eSmart.IsBrowserFirefox = function() {
    try
    { return (window.navigator.userAgent.indexOf("Firefox") > 0); }
    catch (x)
    { return false; }
}

eSmart.disableNext = function() {
    var nextButton = document.getElementById('b_next');
    if (nextButton != null) {
        document.getElementById('b_next').disabled = true;
    }
    return true;
}

eSmart.Calendar = function(sDivID, aInputID) {
    var Dom = YAHOO.util.Dom,
        Event = YAHOO.util.Event,
        cal1,
        over_cal = false,
        cur_field = '';

    var init = function() {
        cal1 = new YAHOO.widget.Calendar("cal1", sDivID);
        cal1.cfg.setProperty("mindate", "<%=date()%>", false);
        cal1.selectEvent.subscribe(getDate, cal1, true);
        cal1.renderEvent.subscribe(setupListeners, cal1, true);
        Event.addListener(aInputID, 'focus', showCal);
        Event.addListener(aInputID, 'blur', hideCal);
        cal1.render();
        dp.SyntaxHighlighter.HighlightAll('code');
    }

    var setupListeners = function() {
        Event.addListener(sDivID, 'mouseover', function() {
            over_cal = true;
        });
        Event.addListener(sDivID, 'mouseout', function() {
            over_cal = false;
        });
    }

    var getDate = function() {
        var calDate = this.getSelectedDates()[0];
        calDate = (calDate.getMonth() + 1) + '/' + calDate.getDate() + '/' + calDate.getFullYear();
        cur_field.value = calDate;
        over_cal = false;
        hideCal();
    }

    var showCal = function(ev) {
        var tar = Event.getTarget(ev);
        cur_field = tar;

        var xy = Dom.getXY(tar),
            date = Dom.get(tar).value;
        if (date) {
            cal1.cfg.setProperty('selected', date);
            cal1.cfg.setProperty('pagedate', new Date(date), true);
        } else {
            cal1.cfg.setProperty('selected', '');
            cal1.cfg.setProperty('pagedate', new Date(), true);
        }
        cal1.render();
        Dom.setStyle(sDivID, 'display', 'block');
        xy[1] = xy[1] + 20;
        Dom.setXY(sDivID, xy);
    }

    var hideCal = function() {
        if (!over_cal) {
            Dom.setStyle(sDivID, 'display', 'none');
        }
    }

    Event.addListener(window, 'load', init);
}


eSmart.AutoComplete = function(s_tag, oX, formatResult) {
    var TextTagsAlwaysShow = document.getElementById("TextTagsAlwaysShow");
    TextTagsAlwaysShow.style.paddingBottom = 0;

    // Use a LocalDataSource
    var oDS = new YAHOO.util.LocalDataSource(oX.Data);
    oDS.responseSchema = oX;

    // Instantiate AutoCompletes
    var oConfigs = {
        prehighlightClassName: "yui-ac-prehighlight",
        useShadow: true,
        queryDelay: 0,
        minQueryLength: 0,
        maxResultsDisplayed: oX.Data.length,
        animVert: .01
    }

    // Optional to define fields for single-dimensional array
    //oDS.responseSchema = {fields : ["area"]};

    // Instantiate the AutoComplete            
    var oAC = new YAHOO.widget.AutoComplete("input_" + s_tag, "div_" + s_tag + "Container", oDS, oConfigs);
    oAC.resultTypeList = false;
    oAC.formatResult = formatResult;
    var myHandler = function(sType, aArgs) {
        var myAC = aArgs[0]; // reference back to the AC instance
        var elLI = aArgs[1]; // reference to the selected LI element
        var oData = aArgs[2]; // object literal of selected item's result data

        if (oData == null) {
            UnmatchedHandler(sType, aArgs)
            return;
        }

        eSmart.feedData(oData);
    };
    oAC.itemSelectEvent.subscribe(myHandler);

    var TextStartToggler = YAHOO.util.Dom.get("toggle_" + s_tag);
    var oPushButton = new YAHOO.widget.Button({ container: TextStartToggler });
    var toggleTextStart = function(e) {
        //YAHOO.util.Event.stopEvent(e);
        if (!YAHOO.util.Dom.hasClass(TextStartToggler, "open")) {
            YAHOO.util.Dom.addClass(TextStartToggler, "open")
        }

        // Is open
        if (oAC.isContainerOpen()) {
            oAC.collapseContainer();
        }
        // Is closed
        else {
            oAC.getInputEl().focus(); // Needed to keep widget active
            setTimeout(function() { // For IE
                oAC.sendQuery("");
            }, 0);
        }
    }
    oPushButton.on("click", toggleTextStart);
    oAC.containerCollapseEvent.subscribe(function() { YAHOO.util.Dom.removeClass(TextStartToggler, "open") });

    var UnmatchedHandler = function(sType, aArgs) {
        var myAC = aArgs[0]; // reference back to the AC instance
        var elLI = aArgs[1]; // reference to the selected LI element
        var oData = aArgs[2]; // object literal of selected item's result data

        eSmart.emptyFields(oData);
    }

    oAC.unmatchedItemSelectEvent.subscribe(UnmatchedHandler);


    return {
        oDS: oDS,
        oAC: oAC
    };
}

eSmart.TagsAlwaysShow = function(s_tag, oX, formatResult) {
    //if (!(eSmart.IsBrowserFirefox() || eSmart.IsBrowserIE8())) {        
    //    return eSmart.AutoComplete(s_tag, oX, formatResult);
    //}

    // Use a LocalDataSource
    var oDS = new YAHOO.util.LocalDataSource(oX.Data);
    oDS.responseSchema = oX;

    if (oX.Data.length == 0) {
        var TextTagsAlwaysShow = document.getElementById("TextTagsAlwaysShow");
        TextTagsAlwaysShow.style.paddingBottom = 0;
    }

    // Instantiate AutoCompletes
    var oConfigs = {
        alwaysShowContainer: true,
        prehighlightClassName: "yui-ac-prehighlight",
        useShadow: true,
        autoHighlight: false,
        queryDelay: 0,
        minQueryLength: 0,
        maxResultsDisplayed: oX.Data.length,
        animVert: .01
    }

    // Optional to define fields for single-dimensional array
    //oDS.responseSchema = {fields : ["area"]};

    // Instantiate the AutoComplete            
    var oAC = new YAHOO.widget.AutoComplete("input_" + s_tag, "div_" + s_tag + "Container", oDS, oConfigs);
    oAC.resultTypeList = false;
    oAC.formatResult = formatResult;
    var myHandler = function(sType, aArgs) {
        var myAC = aArgs[0]; // reference back to the AC instance
        var elLI = aArgs[1]; // reference to the selected LI element
        var oData = aArgs[2]; // object literal of selected item's result data

        if (oData == null) {
            UnmatchedHandler(sType, aArgs)
            return;
        }

        eSmart.feedData(oData);
    };
    oAC.itemSelectEvent.subscribe(myHandler);
    if (eSmart.IsBrowserFirefox() || eSmart.IsBrowserIE8()) oAC.sendQuery("");

    var UnmatchedHandler = function(sType, aArgs) {
        var myAC = aArgs[0]; // reference back to the AC instance
        var elLI = aArgs[1]; // reference to the selected LI element
        var oData = aArgs[2]; // object literal of selected item's result data
        
        eSmart.emptyFields(oData);
    };

    //oAC.unmatchedItemSelectEvent.subscribe(UnmatchedHandler);


    return {
        oDS: oDS,
        oAC: oAC
    };
}

eSmart.ShowContainer = function(oTagShow) {
    if (oTagShow.oAC != null) oTagShow.oAC.sendQuery("");
    
    return;
}

// Specified for Top Navigation Youtube Video link
function YouTubeNewWindow(url) 
{
	JSYouTubeNewWindow(url, 'VideoTutorial');
}

function JSYouTubeNewWindow(PagePath, WindowName)
{
    var WinSettings = "modal=yes,title=show,toolbar=0,location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=640,height=390,top=50,left=50";
    var win=window.open(PagePath, WindowName, WinSettings);
    win.focus();
}

