﻿var isSearchInitiated = false;
var tMonths = new Array();
tMonths[0] = "Jan";
tMonths[1] = "Feb";
tMonths[2] = "Mar";
tMonths[3] = "Apr";
tMonths[4] = "May";
tMonths[5] = "Jun";
tMonths[6] = "Jul";
tMonths[7] = "Aug";
tMonths[8] = "Sep";
tMonths[9] = "Oct";
tMonths[10] = "Nov";
tMonths[11] = "Dec";

var baseURL = "http://localhost:2861";

$(document).ready(function () {    
    if (!($("#btnMainSearchKeyword") == null && $("#txtMainSearchKeyword") == null && $("#cmbGlobalSearch") == null)) {
        $("#aspnetForm").submit(HandleSearchSubmit);
        $("#txtMainSearchKeyword").keypress(HandleSearchTextboxEnter);
        $("#btnMainSearchKeyword").click(HandleSearchClick);        
        SetGlobalSearchKeyword();
        ShowMainLoginErrorForReturnURL();
    }
});

function loadScripts(array, callback) {
    var loader = function (src, handler) {
        var script = document.createElement("script");
        script.src = src;
        script.onload = script.onreadystatechange = function () {
            script.onreadystatechange = script.onload = null;
            handler();
        }
        var head = document.getElementsByTagName("head")[0];
        (head || document.body).appendChild(script);
    };
    (function () {
        if (array.length != 0) {
            loader(array.shift(), arguments.callee);
        } else {
            callback && callback();
        }
    })();
}

function AddScripts()
{    
    loadScripts
    (
        [            
            baseURL + "/Scripts/superfish.js"            
        ]
        ,
        function () {
                       
        }
    )    
}


function SetGlobalSearchKeyword() {
    var txtKeyword = document.getElementById('txtMainSearchKeyword');
    var qsParm = new Array();
    qsParm = GetQueryStringParam();

    if (!(qsParm["Keywords"] == null || qsParm["Keywords"] == "")) {
        txtKeyword.value = qsParm["Keywords"];
    }
    else {
        qsParm = GetQueryStringParamFormRoute();
        if (!(qsParm["Keywords"] == null || qsParm["Keywords"] == "")) {
            txtKeyword.value = RemoveSpecialCharatersForURL(qsParm["Keywords"]);
        }
    }
}

function ShowMainLoginErrorForReturnURL() {
    var qsParm = new Array();
    qsParm = GetQueryStringParam();

    if (!(qsParm["ReturnUrl"] == null || qsParm["ReturnUrl"] == "")) {
        var tdLoginMainError = document.getElementById('tdLoginMainError');
        if (!(tdLoginMainError == null || tdLoginMainError == "undefined")) {
            tdLoginMainError.style.display = '';
        }
    }
}


function GetQueryStringParam() {
    var qsParm = new Array();
    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i = 0; i < parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0) {
            
            var key = parms[i].substring(0, pos);
            var val = parms[i].substring(pos + 1);
            qsParm[key] = decodeURIComponent(val);
        }
    }
    
    return qsParm;
}

function GetQueryStringParamFormRoute() 
{
    var qsParm = new Array();
    var query = window.location.href
    var parms = query.split('/');
    if (query.indexOf('SearchGroups') > 0 && parms[4] != undefined) {
        var pos = parms[4].indexOf('?');
        var keyVal = "";
        if (pos > 0)
            keyVal = parms[4].substring(0, pos);
        else
            keyVal = parms[4];

        var key = "Keywords";
        var val = decodeURI(keyVal);
        qsParm[key] = val;
    }

    return qsParm;
}

function ResetValidators(ForGroup) {
    if (typeof (Page_Validators) != "undefined") {
        var i;
        for (i = 0; i < Page_Validators.length; i++) {
            var val = Page_Validators[i];
            val.isvalid = true;

            if (val.validationGroup == ForGroup) {
                ValidatorUpdateDisplay(val);
                val.display = 'None';
            }
        }
         Page_IsValid = true;
        ValidationSummaryOnSubmit(ForGroup);
    }
}

function redirectToGenericPage(MessageID) {
    var wURL = encodeURIComponent(document.location.href);
    window.location = '/GenericMessage.aspx?MessageID=' + MessageID + '&BackURL=' + wURL;
}

function ResetCheckBox(chkBox) {
    if (!($(checkBox) == null || $(checkBox) == "undefined")) {
        var checkBox = chkBox;
        var isChekd = $(checkBox).is(':checked');

        if (isChekd == true) {
            $(checkBox).removeAttr("checked");
        }
    }
}

function HandleSearchSubmit(event) {
    if (isSearchInitiated)
        return false;
}

function HandleSearchTextboxEnter(event) {
    if (event.keyCode == 13) {
        FireGlobalSearch();
        isSearchInitiated = true;
        return false;
    }
}

function HandleSearchClick(event) {
    FireGlobalSearch();
    isSearchInitiated = true;
    return false;
}

