// global variables
var newsletterRequest = false;
var newsletterURL = "";
var loadingDiv="";
var formDiv="";
var alpha = 1;

//submit the form via ajax
function makeRequest(parameters) {
	$.ajax({
  	url: newsletterURL,
  	type:"GET",
  	data:parameters,
  	success:function(response){
  		$('#ajaxNewsletter').html(response);
  		$('#ajaxNewsletter').animate({opacity:1},500);
  		$('#newsletterLoading').hide(500);
  	}
	})
	/*
	createRequestObject();
  newsletterRequest.setVar("email", parameters["email"]);
  newsletterRequest.setVar("subscriber_name", parameters["subscriber_name"]);
  newsletterRequest.setVar("newsletter", parameters["newsletter"]);
  newsletterRequest.method = 'GET';
  newsletterRequest.element = formDiv;
  newsletterRequest.onCompletion = alertContents;
  newsletterRequest.runAJAX();
  */
}

//create the communication object
function createRequestObject() {
  newsletterRequest = new sack(newsletterURL);
}

//act on the server response
function alertContents() {
	FadeIn();           
}

//prints the server response
function printResponse(){
  alert(http_request.responseText);
  var response = http_request.responseXML.documentElement;
  var n = response.getElementsByTagName('result')[0].firstChild.nodeValue;
  
  message= response.getElementsByTagName('message')[0].firstChild.nodeValue;
  document.getElementById(formDiv).innerHTML = message;
}

//fade out the form
function StartFade(url,fdiv,ldiv) {
   newsletterURL = url;
   formDiv = fdiv;
   loadingDiv = ldiv;
   tStart   = new Date();
   showDiv();
   timerID  = setTimeout("FadeOut()", 100);
}

//handles the fadeout of the formDiv element
function FadeOut(){
  alpha -= 0.1;
  if(alpha < 0){
    alpha = 0;
    get();
  }else{
    obj = document.getElementById(formDiv);
    setOpacity(obj, alpha);
    setTimeout("FadeOut()", 100);
  }
}

//handles the fadein of the formDiv element
function FadeIn(){
  alpha += 0.1;
  if(alpha > 1){
    hideDiv();
    alpha = 1;
  }else{
    obj = document.getElementById(formDiv);
    setOpacity(obj, alpha);
    setTimeout("FadeIn()", 100);
  }
}

//gets the values inserted in the newsletterFormDiv
function get() {
  var obj = document.getElementById("newsletterFormDiv");
	var params = {};
  $('#newsletterFormDiv input').each(function(i){
	if (this.type == "text") {
           params[this.name] = this.value;
        }
        if (this.type == "checkbox") {
           if (this.checked) {
              params[this.name] = this.value;
           } else {
              params[this.name] = "";
           }
        }
        if (this.type == "radio") {
           if (this.checked) {
              params[this.name] = this.value;
           }
        }
        if (this.type == "hidden") {
           params[this.name] = this.value;
        }
        if (this.tagName == "SELECT") {
		        var sel = this;
		        params[sel.name] = sel.options[sel.selectedIndex].value;
		     }
	});
	//$alert(params);
   makeRequest(params);
}
//shows a div for progress information
function showDiv(){
  if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(loadingDiv).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.loadingDiv.display = 'block';
		}
		else { // IE 4
			document.all.loadingDiv.style.display = 'block';
		}
	}
}

//hides a div with the progress information
function hideDiv(){
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(loadingDiv).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.loadingDiv.display = 'none';
		}
		else { // IE 4
			document.all.loadingDiv.style.display = 'none';
		}
	}
}

/*
* Function to put the new input in the document
*/
function setOuterHTML(element, toValue)
{
	if (typeof(element.outerHTML) != 'undefined')
		element.outerHTML = toValue;
	else
	{
		var range = document.createRange();
		range.setStartBefore(element);
		element.parentNode.replaceChild(range.createContextualFragment(toValue), element);
	}
}		

/**
Method:       setOpacity(HTMLElement, Int)
Description:  Sets the opacity of an element
Parameters:
     HTMLElement aElm  - The HTML element to set the opacity for
     Float aOpac       - The value for the element's opacity. 0.0 - 1.0
                         Where 0.0 is invisible and 1.0 is completely 
                         visible
*/
function setOpacity(aElm,aOpac) {
    var object = aElm.style; 
    object.opacity = (aOpac ); 
    object.MozOpacity = (aOpac ); 
    object.KhtmlOpacity = (aOpac ); 
    object.filter = "alpha(opacity=" + aOpac*100 + ")"; 

}
