/*	SoundClick Ajax Functions
	DESCRIPTION		basic ajax functions (get and post). Customized for SoundClick stuff.
	USAGE			we only need the first 2 functions (ajaxGet and ajaxPost)
	AUTHOR			Tolgar Canli, SoundClick
	COPYRIGHT		all rights reserved, SoundClick Inc
*/

function ajaxGet(url,containerid,containerHeight,loadingDivStyle) {
	ajaxLoadingScreen(containerid,containerHeight,loadingDivStyle);
	var randomnumber=Math.floor(Math.random()*99999999)
	if(url.indexOf("?")==-1){
		url=url+"?cachebuster="+randomnumber;
	} else {
		url=url+"&cachebuster="+randomnumber; 
	}
	ajaxInitialize(url,'get',null,containerid);
}

function ajaxPost(formObj,url,containerid,containerHeight,loadingDivStyle) {
	var query = ajaxBuildPostQuery(formObj);
	ajaxLoadingScreen(containerid,containerHeight,loadingDivStyle);
	ajaxInitialize(url,'post',query,containerid);
}

function ajaxLoadingScreen(containerid,containerHeight,loadingDivStyle) {
	// if we use cusotmized content for the loading box...
	if (typeof loadingDivStyle!="undefined"){
		if (typeof containerHeight=="undefined"){
			var loadstatustext="<div style=' "+loadingDivStyle+" '><img src='/images/navigation/loading.gif' /> Requesting content...</div>";
		} else if (containerHeight==0) {
			var loadstatustext="<div style=' "+loadingDivStyle+" '><img src='/images/navigation/loading.gif' /></div>";
		}
	} else {
		// what height should the 'loading..' box be?
		if (typeof containerHeight=="undefined"){
			var loadstatustext="<div style='text-align:center; padding-top:50px; clear:both;'><img src='/images/navigation/loading.gif' style='background:white;' /> Requesting content...</div>";
		} else if (containerHeight==0) {
			var loadstatustext="<div><img src='http://www.soundclick.com/images/navigation/loading.gif' style='background:white;' /> Requesting content...</div>";
		} else {
			var loadstatustext="<div style='height:"+containerHeight+"px; text-align:center; padding-top:50px; clear:both;'><img src='/images/navigation/loading.gif' style='background:white;' /> Requesting content...</div>";
		}
	}
	document.getElementById(containerid).innerHTML=loadstatustext;
}

function ajaxInitialize(url,method,query,containerid){
	var xmlHttp;
	try {    // Firefox, Opera 8.0+, Safari, IE7+
		xmlHttp=new XMLHttpRequest();
		if(xmlHttp.overrideMimeType){    // for charset, won't work in IE7
			xmlHttp.overrideMimeType('text/html; charset=iso-8859-1'); 
        }
	} catch (e){    // Internet Explorer
 		try {    
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e){
			try{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e){
				//alert("Sorry, your browser does not support AJAX!");
				return false;
			}
		}
	}
	// get the data from the server's response
	xmlHttp.onreadystatechange=function(){
		if (xmlHttp.readyState == 4 && (xmlHttp.status==200 || window.location.href.indexOf("http")==-1)) {	
			document.getElementById(containerid).innerHTML=xmlHttp.responseText;
		}
	}
	// get or post
	if (method=='get') {
		xmlHttp.open("GET",url,true);
  		xmlHttp.send(null);
	} else {
		xmlHttp.open("POST",url,true);
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlHttp.send(query);
	}
	//stops form from submitting normally
    return false;
}

function ajaxBuildPostQuery(formObj) {
	var formdata = "";
	// Loop through form fields
    for (i=0; i < formObj.elements.length; i++)
    {
         //Build Send String
         if(formObj.elements[i].type == "text"){ //Handle Textbox's
                  formdata = formdata + formObj.elements[i].name + "=" + escape(formObj.elements[i].value) + "&";
         }else if(formObj.elements[i].type == "textarea"){ //Handle textareas
                  formdata = formdata + formObj.elements[i].name + "=" + escape(formObj.elements[i].value) + "&";
         }else if(formObj.elements[i].type == "checkbox"){ //Handle checkbox's
                 formdata = formdata + formObj.elements[i].name + "=" + formObj.elements[i].checked + "&";
         }else if(formObj.elements[i].type == "radio"){ //Handle Radio buttons
                  if(formObj.elements[i].checked==true){
                     formdata = formdata + formObj.elements[i].name + "=" + formObj.elements[i].value + "&";
                  }
         }else{
                  formdata = formdata + formObj.elements[i].name + "=" + escape(formObj.elements[i].value) + "&";
         }
    }	
	return formdata;
}
