function ajax_add_friend(friend_id) {
		
	var ajaxObject				= getAJAXObject();
		
	if(! ajaxObject ) {
		return;
	}
	
	//Cache Killer
	var now = "uid=" + new Date().getTime();
	
	var parameters = 	"friend_id=" + encodeURI( friend_id ) + "&action=ADD";
	
	ajaxObject.open("POST", '/ajax/ajax_add_friend.php?' + now, true);

	ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxObject.setRequestHeader("Content-length", parameters.length);
	ajaxObject.setRequestHeader("Connection", "close");
	ajaxObject.send(parameters);

	
	ajaxObject.onreadystatechange = handleAJAXResponse;
	
	ajaxObjects.push(ajaxObject);

	return false;
}

function ajax_remove_friend(friend_id) {
	
	var ajaxObject				= getAJAXObject();
		
	if(! ajaxObject ) {
		return;
	}
	
	//Cache Killer
	var now = "uid=" + new Date().getTime();
	
	var parameters = 	"friend_id=" + encodeURI( friend_id ) + "&action=REMOVE";
		
	ajaxObject.open("POST", '/ajax/ajax_add_friend.php?' + now, true);

	ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxObject.setRequestHeader("Content-length", parameters.length);
	ajaxObject.setRequestHeader("Connection", "close");
	ajaxObject.send(parameters);

	
	ajaxObject.onreadystatechange = handleAJAXResponse;
	
	ajaxObjects.push(ajaxObject);

	return false;
}

function ajax_accept_friend(friend_id) {
	

	
	var ajaxObject				= getAJAXObject();
		
	if(! ajaxObject ) {
		return;
	}
	
	//Cache Killer
	var now = "uid=" + new Date().getTime();
	
	var parameters = 	"friend_id=" + encodeURI( friend_id ) + "&action=ACCEPT";
	
	ajaxObject.open("POST", '/ajax/ajax_add_friend.php?' + now, true);

	ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxObject.setRequestHeader("Content-length", parameters.length);
	ajaxObject.setRequestHeader("Connection", "close");
	ajaxObject.send(parameters);

	
	ajaxObject.onreadystatechange = handleAJAXResponse;
	
	ajaxObjects.push(ajaxObject);

	return false;
}

function ajax_decline_friend(friend_id) {
	
	var ajaxObject				= getAJAXObject();
		
	if(! ajaxObject ) {
		return;
	}
	
	//Cache Killer
	var now = "uid=" + new Date().getTime();
	
	var parameters = 	"friend_id=" + encodeURI( friend_id ) + "&action=DECLINE";
		
	ajaxObject.open("POST", '/ajax/ajax_add_friend.php?' + now, true);

	ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxObject.setRequestHeader("Content-length", parameters.length);
	ajaxObject.setRequestHeader("Connection", "close");
	ajaxObject.send(parameters);

	
	ajaxObject.onreadystatechange = handleAJAXResponse;
	
	ajaxObjects.push(ajaxObject);

	return false;
}



function ajax_add_trail(trail_id) {
	
	var ajaxObject				= getAJAXObject();
		
	if(! ajaxObject ) {
		return;
	}
	
	//Cache Killer
	var now = "uid=" + new Date().getTime();
	
	var parameters = 	"trail_id=" + encodeURI( trail_id ) + "&action=ADD";
	
	ajaxObject.open("POST", '/ajax/ajax_add_trail.php?' + now, true);

	ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxObject.setRequestHeader("Content-length", parameters.length);
	ajaxObject.setRequestHeader("Connection", "close");
	ajaxObject.send(parameters);

	
	ajaxObject.onreadystatechange = handleAJAXResponse;
	
	ajaxObjects.push(ajaxObject);

	return false;
}

function ajax_remove_trail(trail_id) {
	
	var ajaxObject				= getAJAXObject();
		
	if(! ajaxObject ) {
		return;
	}
	
	//Cache Killer
	var now = "uid=" + new Date().getTime();
	
	var parameters = 	"trail_id=" + encodeURI( trail_id ) + "&action=REMOVE";
		
	ajaxObject.open("POST", '/ajax/ajax_add_trail.php?' + now, true);

	ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxObject.setRequestHeader("Content-length", parameters.length);
	ajaxObject.setRequestHeader("Connection", "close");
	ajaxObject.send(parameters);

	
	ajaxObject.onreadystatechange = handleAJAXResponse;
	
	ajaxObjects.push(ajaxObject);

	return false;
}

function ajaxGetChildRegions(parent_id,target) {
	
	if ( parent_id == 'Other' ) {
		
		var region_target = document.getElementById('region_target');
		var city_target = document.getElementById('city_target');
		
		if ( city_target ) {
			city_target.innerHTML = '';
			city_target.style.display = 'none';
		}
			
		if ( target == 'region' ) {
			checkOther(parent_id,'country');
			if ( region_target ) {
				region_target.innerHTML = '';
				region_target.style.display = 'none';
			}
		} else {
			checkOther(parent_id,'region');
		}
		
	} else {
		
		var country_other = document.getElementById('country_other');
		var region_other = document.getElementById('region_other');
		var city_other = document.getElementById('city_other');
		
		if ( country_other ) country_other.style.display = 'none';
		if ( region_other ) region_other.style.display = 'none';
		if ( city_other ) city_other.style.display = 'none';
		
		var ajaxObject = getAJAXObject();
		
		if ( !ajaxObject || target == null ) {
			return;
		}
			
		var now 	= 'uid=' + new Date().getTime();
		var parameters  = 'id='+ parent_id + '&action=' + target; 
		
		ajaxObject.open("POST", '/ajax/ajax_regions.php?' + now, true);
		
		ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxObject.setRequestHeader("Content-length", parameters.length);
		ajaxObject.setRequestHeader("Connection", "close");
		ajaxObject.send(parameters);
		
		ajaxObject.onreadystatechange = handleAJAXResponse;
		
		ajaxObjects.push(ajaxObject);
		
	}

	return false;
	
}

