//====================================================================================
//====================================================================================
//=====================================================AJAX===========================
//====================================================================================
//====================================================================================
function getHTTPObject() {
	var xhr = false;
	if(window.XMLHttpRequest) {
		var xhr = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		try {
			var xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				var xhr = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				xhr = false;
			}
		}
	}
	return xhr;
}

var ajaxWorking = false;

function doAjax(httpPath, vals, method, sync, flag) {

	/*============================
	FUNCTION INFO:	
	httpPath => url of execution page
	vals => values to pass to the above page
		all values i'm entering. all value must transferred as string; devided by  |~|. 
		//ex: 'state=AR|~|phone=212-111-1111|~|active=1'
	method => POST or GET
	sync => true (for sync executing) or false (for async executing)
	flag => cursor to the location withing the success / fail functions. (optional)
	==============================*/

	var http = getHTTPObject();

	if (http && !ajaxWorking) {
		vals_break = "";
		if (vals != "") {
			vals = vals.split("|~|");
			for (i = 0; i < vals.length; i++) {
				variable = vals[i].substr(0, vals[i].indexOf("="));
				value = "";
				value = vals[i].substr(vals[i].indexOf("=") + 1, vals[i].length);
				if (value != "") {
					if (vals_break != "") vals_break += "&";
					vals_break += variable + "=" + escape(value);
				}
			}
		}
		if (vals_break=="") vals_break = null;
		http.open(method, httpPath, sync);
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		//http.setRequestHeader('Content-Type',  "text/xml");
		ajaxWorking = true;
		http.send(vals_break);
		if (!sync){
			if (http.readyState == 4) {
				ajaxWorking = false;
				//==============================================================================================================================
				//alert('VALUES:\n' + vals_break + '\n\nHTML:\n' + http.responseText);
				if (http.status == 200) ajaxSuccess(http.responseXML, flag);
				else ajaxFail(flag);
			}
		} else {
			http.onreadystatechange = function(){
				if (http.readyState == 4) {
					ajaxWorking = false;
					//==============================================================================================================================
					//alert('VALUES:\n' + vals_break + '\n\nHTML:\n' + http.responseText);
					if (http.status == 200) ajaxSuccess(http.responseXML, flag);
					else ajaxFail(flag);
				}
			}
		}
	}
}

//====================================================================================
//====================================================================================
//====================================================================================
//====================================================================================

