
var Framework = {

    PROJECT_NAME:   '',
    WWW_HOME_DIR:   '/',
    WWW_SCRIPT_DIR: '/',


    getQueryParam: function(query, param) {
        param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regex = new RegExp("[\\?&]" + param + "=([^&#]*)");
        var results = regex.exec( query );
        return (results == null)? '' : results[1];
    },

    replaceQueryString: function (url,param,value) {
        var re = new RegExp("([?|&])" + param + "=.*?(&|$)","i");
        if (url.match(re))
            return url.replace(re,'$1' + param + "=" + value + '$2');
        else if (url.indexOf("?") == -1)
            return url + '?' + param + "=" + value;
        else
            return url + '&' + param + "=" + value;
    },


    init: function() {
        var HTMLScriptElement = document.getElementById('framework');
        if ((HTMLScriptElement) && (HTMLScriptElement.src.match(/framework\.js(.*)?$/))) {
            var query = RegExp.$1;

            this.WWW_HOME_DIR   = Framework.getQueryParam(query, 'home');
            this.PROJECT_NAME   = Framework.getQueryParam(query, 'project');
            this.WWW_SCRIPT_DIR = Framework.getQueryParam(query, 'script');

        }
    },

    setConstants: function(home_dir, project_name, script_dir) {

        this.WWW_HOME_DIR   = home_dir;
        this.PROJECT_NAME   = project_name;
        this.WWW_SCRIPT_DIR = script_dir;

    },

    isForm: function(mForm)
    {
    	if ((Framework.isForm.arguments.length == 2) && (typeof(Framework.isForm.arguments[1]) == 'object')) {
    		obj = Framework.isForm.arguments[1];
    	} else {
    		obj = document;
    	}

    	var mResult = false;
    	switch ( typeof(mForm) ) {
    		case 'number':
    			if (obj.forms[mForm])
    				mResult = obj.forms[mForm];
    			break;
    		case 'string':
    			if (obj.forms[mForm])
    				mResult = obj.forms[mForm];
    			break;
    		case 'object':
    			if (typeof(mForm.method) != 'undefined')
    				mResult = mForm;
    			break;
    		default:
    			break;
    	}
    	return mResult;
    },

    isElement: function (mElement, mForm)
    {
    	var mResult = false;

    	if ((typeof(mForm) != 'undefined') && (typeof(mForm) != 'boolean')) {
    		if (oF=Framework.isForm(mForm)) {
    			switch ( typeof(mElement) ) {
    				case 'number':
    					if (oF.elements[mElement])
    						mResult = oF.elements[mElement];
    					break;
    				case 'string':
    					if (oF.elements[mElement])
    						mResult = oF.elements[mElement];
    					break;
    				case 'object':
    					if (mElement.form.name == oF.name)
    						mResult = mElement;
    					break;
    				default:
    					break;
    			}
    		}
    	} else {
    		if ((typeof(mElement) == 'object') && (typeof(mElement.form) != 'undefined')) mResult = mElement;
    	}
    	return mResult
    },

    popurl: function(sUrl, sWindow, iWidth, iHeight)
    {
    	iWidth  = iWidth ? iWidth : (screen.width  - 200);
    	iHeight = iHeight ? iHeight : (screen.height - 200);
    	oW = window.open(sUrl, sWindow, 'width=' + iWidth + ',height=' + iHeight + ',menubar=no,status=no,resizable=yes,scrollbars=yes');

    	iPos_x = (screen.width  - iWidth)  / 2;
    	iPos_y = (screen.height - iHeight) / 2;

    	oW.moveTo(iPos_x, iPos_y);
    	oW.focus();
    }



}
Framework.init();