function FireGlobalSearch() {
    var cmbSearchFor = document.getElementById('cmbGlobalSearch');
    var txtKeyword = document.getElementById('txtMainSearchKeyword');
    var searchText = "";
    var GroupSearhcText = "";
    var CMSFrontURL = _CMSFRONTURL;
    
    if (!(txtKeyword == null || txtKeyword.value == "" || txtKeyword == "undefined")) {

        if (txtKeyword.value != "")
            searchText = "?Keywords=" + encodeURIComponent(txtKeyword.value);
        
        var SearchText = RemoveSpecialCharatersForURL(txtKeyword.value)
        if (SearchText != "") {
            GroupSearhcText = "/" + encodeURI(SearchText);
        }
    }

    var strFinalURL = '';

    if (cmbSearchFor.value == "1") {

        if (!(GroupSearhcText == "" || GroupSearhcText == "undefined"))
            strFinalURL = '/SearchGroups' + GroupSearhcText;
        else
            strFinalURL = '/BrowseGroups';
    }
    else if (cmbSearchFor.value == "2")
        strFinalURL = CMSFrontURL + '/SearchResults.aspx' + searchText;
    else if (cmbSearchFor.value == "3")
        strFinalURL = '/Search/Users.aspx' + searchText;
    else if (cmbSearchFor.value == "7")
        strFinalURL = CMSFrontURL + '/FAQs/Search' + searchText;
        
    window.location = strFinalURL;
}

