/**
 * Some common JS-functions for the digitalworkroom
 * @version $Revison$
 */
/*********************************
	dc_HTTPrequest		
	dc_PrepareQuery
	dc_ExecuteHttpRequest
	dc_PrepareResult
	dc_ReplaceResult
	dc_ReturnResult
	dc_DWXrequest
********************************/
var tmp1 = false;
var tmp2 = false;
var evalTO = false;

function dc_HTTPrequest(page,params,fm,fmAll,requestMode,targetObj)
{
	this.http_request = false;
	this.r_query = '';
	this.r_page = (page != '' ? page : 'index.php');
	this.r_params = params;
	this.r_form = (fm != '' ? document.forms[fm] : false);
	this.r_form_send = fmAll;
	this.r_mode = requestMode;
	this.r_object = (targetObj != '' ? targetObj : false);
	this.r_objectMulti = new Array();
	this.r_result = false;
	this.r_resultMulti = new Array();
	this.prepareQuery = dc_PrepareQuery;
	this.executeRequest = dc_ExecuteHttpRequest;
	this.prepareResult = dc_PrepareResult;
	this.replaceResult = dc_ReplaceResult;
	this.returnResult = dc_ReturnResult;
	this.executeJS = dc_ExecuteJS;
	
	if(this.r_form_send == '') this.r_form_send = false;
	if(this.r_mode != 'GET' && this.r_mode != 'POST') this.r_mode = 'GET';
	if(this.r_object)
	{
		if(this.r_object != '')
		{
			this.r_params = (this.r_params != '' ? this.r_params+'&AJAX_TMPL='+this.r_object : 'AJAX_TMPL='+this.r_object);
		}
	}
}

function dc_PrepareQuery()
{
	var a,aa,el,elType,elName,retFirst,retLast,fLength;
	
	if(this.r_form && this.r_form_send)
	{
		fLength = this.r_form.elements.length;
		for(a=0; a<fLength; a++)
		{
			el = this.r_form.elements[a];
			if(el.type)
			{
				elType = el.type.toLowerCase();
				elName = el.nodeName.toLowerCase();
				switch(elType)
				{
					case 'select':
					case 'select-one':
						for(aa=0; aa<el.length; aa++)
						{
							if(el.options[aa].selected)
							{
								if(this.r_query != '') this.r_query += '&';
								this.r_query += el.name+'='+escape(el.options[aa].value);
							}
						}
					break;
					
					case 'radio':
					case 'checkbox':
						for(aa=0; aa<el.length; aa++)
						{
							if(el[aa].checked)
							{
								if(this.r_query != '') this.r_query += '&';
								this.r_query += el.name+'='+escape(el[aa].value);
							}
						}
					break;
					
					case 'text':
					case 'hidden':
						if(this.r_query != '') this.r_query += '&';
						this.r_query += el.name+'='+escape(el.value);
					break;
				}
			}
			if(elName == 'textarea')
			{
				if(this.r_query != '') this.r_query += '&';
				this.r_query += el.name+'='+escape(el.value);
			}
		}
		if(this.r_form.action != '')
		{
			var fa = this.r_form.action.split('?');
			if(fa[1])
			{
				if(this.r_query != '') this.r_query += '&';
				this.r_query += fa[1];
			}
		}
	}
	
	if(this.r_params != '')
	{
		var splitParams = this.r_params.split('&');
		var splitParamsSub;
		for(a=0; a<splitParams.length; a++)
		{
			splitParamsSub = splitParams[a].split('=');
			if(this.r_query != '') this.r_query += '&';
			this.r_query += splitParamsSub[0]+'='+escape(splitParamsSub[1]);
		}
	}
}

function dc_ExecuteHttpRequest() 
{
	if (window.XMLHttpRequest) 
	{ // Mozilla
		this.http_request = new XMLHttpRequest();
		if (this.http_request.overrideMimeType) 
		{
			this.http_request.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject) 
	{ // IE
		try 
		{
			this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) 
			{}
		}
	}
	if (this.http_request) 
	{
		// m = 'GET';
		if(this.r_mode == 'POST')
		{
			// this.http_request.onreadystatechange = this.prepareResult;
			this.http_request.open("POST", this.r_page, false);
			this.http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			this.http_request.setRequestHeader("Content-Length", this.r_query.length);
			this.http_request.setRequestHeader("Connection", "close");
			this.http_request.send(this.r_query);
		}
		else if(this.r_mode == 'GET')
		{
			// this.http_request.onreadystatechange = this.prepareResult;
			this.http_request.open("GET", this.r_page+'?'+this.r_query, false);
			this.http_request.send(null);
		}
	}
}

function dc_PrepareResult()
{
	var retIdStart,retIdEnd,retFirst,retLast;
	var a;

	if(this.http_request.readyState)
	{
	    if (this.http_request.readyState == 4)
	    {
	        if (this.http_request.status == 200)
	        {
	        	this.r_result = this.http_request.responseText;
	        }
	    }
	}
	/*
	if(this.r_result)
	{
		if(window.dc_ConvertSpecialChars)
		{
			this.r_result = dc_ConvertSpecialChars(this.r_result);
		}
	}
	*/
	if(this.r_result && this.r_object)
	{
		this.r_objectMulti = this.r_object.split(',');
		for(a=0; a<this.r_objectMulti.length; a++)
		{
			retIdStart = '<!-- AJAX_TMPL:'+this.r_objectMulti[a]+':start -->';
			retIdEnd = '<!-- AJAX_TMPL:'+this.r_objectMulti[a]+':end -->';
			
			retFirst = this.r_result.indexOf(retIdStart);
			retLast = this.r_result.indexOf(retIdEnd,retFirst);
			
			if(retFirst >= 0 && retLast > retFirst)
			{
				this.r_resultMulti[a] = this.r_result.substring(retFirst+retIdStart.length,retLast-1);
			}
		}
	}
}

