function RemoveTinyMce(obj) {
  var reg = new RegExp("^detail_menu_link_[0-9]+$");
  if (obj.id && ((obj.nodeName=="DIV") || (obj.nodeName=="TEXTAREA")))
  {
    tinyMCE.execCommand('mceRemoveControl', true, obj.id);
  }
  for (var i=0;i < obj.childNodes.length;i++)
  {
    if (obj.childNodes[i].nodeType==1)
       RemoveTinyMce(obj.childNodes[i]);
  }
}

modAjax	= {

        startLoading: function()
        {
        var windowWidth, windowHeight;
        if (self.innerHeight) { // all except Explorer
                windowWidth = self.innerWidth;
                windowHeight = self.innerHeight;
        } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
                windowWidth = 800;
                windowHeight = 800;
        } else if (document.body) { // other Explorers
                windowWidth = document.body.clientWidth;
                windowHeight = document.body.clientHeight;
        }
                if (document.getElementById('loading'))
                {
                        document.getElementById('loading').style.width = (windowWidth - 50)+"px";
                        document.getElementById('loading').style.paddingTop = (windowHeight / 2)+"px";
                        document.getElementById('loading').style.display = "";
                }
        },

        stopLoading: function()
        {
                if (document.getElementById('loading'))
                {       document.getElementById('loading').style.display = "none";}
        },

	doAjax: function(obj)
	{
		var Xhr = modAjax._getXMLHttpRequest();
		if (!Xhr)
			return false;

		Xhr.onreadystatechange = function()
		{
			if (Xhr.readyState == 4 && Xhr.status == 200)
				obj.callback(Xhr);
		}

                modAjax.startLoading();
		
                Xhr.open(obj.method, obj.url, true);
		if (obj.method == "POST")
		{
			Xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			Xhr.send(obj.data);
		}
		else if (obj.method == "GET")
			Xhr.send(null);
	},

	_getXMLHttpRequest: function()
	{
		var Xhr = null;

		try
		{
			Xhr = new XMLHttpRequest();
			if(Xhr.overrideMimeType)
				Xhr.overrideMimeType('text/xml');
		}
		catch (e)
		{
			try
			{
				Xhr = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					Xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e) {}
			}
		}
		if(!Xhr)
			alert('Error: could not create XMLHTTP object.');
		return Xhr;
	},

	_buildData: function(arg)
	{
   		if (!arg)
			return null;
		var tab		= arg.split(":");
		var data	= "";
		for (key in tab)
		{
			if (data.length)
				data = data.concat("&");
			data = data.concat(tab[key], "=", escape(getElementValue(tab[key])));
		}
		return data;
	},

	_parseForm: function(formId)
	{
		var	f = document.getElementById(formId);
		var data = '';
		if (f)
		{
			var c = f.getElementsByTagName("input" );
			for(var i = 0; i < c.length; i++)
			{
				if (data.length)
					data = data.concat("&");
				data = data.concat(c[i].name, "=", modAjax._getElementValue(c[i].id));
			}
			var s = f.getElementsByTagName("select" );
			for(var i = 0; i < s.length; i++)
			{
				if (data.length)
					data = data.concat("&");
				data = data.concat(s[i].name, "=", modAjax._getElementValue(s[i].id));
			}
			var t = f.getElementsByTagName("textarea" );
			for(var i = 0; i < t.length; i++)
			{
				if (data.length)
					data = data.concat("&");
				data = data.concat(t[i].name, "=", modAjax._getElementValue(t[i].id));
			}
		}
		return data;
	},

	_getElementValue: function(key)
	{
		if (key)
		{
			var elem = document.getElementById(key);
			if (elem)
			{
				switch (elem.type)
				{
					case "checkbox":
					case "radio":
						if (elem.checked == false)
							return 0;
						else
							return encodeURIComponent(elem.value);
					default:
					{
						return encodeURIComponent(elem.value);
                                         }
				}
			}
		}
		return "";
	},

	_parseResponse: function(div, content)
	{
          modAjax.stopLoading();

		var	elem		= document.getElementById(div);
		if (elem)
		{
			elem.innerHTML	= content;
			var scripts		= elem.getElementsByTagName('script');
			for (i = 0; i < scripts.length; i++)
			{
				var newScript = document.createElement('script');
				for (j = 0; j < scripts[i].attributes.length; j++)
				{
					if (typeof(scripts[i].attributes[j]) != 'undefined'
						&& typeof(scripts[i].attributes[j].nodeName) != 'undefined'
						&& scripts[i].attributes[j].nodeValue != null
						&& scripts[i].attributes[j].nodeValue != '')
						newScript.setAttribute(scripts[i].attributes[j].nodeName, scripts[i].attributes[j].nodeValue);
				}
				newScript.text = scripts[i].text;
				scripts[i].parentNode.replaceChild(newScript, scripts[i]);
			}
			return true;
		}
		return false;
	},


	GET: function(url, div)
	{
		callback =	function(Xhr)
					{
						modAjax._parseResponse(div, Xhr.responseText);
					}
		modAjax.doAjax({'method': 'GET', 'url': url, 'callback': callback});
	},

	POST: function(url, formId, div)
	{
		callback =	function(Xhr)
					{
						modAjax._parseResponse(div, Xhr.responseText);
					}
		modAjax.doAjax({'method': 'POST', 'url': url, 'data': modAjax._parseForm(formId), 'callback': callback});
		return false;
	},

	specPOST: function(url, fdata, div)
	{
		callback =	function(Xhr)
					{
						modAjax._parseResponse(div, Xhr.responseText);
					}
		modAjax.doAjax({'method': 'POST', 'url': url, 'data': modAjax._buildData(fdata), 'callback': callback});
		return false;
	},

	confirmDEL: function(url, msg, div)
	{
		if (confirm(msg))
			modAjax.GET(url, div);
		return false;
	},


        RemoveTinyMceGET: function(url, div)
        {
            RemoveTinyMce(document.getElementsByTagName("body")[0]);
            modAjax.GET(url, div);
        }

};