var pageId = null;
var positionBool = null;
var requestInProgress = false;
var loaderImageId = 'loaderimg';
var displayLoaderImage = false;

function showBuddyReviewList(id, position, displayloaderimage, numlistitems){
	//DETERMINE IF THE LIST HAS PREVIOUSLY BEEN GENERATED I.E. IMAGE ALREADY BEEN ROLLEDOVER
	if(getElement(id)){
		pageId = getElement(id);
		positionBool = position;
		displayLoaderImage = displayloaderimage;
		//DETERMINE GLOBALPROPERTYNODEID FROM PAGE ELEMENT ID I.E. br_123456
		globalPropertyNodeId = id.substring(3,id.length);
		//CHECK THAT WE HAVE ONLY ONE li ITEM I.E. WE HAVEN'T ALREADY POPULATED THE LIST
		if(pageId.getElementsByTagName("li").length == numlistitems && globalPropertyNodeId > 0){
			//CHECK THAT THERE'S NO LOADER IMG ALREADY AND CREATE ONE
			if(pageId.getElementsByTagName("img").length == 0 && displayLoaderImage){
				addImageElement(pageId, loaderImageId,'/images/loader_indicatorbig.gif', 32, 32);
			}
			//MAKE THE LIST VISIBLE
			makeBuddyReviewListVisible();
			//IF WE HAVEN'T ALREADY KICKED OFF A REQUEST THAT START ONE
			if(!requestInProgress){
				requestInProgress = true;
				getBuddyReviewBrokers(globalPropertyNodeId);
			}
		}else{
			//MAKE THE LIST VISIBLE
			makeBuddyReviewListVisible();
		}
	}
}

function makeBuddyReviewListVisible(){
	//POSITION ELEMENT IF NECESSARY
//	if(positionBool){
//		pageId.style.top = getElement('brro_' + globalPropertyNodeId).offsetParent.offsetTop + 20 + "px";
//		pageId.style.left = getElement('brro_' + globalPropertyNodeId).offsetParent.offsetLeft + 38 + "px";
//		if(BrowserDetect.browser == 'Firefox' || BrowserDetect.browser == 'Safari'){
//			pageId.style.top = getElement('brro_' + globalPropertyNodeId).offsetParent.offsetTop + 10 + "px";
//			pageId.style.left = getElement('brro_' + globalPropertyNodeId).offsetParent.offsetLeft + 76 + "px";			
//		}
//	}
	//MAKE ELEMENT VISIBLE	
	pageId.style.visibility = "visible";
}

function closeBuddyReviewList(id){
	if(getElement(id)){
		getElement(id).style.visibility = "hidden";
	}
}

function getBuddyReviewBrokers(globalPropertyNodeId){
	ajaxObject = initAjaxObject();
	ajaxObject.onreadystatechange = processAjaxReadyState_getBuddyReviewBrokers;
	ajaxObject.open('GET', '/utility/getbuddyreviewbrokers.aspx?globalpropertynodeid=' + globalPropertyNodeId + "&ms=" + new Date().getTime(), true);
	//ajaxObject.open('GET', '/utility/buddyreviewtest.xml', true); //TESTING ONLY
	ajaxObject.send('');
}

function processAjaxReadyState_getBuddyReviewBrokers(){
	if (ajaxObject.readyState == 4){
		if(ajaxObject.status == '200'){
			if(ajaxObject.responseXML.getElementsByTagName('Broker')){
				brokers = ajaxObject.responseXML.getElementsByTagName('Broker')
				if(brokers.length > 0){
					//alert(requestInProgress);
					//CHECK THAT THERE IS A LOADER IMG AND REMOVE IT
					if(getElement(loaderImageId)){
						pageId.removeChild(getElement(loaderImageId));
					}
					//POPULATE THE LIST
					for(i=0; i<brokers.length; i++){						
						addPageElement(addPageElement(pageId, 'li', brokers[i].childNodes[0].childNodes[0].nodeValue + ' - ', ''), 'span', brokers[i].childNodes[1].childNodes[0].nodeValue, '');
					}					
					requestInProgress = false;
				}
			}
		}
	}
}

function addImageElement(parent, id, src, w, h){
	var element = document.createElement('img');
	element.id = id;
	element.src = src;
	element.width = w;
	element.height = h;
	parent.appendChild(element);
}

function addPageElement(parent, tagName, text, value){
	var element = document.createElement(tagName);
	element.innerHTML = text;
	if(value.length > 0){
		element.value = value;
	}
	parent.appendChild(element);
	return element;
}

function initAjaxObject(){
	if (window.XMLHttpRequest){
		// W3C METHOD
		return new XMLHttpRequest();
	}else if (window.ActiveXObject){
		// IE METHOD
		return new ActiveXObject('Microsoft.XMLHTTP');
	}else{
		return;
	}
}

function getElement(elementId){
	if (document.getElementById){
		return document.getElementById(elementId);
	}else{
		return document.all[elementId];
	}
}
