function getUrlParam() {
    var search = document.location.search;
    if (Ext.isEmpty(search))
        return null;

    search = search.substr(1);
    if (Ext.isEmpty(search))
        return null;

    var namedValues = search.split('&');
    var param = new Object();
    for (var i = 0; i < namedValues.length; i ++) {
        var namedValue = namedValues[i];
        var parameter = namedValue.split('=');
        if (parameter.length == 2)
            param[parameter[0]] = decodeURI(parameter[1]);
    }

    return param;
}

function getParamValue(paramObj, paramName, defaultValue) {
    if ((paramObj == undefined) || (paramObj == null))
        return defaultValue;

    var value = paramObj[paramName];
    if ((value == undefined) || (value == null))
        return defaultValue;
    else
        return value;
}

function loadCommon(pathToRoot, preferDownloadCenter, afterLoad) {
    loadHead(pathToRoot);
    loadMenu(pathToRoot, preferDownloadCenter, afterLoad);
    loadFoot(pathToRoot);
}

function loadHead(pathToRoot) {
    try {
        var url = pathToRoot + 'head.html?' + CSUtils.newGuid(false, true);
        if (Ext.isEmpty(pathToRoot))
            $('#head').load(url);
        else
            $.ajax({
                url: url,
                type: 'GET',
                success: function(data) {
                    try {
                        data = data.replace('flash/head.swf', pathToRoot + 'flash/head.swf');
                        data = data.replace('image/main_head.jpg', pathToRoot + 'image/main_head.jpg');
                        data = data.replace('index.html', pathToRoot + 'index.html');
                        $('#head').append(data);
                    } catch (e) {
                        alert('´يخَ(afterLoadHead)£؛' + e.message);
                    }
                },
                error: function(xhr) {
                    $('#head').append(xhr.responseText);
                }
            });
    } catch (e) {
        alert('´يخَ(loadHead)£؛' + e.message);
    }
}

function loadMenu(pathToRoot, preferDownloadCenter, afterLoad) {
    try {
        $.get(pathToRoot + 'menu.html?' + CSUtils.newGuid(false, true), function(data) {
            try {
                if (!Ext.isEmpty(pathToRoot))
                    data = data.replace(/href="/g, 'href="' + pathToRoot);

                $('#menu').append(data);

                if (!Ext.isEmpty(preferDownloadCenter))
                    $('#mDownloadCenter').attr('href', preferDownloadCenter);
            } catch (e) {
                alert('´يخَ(afterLoadMenu)£؛' + e.message);
            }

            if (afterLoad instanceof Function)
                afterLoad();
        });
    } catch (e) {
        alert('´يخَ(loadMenu)£؛' + e.message);
    }
}

function loadFoot(pathToRoot) {
    try {
        $('#foot').load(pathToRoot + 'foot.html?' + CSUtils.newGuid(false, true));
    } catch (e) {
        alert('´يخَ(loadFoot)£؛' + e.message);
    }
}

function buildDownloadMenu(data, downloadPathToRoot, getDownloadMenuLink) {
    try {
        var fileClasses = Ext.decode(data);

        if (fileClasses == null)
            return;

        var menu = '<ul>';
        for (var i = 0; i < fileClasses.length; i ++) {
            var fileClass = fileClasses[i];
            var menuLink;
            if (getDownloadMenuLink instanceof Function)
                menuLink = getDownloadMenuLink(fileClass["ClassID"]);
            else
                menuLink = normalDownloadMenuLink(downloadPathToRoot, fileClass["ClassID"]);
            menu += '<li><a href="' + menuLink + '">' + fileClass["ClassName"] + '</a></li>';
        }
        menu += '</ul>';

        $('#mFileClassList').append(menu);

        qm_create(0, false, 0, 500, false, false, false, false, false);
    } catch (e) {
        alert('´يخَ(buildDownloadMenu)£؛' + e.message);
    }
}

function normalDownloadMenuLink(downloadPathToRoot, classId) {
    return downloadPathToRoot + 'download_center.html?classId=' + classId;
}
