function getTopLeft(sID)
{
    var o=document.getElementById(sID);
    if(o==null)
    {
        return [0,0];
    }
    
    var top=o.offsetTop, left=o.offsetLeft;
    o=o.offsetParent;
    while(o)
    {
        if(document.all)
        {
            if(o.offsetParent)
            {
                if(o.scrollTop)top-=o.scrollTop;
                if(o.scrollLeft)left-=o.scrollLeft;
            }
        }
        else
        {
            if(o.scrollTop)top-=o.scrollTop;
            if(o.scrollLeft)left-=o.scrollLeft;
            // Mozilla bug
            if((o.tagName=='DIV')||(o.tagName=='TABLE'&&navigator.vendor=='Netscape'))
            top+=getAttrPixValue(o,'border-top-width')|0,left+=getAttrPixValue(o,'border-left-width')|0;
        }

        top+=o.offsetTop;
        left+=o.offsetLeft;
        o=o.offsetParent;
    }
    if(navigator.userAgent.indexOf('Mac')!=-1 && typeof(document.body.leftMargin)!='undefined')
    {
        left+=document.body.leftMargin,top+=document.body.topMargin;   // working?
    }
    return [top,left];
}


function getAttrPixValue(e,a)
{
    var px=0;
    if(window.getComputedStyle)
    {
        var css,sty=window.getComputedStyle(e,'');
        if(sty&&sty.getPropertyCSSValue)
        {
            css=sty.getPropertyCSSValue(a);
            if((css)&&css.primitiveType<=18){try{px=css.getFloatValue(5)|0;}catch(e){};}
        }
    }
    return px;
}

var pErrorField = false;
var pFieldBGColor = false;
var pFieldBorderColor = false;

function CheckField(strFieldName, strFieldLabel, strRegExpr)
{
    pField = document.getElementById(strFieldName);    
    var invalidData = false;
      
    
    if (strRegExpr)
    {             
        if (!pField.value.match(strRegExpr))
        {          
            invalidData = true;  
        } 
    }
    else
    {
        if (pField.value === '')
        {
            invalidData = true;
        }     
    }         
    
    if (invalidData)
    {           
        strError = "Некоректно въведени данни в поле '" + strFieldLabel + "'!";   
                                                                                                           
        ShowError(strFieldName, strError);
        return false;                            
    }  
    return true;            
}

function ShowError(strFieldName, strError)
{
    if (pErrorField)
    {
        HideError();    
    }                  
    
    if(!document.getElementById('ErrorTooltip'))
    {
        var pErrorDiv = document.createElement('div');
        pErrorDiv.id = 'ErrorTooltip';
        pErrorDiv.className = 'errortooltip';  
        document.body.appendChild(pErrorDiv); 
    }
    else
    {
        var pErrorDiv = document.getElementById('ErrorTooltip');
    }
    
    var pField = document.getElementById(strFieldName);   

    arPos = getTopLeft(strFieldName);
             
    pErrorDiv.style.left = arPos[1] + 'px';
    pErrorDiv.style.top = (arPos[0] + document.getElementById(strFieldName).offsetHeight + 2) + 'px';
    
    pErrorDiv.innerHTML = strError;
    pErrorDiv.style.display = 'block';
    
    pErrorField = pField;
    pFieldBGColor = pField.style.backgroundColor;
    pFieldBorderColor = pField.style.borderColor;
    pField.style.backgroundColor='#fffee4';
    pField.style.borderColor='#FF0000';
    pField.focus();
    
    timeOn = setTimeout("HideErrorTooltip()", 2000); 
}

function HideErrorTooltip()
{
    hide('ErrorTooltip');
}
function hide(id) 
{
    var elem = document.getElementById(id);
    if (elem.style.display == "none")
    {
        return;
    }
    else
    {
        elem.style.display = "none";
    }
}

function HideError()
{
    if (pErrorField)
    {
        pErrorField.style.backgroundColor = pFieldBGColor;
        pErrorField.style.borderColor = pFieldBorderColor; 
        pErrorField = false;
        pFieldBGColor = false;
        pFieldBorderColor = false;
    } 
    HideErrorTooltip(); 
}

function GetXmlHttpObject()
{
    var xmlHttp = null;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                alert("Your browser does not support AJAX!");
            }
        }
    }
    return xmlHttp;
}

function SubmitForm(strForm, strModuleName)
{    
    pForm = document.getElementById(strForm);

    var params = "";      
    for (i=0; i<pForm.getElementsByTagName("input").length; i++) 
    {
        if (pForm.getElementsByTagName("input")[i].type == "text") 
        {                     
            params += pForm.getElementsByTagName("input")[i].name + "=" + escape(pForm.getElementsByTagName("input")[i].value) + "&";
        }
        if (pForm.getElementsByTagName("input")[i].type == "checkbox") 
        {
            if (pForm.getElementsByTagName("input")[i].checked) 
            {
                params += pForm.getElementsByTagName("input")[i].name + "=" + escape(pForm.getElementsByTagName("input")[i].value) + "&";
            } 
            else 
            {
                params += pForm.getElementsByTagName("input")[i].name + "=&";
            }
        }
        if (pForm.getElementsByTagName("input")[i].type == "radio") 
        {
            if (pForm.getElementsByTagName("input")[i].checked) 
            {
                params += pForm.getElementsByTagName("input")[i].name + "=" + escape(pForm.getElementsByTagName("input")[i].value) + "&";
            }
        }  
        if (pForm.getElementsByTagName("input")[i].tagName == "SELECT") 
        {
            var sel = pForm.getElementsByTagName("input")[i];
            params += sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
        }
    }
    for (i=0; i<pForm.getElementsByTagName("textarea").length; i++) 
    {
        params += pForm.getElementsByTagName("textarea")[i].name + "=" + escape(pForm.getElementsByTagName("textarea")[i].value) + "&";
    }
    if(params != '')
    {
        params = params.substring(0, params.length-1);
    }  
    
    pForm.innerHTML = '<img src="' + strRootPath + 'images/loader.gif" />';
    
    var xmlHttp = GetXmlHttpObject();
    if(xmlHttp)
    {
        xmlHttp.onreadystatechange = function()
        {
            if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
            { 
                pForm.innerHTML = xmlHttp.responseText;      
            }
        }
        var d = new Date();            
        xmlHttp.open("POST", strRootPath + strModuleName + "/submitform.html?&t=" + d.getTime(), true);
                                                                    
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", params.length);
        xmlHttp.setRequestHeader("Connection", "close");
    
        xmlHttp.send(params);
    }
    
    return false; 
}