/**
 * Khởi tạo prototype Util, các method, function hay dùng
 * @constructor
 * @author dungtao
 */
function Util() {

}

/**
 * Parse URL ra các thông tin chi tiết như domain, subdomain, patch, tld
 * @param url
 * @returns {{}|*}
 */
Util.prototype.parseUrl = function(url) {
    parsed_url = {}

    if ( url == null || url.length == 0 )
        return parsed_url;

    protocol_i = url.indexOf('://');
    parsed_url.protocol = url.substr(0,protocol_i);

    remaining_url = url.substr(protocol_i + 3, url.length);
    domain_i = remaining_url.indexOf('/');
    domain_i = domain_i == -1 ? remaining_url.length - 1 : domain_i;
    parsed_url.domain = remaining_url.substr(0, domain_i);
    parsed_url.path = domain_i == -1 || domain_i + 1 == remaining_url.length ? null : remaining_url.substr(domain_i + 1, remaining_url.length);

    domain_parts = parsed_url.domain.split('.');
    switch ( domain_parts.length ){
        case 2:
            parsed_url.subdomain = null;
            parsed_url.host = domain_parts[0];
            parsed_url.tld = domain_parts[1];
            break;
        case 3:
            parsed_url.subdomain = domain_parts[0];
            parsed_url.host = domain_parts[1];
            parsed_url.tld = domain_parts[2];
            break;
        case 4:
            parsed_url.subdomain = domain_parts[0];
            parsed_url.host = domain_parts[1];
            parsed_url.tld = domain_parts[2] + '.' + domain_parts[3];
            break;
    }

    parsed_url.parent_domain = parsed_url.host + '.' + parsed_url.tld;

    return parsed_url;
}


/**
 * Lấy URL hiện tại mà chỉ có domain và patch, ko có params
 * @returns {string}
 */
Util.prototype.getCurrentURL = function () {
    return '//' + location.host + location.pathname;
}


/**
 * post data
 * @param request
 * @param sendResponse
 * @auth dungtao
 */
Util.prototype.post = function (request, sendResponse) {
    var _self   = this;
    var resp    = sendResponse;
    var data    = request.message;
    var contentType = (typeof data.contentType != 'undefined' ? data.contentType : 'text/plain');
    var optionAjax = {
        type: data.method,
        url: data.url,
        data: data.data,
        dataType: data.dataType,
        beforeSend: function (xhrObj) {
            xhrObj.setRequestHeader("Content-Type", contentType);
            xhrObj.setRequestHeader("Accept", contentType);
        },
    };

    var jqXhr = $.ajax(optionAjax);

    jqXhr.done(function(json) {
        resp(json);
    })
    .fail(function (json){
        resp(json);
    });
}

Util.prototype.parseFloat = function (value) {
    return parseFloat(value.toLocaleString().replace(",", ""));
}
