﻿function setHashValue(name, value) {

    var hash = window.location.hash;

    if (isNullOrEmpty(hash)) {

        window.location.hash = name + '=' + value;

        return;
    }

    var hashComonents = hash.split('~');

    var newHash = '';

    for (var i = 0; i < hashComonents.length; i++) {

        var hasComponent = hashComonents[i];
        var keyValuePair = hasComponent.split('=');

        if (keyValuePair.length != 2) {
            return;
        }

        var key = getKeyName(keyValuePair[0]);

        if (key == name) {
            continue;
        }

        if (isNullOrEmpty(newHash)) {
            newHash = hashComonents[i];
        }
        else {
            newHash = newHash + "~" + hashComonents[i];
        }
    }

    if (!isNullOrEmpty(value)) {
        if (isNullOrEmpty(newHash)) {
            newHash = name + '=' + value;
        }
        else {
            newHash = newHash + "~" + name + '=' + value;
        }
    }

    window.location.hash = newHash;
}

function getKeyName(key) {

    if (key.substring(0, 1) == '#') {
        key = key.substring(1, key.length);
    }

    return key;
}

function getHashValue(name) {

    var hash = window.location.hash;

    if (isNullOrEmpty(hash)) {

        return null;
    }

    var hashComonents = hash.split('~');

    for (var i = 0; i < hashComonents.length; i++) {

        var hasComponent = hashComonents[i];
        var keyValuePair = hasComponent.split('=');

        if (keyValuePair.length != 2) {
            return null;
        }

        var key = getKeyName(keyValuePair[0]);

        if (key == name) {
            return keyValuePair[1];
        }
    }

    return null;
}

function isNullOrEmpty(value) {

    var isNullOrEmpty = true;

    if (value) {
        if (typeof (value) == 'string') {
            if (value.trim().length > 0) {
                isNullOrEmpty = false;
            }
        }
    }

    return isNullOrEmpty;
}

function openWindow(url) {

    if (isNullOrEmpty(url)) {
        return;
    }
    var keyValuePair = window.location.toString().split('#');
    var baseLocation;

    if (keyValuePair.length == 0) {
        baseLocation = window.location;
    }
    else {
        baseLocation = keyValuePair[0];
    }

    // Todo: Write a page strip routine
    baseLocation = baseLocation.replace('default.aspx', '');
    baseLocation = baseLocation.replace('Default.aspx', '');

    baseLocation = baseLocation.replace('register.aspx', '');
    baseLocation = baseLocation.replace('Register.aspx', '');

    if (url.substring(0, 1) == '/' && baseLocation.substring(baseLocation.length - 1, 1) != '/') {
        baseLocation = '/' + baseLocation;
    }

    window.location = baseLocation + url;
}


function returnHome() {

    openWindow('default.aspx' + window.location.hash, "mpfx.org");
}

function validateEmail($email) {

    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

    if (!emailReg.test($email)) {
        return false;
    } else {
        return true;
    }
}

function validateText(value, message, control) {

    if (isNullOrEmpty(value)) {
        alert(message);
        control.focus();

        return false;
    }

    return true;
}

function validateEmailEx(value, message, control) {

    if (!validateEmail(value)) {
        alert(message);
        control.focus();

        return false;
    }

    return true;
}

function validateCompare(value1, value2, message, control) {

    if (value1 != value2) {

        alert(message);
        control.focus();
        return false;
    }

    return true;
}

function validateNotEmpty(value, message, control) {

    if (isNullOrEmpty(value)) {

        alert(message);
        control.focus();
        return false;
    }

    return true;
}

function getParameterByName(name) {

    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");

    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);

    if (results == null)
        return "";
    else
        return decodeURIComponent(results[1].replace(/\+/g, " "));
}


function goHomeAndLogin() {

    var url;
    url = stripFilenameFromUrl(window.location.toString());
    window.location = url + '/default.aspx?#page=login';
}

function stripFilenameFromUrl(url) {

    return url.substring(0, url.lastIndexOf('/'));
}

function loadPageContent(name) {

    var contentService = new ContentService();

    contentService.GetPageContent(name, function (content) {

        setHashValue('page', name);
        $('#sectionDiv').text(name);        
        $('#productDownloader').hide();
        $('#productsMenu').hide();

        $('#descriptionContainer').hide();
        $('#contentContainer').html(content);
		$('#contentContainer').show();

    }, function (error) {

        alert(error.get_message());
    });
}