function ajaxSuccess(xmlDocument, flag){
	var err_here = false;
	
	switch(flag){
		//======================================= CONTROLS
		case "rate_post":
			err_here = true;
			if (xmlDocument.getElementsByTagName('success').item(0)) {
				var done = xmlDocument.getElementsByTagName('success').item(0).firstChild.data;
				var id = xmlDocument.getElementsByTagName('id').item(0).firstChild.data;
		    	if (done == "True") {
					show_rate = '';
					for (i=1; i<=5; i++) {
						show_rate += '<img src="/images/icn_star';
						if (my_rating >= i) show_rate += '_on';
						show_rate += '.gif" alt="*" />';
					}
					//document.getElementById('rate_'+id).innerHTML = 'Mine: ' + show_rate;
					document.getElementById('rate_'+id).innerHTML = 'Rate this review';
					if (my_rating == 0) document.getElementById('post_rating_'+id).innerHTML = 'Mine: ' + show_rate;
					err_here = false;
				}
			}
			if (err_here) ajaxFail(flag);
			break;
			
		case "bookmark_post":
			err_here = true;
			if (xmlDocument.getElementsByTagName('success').item(0)) {
				var done = xmlDocument.getElementsByTagName('success').item(0).firstChild.data;
				var id = xmlDocument.getElementsByTagName('id').item(0).firstChild.data;
		    	if (done == "True") {
					document.getElementById('nav_service_bookmarks').innerHTML++;
					document.getElementById('bookmark_'+id).innerHTML = "Bookmark";
					document.getElementById('post_bookmark_'+id).innerHTML++;
					err_here = false;
				}
			}
			if (err_here) ajaxFail(flag);
			break;
			
		case "email_post":
			err_here = true;
			if (xmlDocument.getElementsByTagName('success').item(0)) {
				var done = xmlDocument.getElementsByTagName('success').item(0).firstChild.data;
				var id = xmlDocument.getElementsByTagName('id').item(0).firstChild.data;
				err_here = false;
		    	if (done == "True") {
					document.getElementById('email_'+id).value = "";
					document.getElementById('quick_share_'+id).className = "quick_box hidden";
					document.getElementById('btn_email_' + id).disabled = false;
					
				} else {
					document.getElementById('cap_email_'+id).innerHTML = "Sending failed. Please check the email address and try again:";
					document.getElementById('cap_email_'+id).className = "highlight";
					document.getElementById('btn_email_' + id).disabled = false;
				}
			}
			if (err_here) {
				document.getElementById('cap_email_'+id).innerHTML = "Sending failed. Please try again later.";
				document.getElementById('cap_email_'+id).className = "highlight";
				document.getElementById('btn_email_' + id).disabled = false;
			}
			break;
			
		case "spam_post":
			err_here = true;
			if (xmlDocument.getElementsByTagName('success').item(0)) {
				var done = xmlDocument.getElementsByTagName('success').item(0).firstChild.data;
				var id = xmlDocument.getElementsByTagName('id').item(0).firstChild.data;
		    	if (done == "True") {
					document.getElementById('spam_'+id).innerHTML = "Spam";
					err_here = false;
				}
			}
			if (err_here) ajaxFail(flag);
			break;
			
		case "comment_post":
			err_here = true;
			if (xmlDocument.getElementsByTagName('success').item(0)) {
				var done = xmlDocument.getElementsByTagName('success').item(0).firstChild.data;
				var id = xmlDocument.getElementsByTagName('id').item(0).firstChild.data;
		    	if (done == "True") {
					document.getElementById('quick_comment_'+id).className = 'quick_box hidden';
					document.getElementById('cap_comment_'+id).className = '';
					document.getElementById('comment_'+id).value = '';
					document.getElementById('comment_btn_'+id).focus();
					document.getElementById('post_comment_'+id).innerHTML++;
					err_here = false;
				}
			}
			if (err_here) ajaxFail(flag);
			break;
			
		case "remove_post":
			err_here = true;
			if (xmlDocument.getElementsByTagName('success').item(0)) {
				var done = xmlDocument.getElementsByTagName('success').item(0).firstChild.data;
				var id = xmlDocument.getElementsByTagName('id').item(0).firstChild.data;
		    	if (done == "True") {
					document.getElementById('nav_service_bookmarks').innerHTML--;
					document.getElementById("post_" + id).innerHTML = "Post has been removed from bookmarks";
					err_here = false;
				}
			}
			if (err_here) ajaxFail(flag);
			break;
			
			
			
			
			
		//======================================= AD
		case "ad_post_wizard_carrier":
			err_here = true;
			html = '<select id="ad_post_wizard_carrier" name="c"><option value="">All Carriers</option><option value=""></option>';
			if (xmlDocument.getElementsByTagName('success').item(0)) {
				var done = xmlDocument.getElementsByTagName('success').item(0).firstChild.data;
		    	elem = xmlDocument.getElementsByTagName('option');
				elem2 = xmlDocument.getElementsByTagName('option_value');
				elem3 = xmlDocument.getElementsByTagName('option_selected');
				for (i = 0; i < elem.length; i++) {
					option_selected = "";
					if (elem3[i].firstChild.nodeValue == "True") option_selected = ' selected="selected"';
					html += '<option value="'+ elem2[i].firstChild.nodeValue +'"' + option_selected + '>' + elem[i].firstChild.nodeValue + '</option>';
				}
			}
			html += '</select>';
			document.getElementById('dyn_wizard_carriers').innerHTML = html;
			break;
			
			
			
			
			
		//======================================= VALIDATIONS
		case "vld_email":
			err_here = true;
			if (xmlDocument.getElementsByTagName('success').item(0)) {
				var done = xmlDocument.getElementsByTagName('success').item(0).firstChild.data;
		    	if (done == "True") {
					email_ex = false;
					err_here = false;
				}
			}
			if (err_here) ajaxFail(flag);
			break;
			
			
			
			
			
		
			
	}
}

function ajaxFail(flag){
	switch(flag){
		//======================================= CONTROLS
		case "rate_post":
			//alert('bad');
			break;
			
		case "bookmark_post":
			//alert('bad');
			break;
			
		case "spam_post":
			//alert('bad');
			break;
		
		case "comment_post":
			//alert('bad');
			break;
		
		
		//======================================= VALIDATIONS
		case "vld_email":
			email_ex = true;
			break;
	}
}