function SendShowInterest() {
    var todayDate = new Date();
    var txtNote = $('#txtShowInterest_Message').val();
    txtNote = txtNote.replace(/[\r\n]+/g, "\r\n");
    var random = new Date();
    var URL = "/KPQueries/SubmitShowInterest.aspx";
    $.ajax(
        {
            type: "POST",
            url: URL,
            data: "QueryID=" + $('#txtShowInterest_QueryID').val() + "&random=" + random.getMilliseconds() + "&PersonalNote=" + encodeURIComponent(txtNote),
            async: false,
            success: function (result) {
                var callerButton = $('#txtShowInterest_CalledButton').val();
                var showInsButton = $('#txtInterestShown_Button').val();
                
                $('#' + callerButton).hide();
                $('#' + showInsButton).show();
                $('#' + showInsButton).click(function() 
                    { 
                        var _personalNote = encodeURIComponent(FormatStringForLineBreaks(txtNote));  
                        OpenInterestShownPopup(_personalNote, todayDate, showInsButton);
                    }
                 );

                disablePopup();
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(XMLHttpRequest.readyState + " | " + XMLHttpRequest.responseXML + " | " + XMLHttpRequest.status + " | " + XMLHttpRequest.responseText + " | " + textStatus + " | " + errorThrown);
            }
        }
    );
    }

    function RemoveSpecialCharatersForURL(SearchText) {
        if (SearchText == null) 
        return "";

        //trim the string
        SearchText = SearchText.replace(/^\s+|\s+$/g, '') ;
        SearchText = SearchText.replace(/["]/g, '');
        SearchText = SearchText.replace(/[/\\\?<>:.|+]/g, '');
        return SearchText;
    }

    function FormatStringForLineBreaks(mystring)
    {
        return mystring.replace(/\r?\n|\r/g, "<br>");
    }


/* Date Functions */

function GetFormattedDateWithTime(inputDate)
{
    var format = "MM dd, yyyy hh:mm:ss a";
    return GetDateFormat(inputDate, format);
}

function GetDateFormat(inputDate, format)
{
    var dt = new Date(inputDate);
    var year = null;
    var month = null;
    var dayOfMonth = null;
    var time = null; 

    year = inputDate.getFullYear();
    month = inputDate.getMonth();
    dayOfMonth = inputDate.getDate();
    time = parseTime(inputDate.toTimeString());
    var pattern = "";
    var retValue = "";

    for (var i = 0; i < format.length; i++) {
        var currentPattern = format.charAt(i);
        pattern += currentPattern;
        switch (pattern) {
            case "dd":
                retValue += dayOfMonth;
                pattern = "";
                break;
            case "MM":
                retValue += GetFormattedMonth(month);
                pattern = "";
                break;
            case "yyyy":
                retValue += year;
                pattern = "";
                break;
            case "HH":
                retValue += time.hour;
                pattern = "";
                break;
            case "hh":
                //time.hour is "00" as string == is used instead of ===
                retValue += (time.hour == 0 ? 12 : time.hour < 13 ? time.hour : time.hour - 12);
                pattern = "";
                break;
            case "mm":
                retValue += time.minute;
                pattern = "";
                break;
            case "ss":
                //ensure only seconds are added to the return string
                retValue += time.second.substring(0, 2);
                pattern = "";
                break;
            case "a":
                retValue += time.hour >= 12 ? "PM" : "AM";
                pattern = "";
                break;
            case " ":
                retValue += currentPattern;
                pattern = "";
                break;
            case "/":
                retValue += currentPattern;
                pattern = "";
                break;
            case ":":
                retValue += currentPattern;
                pattern = "";
                break;
            default:
                if (pattern.length === 2 && pattern.indexOf("y") !== 0) {
                    retValue += pattern.substring(0, 1);
                    pattern = pattern.substring(1, 2);
                } else if ((pattern.length === 3 && pattern.indexOf("yyy") === -1)) {
                    pattern = "";
                }
        }
    }
    return retValue;
}

function parseTime(value) 
{
    var retValue = value;
    if (retValue.indexOf(".") !== -1) {
        retValue = retValue.substring(0, retValue.indexOf("."));
    }

    var values3 = retValue.split(":");

    if (values3.length === 3) {
        hour = values3[0];
        minute = values3[1];
        second = values3[2];

        return {
            time: retValue,
            hour: hour,
            minute: minute,
            second: second
        };
    } else {
        return {
            time: "",
            hour: "",
            minute: "",
            second: ""
        };
    }
}

function GetFormattedMonth(month)
{
    if (tMonths[month] != undefined)
        return tMonths[month];   
    else
        return month;
    
}
/* End of Date Functions */

/* Send Trust Request Function */
    function SendFriendRequest() 
    {
        if ($('#txtMessage').val() == "") {
            $('#divErrorMessage').show();
            $('#spanEmptyMessage').show();
            $('#spanRequestPending').hide();
            $('#spanRequestMessageLength').hide();
            $('#spanTrustRequest').hide();
        }
        else if ($('#txtMessage').val().length > 255)
        {
            $('#divErrorMessage').show();
            $('#spanRequestMessageLength').show();
            $('#spanEmptyMessage').hide();
            $('#spanRequestPending').hide();
            $('#spanTrustRequest').hide();
        }
        else {
            var random = new Date();
            var URL = "/UserConsole/SendTrustRequest.aspx?RequestToUserID=" + $('#txtRequestToUserID').val() + "&random=" + random.getMilliseconds() + "&Message=" + encodeURIComponent($('#txtMessage').val());
            $.ajax(
                {
                    type: "GET",
                    contentType: "application/json; charset=utf-8",
                    url: URL,
                    data: "",
                    async: false,
                    success: function (result) {
                        ShowHideControl(result);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.readyState + " | " + XMLHttpRequest.responseXML + " | " + XMLHttpRequest.status + " | " + XMLHttpRequest.responseText + " | " + textStatus + " | " + errorThrown);
                    }
                }
            );
        }
    }

    function ShowHideControl(retvalue) {
        if(retvalue.length<=0)
            return;

        var responseText = retvalue.split('|');
        
        if (responseText[0] == "1") {
            var statusPending = $('#txtPending').val();
            $('#' + statusPending).show();
            var trustButton = $('#txtSendTrustButton').val();
            $('#' + trustButton).hide();
            $('#divErrorMessage').hide();
            disablePopup();
        }
        else if (responseText[0] == "0") 
        {
            $('#divErrorMessage').show();
            $('#spanRequestPending').show();
            $('#spanEmptyMessage').hide();
            $('#spanTrustRequest').hide();
        }
        else if (responseText[0] == "2") {
            $('#divErrorMessage').show();
            $('#spanRequestPending').hide();
            $('#spanEmptyMessage').hide();
            $('#spanRequestMessageLength').hide();
            $('#spanTrustRequest').text(responseText[1]);
            $('#spanTrustRequest').show();
        }
        else if (responseText[0] == "3") {
            $('#divErrorMessage').show();
            $('#spanRequestPending').hide();
            $('#spanEmptyMessage').hide();
            $('#spanRequestMessageLength').hide();
            $('#spanTrustRequest').text(responseText[1]);
            $('#spanTrustRequest').show();
        }
    }
/* End of Send Trust Request Function */

function DisableButtonAfterPostback(btnID, validationGroup) {
        if (!Page_ClientValidate(validationGroup))
            return;
        var btnSubmit = document.getElementById(btnID);
        btnSubmit.value = 'Please wait...';
        btnSubmit.disabled = true;
    }
function SendMessageToUser(UserID)
{
    window.location ='/UserConsole/ComposeMail.aspx?UserID=' + UserID;
}

function HideButtonAfterClick(btnTohide, validationGroup, displaytext, displayCSS) {
    if (Page_ClientValidate(validationGroup)) 
    {
        var btnTohideRef = $('#' + btnTohide);
        btnTohideRef.hide();
        AddDisplayButton(btnTohideRef, displaytext, displayCSS);
    }
}

function AddDisplayButton(btnTohide, displaytext, displayCSS) 
{
    var disButton = $(document.createElement('input')).addClass(displayCSS).attr({ id: 'btnToShow', type: 'button', disabled : 'disabled', value: displaytext });
    btnTohide.parent().append(disButton);
}

function ShowPopup(id, Description)
{
    $('#' + id).qtip(
        {
            style: 
            { 
                classes: 'ui-tooltip-blue' 
            },
            content: 
            {
                text: Description
            },
            position: 
            {
                my: 'bottom left',
                at: 'top left'
             }, 
             hide:
             {
                delay: 300,
                fixed: true
             }
           }
        );
}

function OpenAskQuestion(UserID) 
{
    var strFinalURL = '/AskQuery.aspx';
    if(UserID!=undefined)
    {
        strFinalURL = strFinalURL +'?UserID=' + UserID;
     }
     window.location = strFinalURL;
}