function dc_ReplaceResult()
{
	var a;
	if(this.r_objectMulti.length > 0)
	{
		for(a=0; a<this.r_objectMulti.length; a++)
		{
			if(this.r_resultMulti[a])
			{
				if(document.getElementById(this.r_objectMulti[a]))
				{
					tmp1 = this.r_objectMulti[a];
					tmp2 = this.r_resultMulti[a];
					if(window.dc_ConvertSpecialChars)
					{
						tmp2 = dc_ConvertSpecialChars(tmp2);
					}
					setTimeout("document.getElementById(tmp1).innerHTML=tmp2;",100);
					//alert('replace multi '+this.r_objectMulti[a]);
				}
			}
		}
	}
	else if(this.r_result && this.r_object)
	{
		if(document.getElementById(this.r_object))
		{
			tmp1 = this.r_object;
			tmp2 = this.r_result;
			if(window.dc_ConvertSpecialChars)
			{
				tmp2 = dc_ConvertSpecialChars(tmp2);
			}
			setTimeout("document.getElementById(tmp1).innerHTML=tmp2;",100);
			//alert('replace single '+this.r_object);
		}
	}
}

function dc_ExecuteJS(goAlert)
{
	var a,aa,jsString,jsSubstring;
	var jsStart = '<!-- AJAX_JS:start:';
	var jsEnd = ':end:AJAX_JS -->';
	jsEval = '';
	if(this.r_result.indexOf(jsStart) >= 0 && this.r_result.indexOf(jsEnd) >= 0)
	{
		jsString = this.r_result.split(jsStart);
	for(a=0; a<jsString.length; a++)
	{
			if(jsString[a].indexOf(jsEnd) > 0)
		{
				jsSubstring = jsString[a].split(jsEnd);
			jsEval += jsSubstring[0];
		}
	}
	}
	if(jsEval != '')
	{
		if(window.dc_ConvertSpecialChars)
		{
			jsEval = dc_ConvertSpecialChars(jsEval);
		}
		// if(goAlert) alert(jsEval);
		evalTO = setTimeout("eval(jsEval)",500);
	}
}

function dc_ReturnResult()
{
	if(this.r_result)
	{
		if(window.dc_ConvertSpecialChars)
		{
			this.r_result = dc_ConvertSpecialChars(this.r_result);
		}
		return this.r_result;
	}
}

function dc_DWXrequest(page,params,fm,fmAll,requestMode,targetObj,m,goJS,goAlert)
{
	if(!m) var m = true;
	dc_DWX = new dc_HTTPrequest(page,params,fm,fmAll,requestMode,targetObj);
	dc_DWX.prepareQuery();
	dc_DWX.executeRequest();
	dc_DWX.prepareResult();
	if(m != 'return_only') dc_DWX.replaceResult();
	if(goAlert) alert(dc_DWX.r_result);
	if(goJS) dc_DWX.executeJS(goAlert);
	return dc_DWX.r_result;
}

/* Print */

function dw_print_mode(m)
{
	if(document.forms['fm_print_text_add'])
	{
		document.forms['fm_print_text_add'].elements['xmlval_PRINT_MODE[0]'].value = m;
		if(window.dc_DWXrequest)
		{
			dc_DWXrequest('index.php','','fm_print_text_add',true,'GET','content','return_only');
			window.print();
		}
		else
		{
			setTimeout("document.forms['fm_print_text_add'].submit()",100);
		}
	}
}

/* Mail */
function dw_sendmail(alertText,mlayId)
{
	if(
		document.forms['arcticleMailForm'].elements['xmlval_SENDER_MAIL[0]'].value.length <= 0  ||
		document.forms['arcticleMailForm'].elements['xmlval_RECEPIENT_MAIL[0]'].value.length <= 0
	)
	{
		alert(dc_ConvertSpecialChars(alertText));
		return false;
	}
	else
	{
		var f = document.forms['arcticleMailForm'];
		
		f.elements['mlay_id'].value=mlayId;
		f.elements['send_email'].value='yes';
		setTimeout("document.getElementById('arcticleMailForm').submit();",100);
		return true;
	}
}

/* Swap visibility */
function dc_toggleVisibility(divID)
{
	var x = ( dc_divIsVisible(divID) ? dc_hideDiv( divID ) : dc_showDiv( divID ) );
}
/* Check if the DIV is visible or not  */
function dc_divIsVisible(divID){
	var e = document.getElementById(divID);
	if (!e) return false;
	return ( e.style.visibility == 'visible') ;
}
/* Show the DIV */
function dc_showDiv(divID)
{
	var e = document.getElementById(divID);
	if (!e) return false;
	e.style.visibility	='visible';
	e.style.display		='block';											
}
/* Hide the DIV */
function dc_hideDiv(divID)
{
	var e = document.getElementById(divID);
	if (!e) return false;
	e.style.visibility	='hidden';
	e.style.display		='none';											
}

