﻿
if (typeof (window['Vagifem']) === 'undefined') {
    window.Vagifem = {};
}

if (typeof (window.Vagifem['Util']) === 'undefined') {
    window.Vagifem.Util = {};
}

/**
* A utilities class for Vagifem.
*/
Vagifem.Util = {
    'Namespace': function (ns) {
        var nsParts = ns.split(".");
        var root = window;

        for (var i = 0; i < nsParts.length; i++) {
            if (typeof root[nsParts[i]] == "undefined")
                root[nsParts[i]] = new Object();

            root = root[nsParts[i]];
        }
    },
    'IsObject': function (name) {
        var result = false;
        try {
            if (typeof (eval(name)) == "object") {
                result = true;
            }
        } catch (e) {
            result = false;
        }
        return result;
    },
    'IsFunction': function (name) {
        var result = false;
        try {
            if (typeof (eval(name)) == "function") {
                result = true;
            }
        } catch (e) {
            result = false;
        }
        return result;
    },
    'CleanHtml': function (string, quote_style) {
        var hash_map = {}, symbol = '', tmp_str = '', entity = '';
        tmp_str = string.toString();

        if (false === (hash_map = Novo.Util.getHtmlTranslationTable('HTML_ENTITIES', quote_style))) {
            return false;
        }
        hash_map["'"] = '&#039;';
        for (symbol in hash_map) {
            entity = hash_map[symbol];
            tmp_str = tmp_str.split(symbol).join(entity);
        }

        return tmp_str;
    },
    'LoadXmlFile': function (url, callback) {
        jQuery.ajax({
            'type': 'get',
            'url': url,
            'dataType': 'xml',
            'success': callback,
            error: function (request, status, throwError) {
                alert(status);
            }
        });
    },
    'XmlToJson': function (xml) {
        var jq_xml = jQuery(xml);
        if (jq_xml.size()) {
            return
        }
    },
    /*******************
    format: 2009-01-01 or 2009-1-1
    ****************/
    "CheckDate": function (strDate) {

        var result = strDate.match(/((^((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(0?2)([-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))$))/);

        if (result == null) {
            return false;
        }
        else {
            return true;
        }
    },
    "IsMatch": function (str, reg) {
        var result = str.match(reg);
        if (result == null) {
            return false;
        }
        else {
            return true;
        }
    },
    "IsMail": function (str) {
        return str.match(/^[\W\.-_]+@[\w_-]+(\.[\w_-]+)+$/ig) != null;
    },
    "IsMails": function (str) {
        return str.match(/^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)(;(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*))*$/ig) != null;
    }
};
