﻿/// <reference path="./API/Agility.UGC.API.js" />


Agility.RegisterNamespace("Doritos.AgilityData");

(function(AgilityData) {

    AgilityData.GlobalLanguageResoureces = null;

    AgilityData.LoadedContentViews = new Object();
    AgilityData.InappropriateWords = null;



    AgilityData.LoadGlobalLanguageResources = function() {

        $.ajax({
            type: "POST",
            url: AgilityData_WebserviceUrl + '/GetGlobalLanguageResources',
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function(result) {
                if (result.d != undefined && result.d != null) {
                    AgilityData.ProcessGlobalLanguageResoureces(result.d);
                }
            },
            complete: function(XMLHttpRequest, textStatus) {
                //alert(XMLHttpRequest.status + ' ' + textStatus);
                //alert(XMLHttpRequest.responseText);
            }
        });

    }

    AgilityData.LoadInappropriateWords = function() {
        if (AgilityData.InnappropriateWords == null) {
            $.ajax({
                type: "POST",
                url: AgilityData_WebserviceUrl + '/GetInappropriateWords',
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                success: function(result) {
                    if (result.d != undefined && result.d != null) {

                        AgilityData.InappropriateWords = result.d;


                    }
                },
                complete: function(XMLHttpRequest, textStatus) {
                    //alert(XMLHttpRequest.status + ' ' + textStatus);
                    //alert(XMLHttpRequest.responseText);
                }
            });
        }

    }

    AgilityData.LoadContentItem = function(referenceName, callback) {

        if (AgilityData.LoadedContentViews[referenceName] == null) {

            $.ajax({
                type: "POST",
                url: AgilityData_WebserviceUrl + '/GetContentItem',
                data: "{'ReferenceName': '" + referenceName + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                success: function(result) {
                    if (result.d != undefined && result.d != null) {

                        //save results so data doesn't need to be loaded again
                        AgilityData.LoadedContentViews[referenceName] = result.d;

                        callback(result.d);
                    }
                },
                complete: function(XMLHttpRequest, textStatus) {
                    //alert(XMLHttpRequest.status + ' ' + textStatus);
                    //alert(XMLHttpRequest.responseText);
                }
            });
        }
        else {
            //send the already loaded data to the callback
            callback(AgilityData.LoadedContentViews[referenceName]);
        }
    };

    AgilityData.FindContentItemProperty = function(data, propertyName) {
        try {
            propertyName = propertyName.toLowerCase()
            for (var i = 0; i < data.length; i++) {
                if (data[i].Key.toLowerCase() == propertyName) {

                    return data[i].Value;
                }
            }
        }
        catch (e) {
            return "";
        }
    };



    AgilityData.ProcessGlobalLanguageResoureces = function(data) {

        AgilityData.GlobalLanguageResoureces = new Object();
        for (var i = 0; i < data.length; i++) {
            AgilityData.GlobalLanguageResoureces[data[i].ReferenceName] = data[i].ReferenceValue;
        }
    };

    AgilityData.GetGlobalLanguageResource = function(ReferencName) {

        var value = null;
        if (AgilityData.GlobalLanguageResoureces != null) {
            value = AgilityData.GlobalLanguageResoureces[ReferencName];
        }
        if (value != null && value != undefined) {
            return value;
        }
        return "";
    };



    AgilityData.GetCurrentUserID = function() {
        var userid = $.ajax({
            type: "POST",
            url: Agility.ResolveUrl("~/HTTPHandlers/CurrentUserID.ashx"),
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            cache: false

        }).responseText;

        var id = parseInt(userid);

        if (isNaN(id)) return -1;
        return parseInt(userid);
    };

    AgilityData.CheckEmailExists = function(email) {


        var result = jQuery.ajax({
            url: Agility.ResolveUrl("~/HTTPHandlers/CheckEmail.ashx"),
            async: false,
            cache: false,
            data: { "email": email },
            dataType: "text"
        }).responseText;



        var val = parseInt(result);

        if (isNaN(val)) {
            return false;
        }
        else if (val == 0) {
            return false;
        }
        else if (val == 1) {
            return true;
        }

        return false;
    };

    AgilityData.GetCurrentDisplayName = function() {
        var username = $.ajax({
            type: "POST",
            url: Agility.ResolveUrl("~/HTTPHandlers/CurrentUserDisplayName.ashx"),
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            cache: false

        }).responseText;


        return username;
    };

    AgilityData.HasInappropriateWords = function(stringValue) {
        try {
            if (AgilityData.InappropriateWords == null) {
                AgilityData.LoadInappropriateWords();
            }
            if (AgilityData.InappropriateWords != null) {

                for (var i = 0; i < AgilityData.InappropriateWords.length; i++) {

                    var comp = stringValue.toLowerCase().indexOf(AgilityData.InappropriateWords[i].toLowerCase());

                    if (comp >= 0) {
                        return true;
                    }
                }
            }
            return false;
        } catch (e) {
            return false;
        }
    };

    //Removes any html tags/data inside the input string
    AgilityData.HTMLFilter = function(inputString) {
        try {
            return jQuery("<div>").html(inputString).text();
        } catch (err) {
            return "";
        }
    };


    AgilityData.UserCanSubmitVideo = function(userID) {

        var result = jQuery.ajax({
            url: Agility.ResolveUrl("~/HTTPHandlers/UserCanSubmitVideo.ashx"),
            async: false,
            cache: false,
            data: { "userid": userID },
            dataType: "text"
        }).responseText;


        return result;
    };

    AgilityData.VerifyCaptcha = function(code, characters) {

        var result = jQuery.ajax({
            url: Agility.ResolveUrl("~/HTTPHandlers/VerifyCaptcha.ashx"),
            async: false,
            cache: false,
            data: { "code": code, "characters": characters },
            dataType: "text"
        }).responseText;


        return result;
    };

    AgilityData.VerifyUserVideoCount = function(userid) {

        var result = jQuery.ajax({
            url: Agility.ResolveUrl("~/HTTPHandlers/VerifyUserVideoCount.ashx"),
            async: false,
            cache: false,
            data: { "userid": userid },
            dataType: "text"
        }).responseText;

        var val = parseInt(result);

        if (isNaN(val)) {
            return 0;
        }
        else {
            return val;
        }

        
    };

})(Doritos.AgilityData);
