﻿//<![CDATA[
// JScript File

if (!window.BuzzminderFramework) {
    BuzzminderFramework = {};
}

BuzzminderFramework.Utility =
{
    htmlEnCode: function(str) {
        var s = "";
        if (str.length == 0) {
            return "";
        }

        s = str.replace(/&/gm, "&amp;");
        s = s.replace(/</gm, "&lt;");
        s = s.replace(/>/gm, "&gt;");
        s = s.replace(/   /gm, "&nbsp;");
        s = s.replace(/\'/gm, "&#39;");
        s = s.replace(/\"/gm, "&quot;");
        return s.replace(/(\n|\r)/gm, "&lt;br&gt;");
    },
    htmlDeCode: function(str) {
        var s = "";
        if (str.length == 0) {
            return '';
        }

        s = str.replace(/&amp;/gm, "&");
        s = s.replace(/&lt;/gm, "<");
        s = s.replace(/&gt;/gm, ">");
        s = s.replace(/&nbsp;/gm, "   ");
        s = s.replace(/&#39;/gm, "\'");
        s = s.replace(/&quot;/gm, "\"");
        return s.replace(/<br>/gm, "\n");
    },
    removeHtmlTags: function(str) {
        return str.replace(/<[a-zA-Z\/][^<>]+>/g, " ");
    },

    getQueryString: function(key) {
        var url = location.href;
        try {
            var paramString = url.split("?")[1];
            var params = paramString.split("&");

            for (var i = 0; i < params.length; i++) {
                var temp = params[i].split("=");
                if (temp[0].toLowerCase() == key.toLowerCase()) {
                    return unescape(temp[1]);
                }
            }
        }
        catch (e) {
        }

        return null;
    },
    addEvent: function(elementWrapper, eventName, funcObj) {
        try {
            var domObj = null;

            if (typeof (elementWrapper) == "object") {
                domObj = elementWrapper;
            }
            else if (typeof (elementWrapper) == "string") {
                domObj = document.getElementById(elementWrapper);
            }
            if (window.attachEvent) {
                domObj.attachEvent("on" + eventName, funcObj);
            }
            else {
                domObj.addEventListener(eventName, funcObj, false)
            }
            domObj = null;
            return true;
        }
        catch (e) {
            return false;
        }
    },
    removeEvent: function(elementWrapper, eventName, funcObj) {
        try {
            var domObj = null;

            if (typeof (elementWrapper) == "object") {
                domObj = elementWrapper;
            }
            else if (typeof (elementWrapper) == "string") {
                domObj = document.getElementById(elementWrapper);
            }
            if (window.detachEvent) {
                domObj.detachEvent("on" + eventName, funcObj);
            }
            else {
                domObj.removeEventListener(eventName, funcObj, false)
            }
            domObj = null;
            return true;
        }
        catch (e) {
            return false;
        }
    },
    removeAllChildren: function(e) {
        while (e.hasChildNodes()) {
            e.removeChild(e.firstChild);
        }
    },
    getElementsByClassName: function(sender, className) {
        var ret = new Array();

        SearchSepcificElementByClassName(sender, className, ret);

        return ret;

        function SearchSepcificElementByClassName(senderObj, className, container) {
            if (senderObj.className == className) {
                container.push(senderObj);
            }

            if (senderObj.childNodes.length > 0) {
                for (var i = 0; i < senderObj.childNodes.length; i++) {
                    SearchSepcificElementByClassName(senderObj.childNodes[i], className, container);
                }
            }
        }
    },
    getOffsetDeeply: function(object, offset) {
        if (!object.offsetParent) {
            return;
        }

        offset.left += object.offsetLeft;
        offset.top += object.offsetTop;
        Jony.Utilities.getOffsetDeeply(object.offsetParent, offset);
    },
    trim: function(string) {
        return string.replace(/(^\s*)|(\s*$)/g, "");
    },
    css: function(sender, cssObject) {
        for (i in cssObject) {
            sender.style[i] = cssObject[i];
        }
    },

    //// the OpacityContext structure should be as same as the following    OpacityContext:{ startOpacity: 0, finishOpacity: 100, milliSeconds: 20, demension:10, finished: false };
    setOpacity: function(object, opacityContext) {
        init();

        function init() {
            var thisTimerId = null;
            thisTimerId = setInterval(function() {
                setOpacityIntervally(object, opacityContext, thisTimerId);
            }, opacityContext.milliSeconds);
        }

        function setOpacityIntervally(object, opacityContext, timerId) {
            if (opacityContext.startOpacity <= opacityContext.finishOpacity) {
                opacityContext.startOpacity += opacityContext.demension;
                if (opacityContext.startOpacity > opacityContext.finishOpacity) {
                    opacityContext.startOpacity = opacityContext.finishOpacity;
                }
            }
            else {
                opacityContext.startOpacity -= opacityContext.demension;
                if (opacityContext.startOpacity < opacityContext.finishOpacity) {
                    opacityContext.startOpacity = opacityContext.finishOpacity;
                }
            }

            object.style.opacity = (opacityContext.startOpacity / 100);
            object.style.MozOpacity = (opacityContext.startOpacity / 100);
            object.style.KhtmlOpacity = (opacityContext.startOpacity / 100);
            object.style.filter = "progid:DXImageTransform.Microsoft.Alpha( style=0,opacity=" + opacityContext.startOpacity + ")";

            if (opacityContext.startOpacity == opacityContext.finishOpacity) {
                clearInterval(timerId);
                opacityContext.finished = true;
                //// if Opacity set to 100 then remove Opacity property
                if (BuzzminderFramework.WebBrowserInformation.isIE &&
                            BuzzminderFramework.WebBrowserInformation.mainVersion === "6" &&
                            opacityContext.finishOpacity == 100) {
                    object.style.opacity = "";
                    object.style.MozOpacity = "";
                    object.style.KhtmlOpacity = "";
                    object.style.filter = "";
                }
            }
        }
    }
}

//]]>
