function getElementsByClassName(clsName) 
{ 
	var arr = new Array(); 
	var elems = document.getElementsByTagName("*");
	
	for ( var cls, i = 0; ( elem = elems[i] ); i++ )
	{
		if ( elem.className == clsName )
		{
			arr[arr.length] = elem;
		}
	}
	return arr;
}



function getElementByClassName(clsName) 
{  
	var elems = window.thisform.getElementsByTagName("*");	
	
	for ( var cls, i = 0; ( elem = elems[i] ); i++ ) {
		if ( elem.className == clsName )
			return elem;
	}

}





function hideResponse(classname) {
	
    var formResponse = getElementByClassName(classname);    
    var formResponseDivs = formResponse.getElementsByTagName('div');
    for (var i = 0; i < formResponseDivs.length; i++) { 	    	
    	formResponseDivs[i].style.display = "none";
    }
}

function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

function sndReq(thisform) {				
	  
		hideResponse('formResponse');
		
	    var showLoad = getElementByClassName('formLoading');
	    	showLoad.style.display = "block";	    
		
		var form_data = ''; // reset var in case of re-submits
					
		for (var i=0; i < thisform.length; i++) {
						
			thisfield = thisform.elements[i];
		
			thisname  = thisfield.name;
			thisvalue = thisfield.value;
			
			if (	thisname && thisvalue && 
					thisname.length > 0 && 
					thisvalue.length > 0 && 
				   	(thisfield.type !== 'radio' || (thisfield.type == 'radio' && thisfield.checked == true)) 
				   	&& 
				   	(thisfield.type !== 'checkbox' || (thisfield.type == 'checkbox' && thisfield.checked == true))
				   	&& 
				   	(thisfield.nodeName !== 'option' || (thisfield.nodeName == 'option' && thisfield.selected == true))
			    ) {
			    	
				form_data += '&' + thisname + '=' + thisvalue;
			}
			
			
		} 
		
		//(form_data);
		//prompt("yourtext",form_data);
		//form_data = "&contact_email=as.webmaster@wwu.edu&contact_phone=3609694456";
		
    http.open('get', '/app/lib/rpc.php?'+form_data+'&ajax=true');

    http.onreadystatechange = handleResponse;    
    http.send(null);
    
    
}

function handleResponse() {
    if(http.readyState == 4){
        var response = http.responseText;
        var update = new Array();

        if(response.indexOf('|' != -1)) {
            update = response.split('|');            

            hideResponse('formResponse');
            
            if (update[1].length > 0) {
	            showResponse = getElementByClassName(update[0]);
	            showResponse.style.display = "block";                        
	            showResponse.innerHTML = update[1];
            }
                        
            
            // Reset the form on success, no errors            
            if (update[2] == 'false') {		
            	        
			thisform.reset();
	  
            }
            
            
            
        }
    }
}


function submitForm(e) {
	if (window.event && window.event.srcElement)
	  el = window.event.srcElement;
	if (e && e.target)
	  el = e.target;
	  
	thisform = el.parentNode;
	window.thisform = thisform; // Also adding as a Global Var 		
	
	sndReq(thisform);
	thisform.onsubmit = function() { return false; }		
}


function addEvent(obj, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla 
// By Scott Andrew 
{	
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be attached");
  }
}



function addListeners() {
  if (!document.getElementsByTagName) return;  
   
  
    var all_submit = getElementsByClassName('ajax-submit');
    for (var i = 0; i < all_submit.length; i++) { 	
    	addEvent(all_submit[i], 'click', submitForm, false);
    }   
  
}


addEvent(window, 'load', addListeners, false);