/** contact form **/
var lprequest = null;

function getPageCoords(element)
{
    var coords = {x: 0, y: 0};

        while (element) {
                coords.x += element.offsetLeft;
                coords.y += element.offsetTop;
                element = element.offsetParent;
    }

    return coords;
}

function openContactForm()
{
	var frm = document.forms[ "contact" ];
	
	if( !frm ) return;

	frm[ "senderName" ].value = "";
	frm[ "senderEmail" ].value = "";
	frm[ "msgSubject" ].value = "";
	frm[ "msgText" ].value = "";
	frm[ "chkPrivacy" ].checked = false;	
	
	var fb = document.getElementById( "divContact" );
	var cb = document.getElementById( "divTexts" );
	
	if( !fb || !cb ) return;
	
	var xpo = getPageCoords( cb );
	
	var para = document.getElementsByTagName( "P" );
	
	for( var j = 0; j < para.length; j ++ ) {
		var cn = "";
		
		if( para[ j ].className !== undefined ) {
			cn = para[ j ].className;
		} else if( para[ j ].getAttribute ) {
			cn = para[ j ].getAttribute( "class" );
		}
		
		if( cn == "text" ) {
			para[ j ].style.display = "none";
		}
	}
	
	fb.style.display = "block";
	fb.style.position = "absolute";
	fb.style.top = (xpo.y - 70) + "px";
	fb.style.left = (xpo.x + ((cb.offsetWidth - 512) / 2)) + "px";
}

function closeContactForm()
{
	var fb = document.getElementById( "divContact" );
	
	if( !fb ) return;
	
	fb.style.display = "none";

	var para = document.getElementsByTagName( "P" );
	
	for( var j = 0; j < para.length; j ++ ) {
		var cn = "";
		
		if( para[ j ].className !== undefined ) {
			cn = para[ j ].className;
		} else if( para[ j ].getAttribute ) {
			cn = para[ j ].getAttribute( "class" );
		}
		
		if( cn == "text" ) {
			para[ j ].style.display = "";
		}
	}
}

function resetErrors(frm, fields)
{
    for( var j = 0; j < fields.length; j ++ ) {
        frm[ fields[ j ] ].style.background = "";
    }
}

function showError(frm, field)
{
    var fl = frm[ field ];

    if( fl !== undefined ) {
        fl.style.background = "#ffa6a6";
    }
}

function isEmpty(frm, field)
{
    var fl = frm[ field ];

    if( fl !== undefined ) {
        if( fl.value !== undefined ) {
            if( fl.value.length > 0 )
                return false;
        }
    }

    showError( frm, field );
    return true;
}

function isEmail(frm, field)
{
    var fl = frm[ field ];

    if( fl !== undefined ) {
        if( fl.value !== undefined ) {
            var str = fl.value;
            var filter=/^.+@.+\..{2,3}$/

            if( filter.test(str) )
                return true;
        }
    }

    showError( frm, field );
    return false;
}

function onSubmit(frm)
{
    if( lprequest != null )
		return false;
		
	var ok = true;

    resetErrors( frm, Array( "senderName", "senderEmail", "msgSubject", "msgText" ) );

    if( isEmpty( frm, "senderName" ) )
        ok = false;

    if( isEmpty( frm, "senderEmail" ) )
        ok = false
    else if( !isEmail( frm, "senderEmail" ) )
        ok = false;

    if( isEmpty( frm, "msgSubject" ) )
        ok = false;

    if( isEmpty( frm, "msgText" ) )
        ok = false;

    if( !frm[ "chkPrivacy" ].checked ) {
        alert( "Per inviare un messaggio occorre accettare il trattamento dei dati personali" );
        ok = false;
    }
    
    if( ok ) {
    	var formdata = {
    		senderName : frm[ "senderName" ].value,
    		senderEmail : frm[ "senderEmail" ].value,
    		msgSubject : frm[ "msgSubject" ].value,
    		msgText : frm[ "msgText" ].value
    	};

	    if( window.XMLHttpRequest )
	        lprequest = new XMLHttpRequest();
	    else if ( window.ActiveXObject )
	    {   
	        try {
	            lprequest = new ActiveXObject( "Msxml2.XMLHTTP" );
	        } catch (e) {
	            try{
	                lprequest = new ActiveXObject( "Microsoft.XMLHTTP" );
	            } catch (e) {
	            	return false;
	            }
	        }
	    }
	    else {
	        return false;
	    }
    
    	var strPost = "fd=" + formdata.toJSONString(null);
	    var url = "/php/contact.php";
	    lprequest.onreadystatechange = function()
	    {
			if( (lprequest.readyState == 4) &&
			    (lprequest.status==200 || window.location.href.indexOf("http")==-1))
			{
			    if( lprequest.responseText != "" ) {
					alert( lprequest.responseText );
			    }
			    lprequest = null;
			    closeContactForm();
			}
	    }
	    lprequest.open( "POST", url, true );
	    lprequest.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
	    lprequest.send( strPost );
    }

	return false;
}