function checkOther(value,target) {
	
	if ( value == 'Other' ) {
		document.getElementById(target+'_other').style.display = 'block';
	} else {
		document.getElementById(target+'_other').style.display = 'none';
	}
	
}

function opacity(id, opacStart, opacEnd, millisec, slide) { 


    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 
	
	
	el = document.getElementById(id);
	if(! el ) {
		return;	
	}
	
	el.style.display = 'block';

	el.timeouts = new Array();
	el.timeouts['fadeouts'] = new Array();

    //determine the direction for the blending, if start and end are the same nothing happens 
    if(opacStart > opacEnd) { 
        for(i = opacStart; i >= opacEnd; i--) { 
            el.timeouts['fadeouts'][i] = setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    } else if(opacStart < opacEnd) { 
        for(i = opacStart; i <= opacEnd; i++) { 
            el.timeouts['fadeouts'][i] = setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    }
	i = el.timeouts['fadeouts'].length;
	
	if ( slide ) {
		el.timeouts['fadeouts'][i] = setTimeout("slide('" + id + "',1000)",(timer * speed)); 
	}
	
	
} 

function fadeout( id, speed, slide ) {
	
	if (! speed ) {
		speed = 3000;	
	}
	
	
	var el = document.getElementById(id);
	if (! el ) {
		return;	
	}
	
	if ( el.timeouts ) {
		if ( el.timeouts['fadeouts'] && el.timeouts['fadeouts'].length > 0 ) {
			var numTimeouts = el.timeouts['fadeouts'].length;

			for ( var i=0; i < numTimeouts; i++ ) {
				var timeout = el.timeouts['fadeouts'][i];
			}			
		}
		
	}
	
	opacity(id, 100, 0, speed, slide);
}

//change the opacity for different browsers 
function changeOpac(opacity, id) { 
    var object = document.getElementById(id).style; 
    object.opacity = (opacity / 100); 
    object.MozOpacity = (opacity / 100); 
    object.KhtmlOpacity = (opacity / 100); 
    object.filter = "alpha(opacity=" + opacity + ")"; 
} 

function hide ( id ) {
	var el = document.getElementById(id);
	
	if(! el ) {
		return;	
	}
	
	el.style.display = 'none';
}

function slide(id, millisec) {
	
	var speed = Math.round(millisec / 100); 

    var timer = 0; 
	
	var el = document.getElementById(id);
	if (! el ) {
		return;	
	}
	
	if ( el.timeouts ) {
		if ( el.timeouts['slides'] && el.timeouts['slides'].length > 0 ) {
			var numSlides = el.timeouts['slides'].length;

			for ( var i=0; i < numSlides; i++ ) {
				var timeout = el.timeouts['slides'][i];				
				clearTimeout(timeout);
			}			
		}
		
	}
	
	el.timeouts = new Array();
	el.timeouts['slides'] = new Array();
	
	var height = el.offsetHeight;
	var i = height;
	for( i; i >= 0; i--) { 
		el.timeouts['slides'][i] = setTimeout("setHeight('" + id + "'," + i + ")",(timer * speed)); 
		timer++; 
	} 
	i = el.timeouts['slides'].length;
	el.timeouts['slides'][i] = setTimeout("hide('" + id + "')",(timer * speed)); 
	i++;
	timer++;
	el.timeouts['slides'][i] = setTimeout("setHeight('" + id + "', 'Auto')",(timer * speed)); 
}


function setHeight(id, height) {
	
	var el = document.getElementById(id);
	
	if(! el ) {
		return;	
	}
	if ( height == 'Auto' ) {
		el.style.height = height;
	} else {
		el.style.height = height + 'px';
	}
}

function sleep(time) {
	var now = new Date();
	var exitTime = now.getTime() + time;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}

function attachToCursor( evt, id, text ) {
	var el = document.getElementById(id);
	if (! el ) {
		return;	
	}
	el.style.position = 'absolute';
	el.innerHTML = text;
	el.style.top = mouseY(evt) + 10 +'px';
	el.style.left = mouseX(evt)+ 10 +'px';
	el.style.display = 'block';
}

function show ( id ) {
	var el = document.getElementById(id);
	if (! el ) {
		return;	
	}
	el.style.display = 'block';
}

function hide ( id ) {
	var el = document.getElementById(id);
	if (! el ) {
		return;	
	}
	el.style.display = 'none';
}

function mouseX(evt) {
	if (evt.pageX) return evt.pageX;
	else if (evt.clientX)
	   return evt.clientX + (document.documentElement.scrollLeft ?
	   document.documentElement.scrollLeft :
	   document.body.scrollLeft);
	else return null;
}

function mouseY(evt) {
	if (evt.pageY) return evt.pageY;
	else if (evt.clientY)
	   return evt.clientY + (document.documentElement.scrollTop ?
	   document.documentElement.scrollTop :
	   document.body.scrollTop);
	else return null;
}
