/*
	Common JavaScript functions
*/

function changeLocale(localeId) {
	var oForm = document.getElementById('frmLocales');
	oForm.new_localization_id.value = localeId;
	oForm.submit();
}

function mark(id)
{
	var element = document.getElementById('main_menu_id_' + id)
	if ( element && element.className != 'TopMenuCurrent' )
	{
		element.className = 'TopMenuSelected';
	}
}

function unmark(id)
{
	var element = document.getElementById('main_menu_id_' + id)
	if ( element && element.className != 'TopMenuCurrent' )
	{
		element.className = ''
	}
}

document.onclick = function(event)
{
	event = event ? event : window.event;

	var elem = event.srcElement;

	var srcElement = event.srcElement;

	if ( _location = srcElement.getAttribute("location") )
	{
		document.location.href = _location;
		return false;
	}

	else if ( prefix = srcElement.getAttribute("check") )
	{
		CheckBoxes(srcElement, prefix)
	}

	else if ( elementName = srcElement.getAttribute("disable") )
	{
		if ( srcElement.checked )
		{
			UndisableElement(srcElement.form, elementName);
		}
		else
		{
			DisableElement(srcElement.form, elementName);
		}
	}

	else if ( srcElement.tagName == 'INPUT' && srcElement.name.indexOf('set_option_') != -1 )
	{
		name	= srcElement.name.replace('set_option_', '');
		del		= location.href.indexOf('?') == -1 ? '?' : '&';

		location.href = location.href + del + 'do=set_option&option=' + name + '&value=' + (srcElement.checked ? '1' : '0');

		return false;
	}

	try
	{
		window.calendar.hide();
	}
	catch (e)
	{
	}
}

window.onresize = window.onscroll =  function()
{
	try
	{
		window.calendar.hide();
	}
	catch(e)
	{
	}
}

function CheckBoxes(elem, prefix)
{
	var elements	= elem.form.elements;
	var value		= elem.checked;

	if ( prefix == '1' )
	{
		for (var i = 0; i < elements.length; i++)
		{
			if ( elements[i].tagName == "INPUT" && elements[i].type == "checkbox" )
			{
				elements[i].checked = value;
			}
		}
	}
	else
	{
		for (var i = 0; i < elements.length; i++)
		{
			if ( elements[i].tagName == "INPUT" && elements[i].type == "checkbox" && elements[i].name.indexOf('[' + prefix + '_') != -1 )
			{
				elements[i].checked = value;
			}
		}
	}
	return true;
}

function DisableElement(frm, elementName)
{
	if (frm.elements[elementName])
		frm.elements[elementName].disabled = true;
	return true;
}

function UndisableElement(frm, elementName)
{
	frm.elements[elementName].disabled = false;
	return true;
}

function ParseEmail(value)
{
	return value.match(/^[a-z0-9\.\-_\+]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/i);
}

function ParseName(value)
{
	return value.match(/^[\w ]+$/i);
}

function trim(text)
{
    return text.replace(/^\s+/, '').replace(/\s+$/, '');
}

function ClearForm(frm)
{
	if ( frm )
	{
		for ( var i = 0; i < frm.elements.length; i ++ )
		{
			switch ( frm.elements[i].type )
			{
				case 'text':
					frm.elements[i].value = '';
				break;

				case 'select-one':
					frm.elements[i].selectedIndex = 0;
				break;

				case 'radio':
					// TODO
				break;

				case 'checkbox':
					frm.elements[i].checked = false;
				break;

			}
		}
	}
}

function isIE()
{
	return (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
}

function OverlayOff()
{
	document.getElementById('overlayContent').style.display = 'none';
	document.getElementById('overlay').style.display = 'none';
	document.getElementById('overlayPager').innerHTML = '';
//	document.getElementById('overlayData').innerHTML = '';

	document.getElementById('overlayIframe').src = '';
//	showFlash();
//	showSelectBoxes();
}

function OverlayOn()
{
	// Core code from - quirksmode.org
	// modified based on lightbox2

//	hideFlash();
//	hideSelectBoxes();
	var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
	var pY = ns ? pageYOffset : iecompattest().scrollTop;

	var yScroll;
	if (window.innerHeight && window.scrollMaxY) { yScroll = window.innerHeight + window.scrollMaxY; }
	else if (document.body.scrollHeight > document.body.offsetHeight){ yScroll = document.body.scrollHeight;
	} else { yScroll = document.body.offsetHeight; }

	var windowHeight;
	if (self.innerHeight) {	windowHeight = self.innerHeight; }
	else if (document.documentElement && document.documentElement.clientHeight) { windowHeight = document.documentElement.clientHeight; }
	else if (document.body) { windowHeight = document.body.clientHeight; }	

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){ pageHeight = windowHeight; }
	else { pageHeight = yScroll; }
	// End

	// hack for IE6: Background with rastered gif
	var nAgt = navigator.userAgent;
	if((verOffset=nAgt.indexOf("MSIE"))!=-1)
	{
		if(parseInt(parseFloat(nAgt.substring(verOffset+5))) <= 6)
		{
			document.getElementById('overlay').style.backgroundColor = 'transparent';
			document.getElementById('overlay').style.backgroundImage = 'url(images/ie6_pseudotrans.gif)';
		}
	}

	document.getElementById('overlay').style.height = pageHeight+'px';
	document.getElementById('overlay').style.display = 'block';
	document.getElementById('overlayContent').style.top = (pY + 100) + 'px';
	document.getElementById('overlayContent').style.display = 'block';

	document.getElementById('overlayIframe').src = 'http://www.tut.by';
}

