$getVisible = Sys.UI.DomElement.getVisible;
$setVisible = Sys.UI.DomElement.setVisible;
$addCssClass = Sys.UI.DomElement.addCssClass;
$removeCssClass = Sys.UI.DomElement.removeCssClass

function $htmlEncode(str)
{
	return str.replace('&', '&amp;').replace('"', '&quot;').replace('<', '&lt;').replace('>', '&gt;');
}

function $xmlEncode(string) {
    return string.replace(/\&/g,'&'+'amp;').replace(/</g,'&'+'lt;')
        .replace(/>/g,'&'+'gt;').replace(/\'/g,'&'+'apos;').replace(/\"/g,'&'+'quot;');
}

function $setCookie(name, value, expires)
{
	document.cookie = name + "=" + escape(value) + (expires ? ';expires=' + expires.toGMTString() : '');
}

function $request(url, body, handler)
{
	var request = new Sys.Net.WebRequest();
	request.set_url(String.format('{0}{1}Random={2}', url, (url.indexOf('?') < 0) ? '?' : '&', escape(Math.random() * 100000)));
	
	if (body)
	{
		request.set_body(body);
		request.set_httpVerb('post');
	}
	
	if (handler) 
		request.add_completed(handler);
	
	
	request.invoke();
}

function $open(link)
{
	var win = open(link.href, link.target, 'location=no,toolbar=no,menubar=no,status=no,scrollbars=yes');
	if (win) win.focus();
	return false;
}

function $close()
{
	close();
	if (window.opener) window.opener.focus();
}

function GetCheckBoxValues(cbs)
{
	if (!cbs)
		return null;
	
	if (!cbs.length)
		cbs = new Array(cbs);
	
	var values = new Array();
	
	for (var i = 0; i < cbs.length; i++)
	{
		var cb = cbs[i];
		if (cb.checked) values.push(cb.value);
	}
	
	return (values.length > 0) ? values : null;
}

function LoadPage(url, divId, callBack, formId, successUrl)
{
	var form = $get(formId);
	var body = '';
	
	if (form) {
	    var frm = form.elements;
	    for (i = 0; i < frm.length; i++) 
	    {
		    var element = frm[i];
		    if (!element.name) continue;
			if ( ((element.type == "checkbox") || (element.type == "radio")) &&
				!element.checked) continue;
 		    body += element.name + '=' + encodeURIComponent(element.value) + '&';
	    }
	}	
	
	var handler =
		function (response)
		{
			//AI: 1223 - Баг ИЕ7 возращает вместо 204 ошибку 1223
			if((response.get_statusCode() == 204 || response.get_statusCode() == 1223) && successUrl)
				location.href = successUrl;
			
			var div = $get(divId);
			
			if (div && (response.get_statusCode() == 200))
			{
				div.innerHTML = response.get_responseData();
				if(callBack)
					callBack();
			}
		}
	$request(url, body, handler);	
}

function LoadPopup(url, popupClass, formId, parentPopup, containerId)
{
	var container = $get(containerId ? containerId : 'popup-container');
	if (!container) return;
	
	var form = '';
	var body = '';
	if (formId) form = $get(formId);
	if (form) {
	    var frm = form.elements;
	    for (i = 0; i < frm.length; i++) 
	    {
		    var element = frm[i];
		    if (!element.name) continue;
			if ( ((element.type == "checkbox") || (element.type == "radio")) &&
				!element.checked) continue;
 		    body += element.name + '=' + encodeURIComponent(element.value) + '&';
	    }
	}	
	
	var handler =
		function (response)
		{
			if (response.get_statusCode() == 200) {
			    var url = response.getResponseHeader('Location');
			    if (url) location.href = url;
			    
			    var div = document.createElement('DIV');
			    div.className = 'popup-shift' + (popupClass ? ' ' + popupClass : '');
			    div.innerHTML = response.get_responseData();
			    div.isPopup = true;
			    div.parentPopup = parentPopup;
			    container.appendChild(div);
			}
		};
	$request(url, body, handler);	    
}

function GetPopup(sender)
{
    if (!sender.popup) {
        sender.popup = sender.parentNode;
        while (sender.popup && !sender.popup.isPopup) sender.popup = sender.popup.parentNode;
    }
    return sender.popup;
}

function ClosePopup(sender)
{
    var popup = GetPopup(sender);
    if (popup) {
        popup.parentNode.removeChild(popup);
        popup = null;
    }
}

function addLoadEvent(func) 
{ 
	var oldonload = window.onload; 
    if (typeof window.onload != 'function'){ 
        window.onload = func; 
    } else {
        window.onload = function(){ 
            oldonload(); 
            func();
        } 
    } 
} 

function GetParentByTagName(tag, parentTagName)
{
    while (tag = tag.parentNode) 
        if (tag.tagName == parentTagName) return tag;
}

function SubmitForm(childTag)
{
    var form = GetParentByTagName(childTag, "FORM");
    form && (!form.onsubmit || !(form.onsubmit() === false)) && form.submit();
}

function ValidateFields(sender, fields)
{    
    var form = GetParentByTagName(sender, "FORM");
    var result = true;
    for (var i = 0; i < fields.length; i++) {
        var input = form[fields[i]];
        var className = input.className.split(' ')[0];
        var valid = input.value != '';
        if (fields[i] == 'email') {
    	    var re = /^[a-z0-9._-]+@([a-z0-9-]+\.)+[a-z0-9-]+$/i;
    	    valid &= re.test(input.value);
    	}
    	else if (fields[i] == 'repassword') 
    	    valid &= input.value == form.password.value;    	
        input.className = valid ? className : className + ' error';
        result &= valid;
    }
    return result;
}