function iecompattest()
{
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function deleteImage(imgId, queryOp, btnNode, confirmStr)
{
	if (confirmStr)
	{
		if (!confirm(confirmStr))
		 return false;
	}
	var origImage =document.getElementById(imgId).src;
	var origImageWidth = document.getElementById(imgId).width;
	var origImageHeight = document.getElementById(imgId).height;
	document.getElementById(imgId).src = '';
	document.getElementById(imgId).src = pathImages + 'timeline/loading_16.gif';
	document.getElementById(imgId).width = '16';
	document.getElementById(imgId).height = '16';
	btnNode.disabled = true;
	
	var url = window.location.toString();
	url += (url.indexOf('?') == -1 ? '?' : '&');
	url += 'do=' + queryOp;
	
	if (window.ActiveXObject)
		request = new ActiveXObject("Microsoft.XMLHTTP");
	else
		var request = new XMLHttpRequest();

	request.onreadystatechange = function() 
	{
		if (request.readyState == 4)
		{
			if (request.responseText == 'delete_ok')
			{
				document.getElementById(imgId).src = pathImages + 'spacer.gif';
				document.getElementById(imgId).height = '53';
				btnNode.parentNode.parentNode.style.display = 'none';
			}
			else
			{
				if (request.responseText != '')
					alert(request.responseText);
				document.getElementById(imgId).src = origImage;
				document.getElementById(imgId).width = origImageWidth;
				document.getElementById(imgId).height = origImageHeight;
				btnNode.disabled = false;
			}
		}
	}
	request.open("GET", url, true);
	request.send(null);

}

/*
 * function validates field
 * @field object      - validated field
 * @formName string   - form name for server-side validation
 * @emptyError string - if filed value is empty this error messge
 *                      is displayed and request to server cancels
 * @noRequest boolean - if set TRUE request to server cancels
 * @successFunction   - function to execute after validation is successfull
 */
function fieldValidationRequest(field, formName, emptyError, noRequest, successFunction)
{
	$(field.id + '_success').innerHTML = '';
	$(field.id + '_success').style.display = 'none';
	$(field.id + '_error').innerHTML = '';
	$(field.id + '_error').style.display = 'none';

	var fieldValue = '';
	if (field.tagName.toLowerCase() == 'input')
	{
		fieldValue = field.value;
		if (fieldValue == '' && emptyError)
		{
			$(field.id + '_success').innerHTML = '';
			$(field.id + '_success').style.display = 'none';
			$(field.id + '_error').innerHTML = emptyError;
			$(field.id + '_error').style.display = 'block';
			return false;
		}
		else
		{
			$(field.id + '_success').innerHTML = '';
			$(field.id + '_success').style.display = 'none';
			$(field.id + '_error').innerHTML = '';
			$(field.id + '_error').style.display = 'none';
		}
	}
	else if (field.tagName.toLowerCase() == 'select')
	{
		fieldValue = field.options[field.selectedIndex].value;
		if ((fieldValue == '0' || fieldValue == '') && emptyError)
		{
			$(field.id + '_success').innerHTML = '';
			$(field.id + '_success').style.display = 'none';
			$(field.id + '_error').innerHTML = emptyError;
			$(field.id + '_error').style.display = 'block';
			return false;
		}
		else
		{
			$(field.id + '_success').innerHTML = '';
			$(field.id + '_success').style.display = 'none';
			$(field.id + '_error').innerHTML = '';
			$(field.id + '_error').style.display = 'none';
		}
	}
	if (noRequest)
	{
		try { successFunction(); }
		catch(e) {}
		return true;
	}
	
	var url = window.location.toString();
	var validationParams = new Hash();
	validationParams.set('do', 'validation');
	validationParams.set('form', formName);
	validationParams.set('field', field.id.replace('data_', ''));
	validationParams.set('value', fieldValue);
	var params = {
		method: 'post',
		parameters: validationParams,
		onStatusOk: successFunction,
		onSuccess: function(response)
		{
			var responseDoc = response.responseXML.documentElement;

			var validStatus = responseDoc.getElementsByTagName('status')[0].firstChild.nodeValue;
			var validMessage = responseDoc.getElementsByTagName('message')[0].firstChild.nodeValue;
			
			if (validStatus == AjaxStatusOk)
			{
				$(field.id + '_error').innerHTML = '';
				$(field.id + '_error').style.display = 'none';
				$(field.id + '_success').innerHTML = validMessage;
				$(field.id + '_success').style.display = 'block';
				if (response.request.options['onStatusOk'])
					(response.request.options['onStatusOk'])();
			}
			else if (validStatus == AjaxStatusError)
			{
				$(field.id + '_success').innerHTML = '';
				$(field.id + '_success').style.display = 'none';
				$(field.id + '_error').innerHTML = validMessage;
				$(field.id + '_error').style.display = 'block';
			}
		}
	}

	var waiter = document.createElement('img');
	waiter.src = pathImages + 'timeline/loading_16.gif';
	waiter.width = 16;
	waiter.height = 16;
	$(field.id + '_success').appendChild(waiter);
	$(field.id + '_success').style.display = 'block';
	var validRequest = new Ajax.Request(url, params);
}
function CancelEvent(evt)
{
	if (window.event)
		window.event.cancelBubble = true;
	else
		evt.cancelBubble = true;
}


function isValidEmail(email)
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

	if(reg.test(email) == false)
		return false;
	else
		return true;
}