function XBrowserAddHandler(target,eventName,handlerName)
{
    if ( target.addEventListener )
      target.addEventListener(eventName, handlerName, false);
    else if ( target.attachEvent )
      target.attachEvent("on" + eventName, handlerName);
    else
      target["on" + eventName] = handlerName;
}

function createXMLHttpRequest() {
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (ex) {}
	try { return new XMLHttpRequest(); } catch(ex2) {}
	alert("XMLHttpRequest not supported");
	return null;
}

function repaintDropdowns(json,element){	
	var jsonObject = eval("(" + json + ")");	
	var availServices = jsonObject.services.availServices;
	var unavailServices = jsonObject.services.unavailServices;	

	var elementToRepaint = document.getElementById(element);
	var addServiceDropdown = document.getElementById("addServiceSelect");
	
	if (elementToRepaint.hasChildNodes()){
	    while (elementToRepaint.childNodes.length >= 1){	    
	    	elementToRepaint.removeChild(elementToRepaint.firstChild);       
	    } 
	}
	while(addServiceDropdown.childNodes.length > 1){
		addServiceDropdown.removeChild(addServiceDropdown.lastChild);
	}
	
	for (var i=0; i<availServices.length;i++){
		var divId = availServices[i].id+"|"+availServices[i].durationHours+"|"+availServices[i].durationMinutes;
		var div = document.createElement("div");
		var option = document.createElement("option");
		
		option.setAttribute("value","add"+divId);
		option.appendChild(document.createTextNode(availServices[i].display));
		addServiceDropdown.appendChild(option);
		
		div.className="dd-item";
		div.setAttribute("id",divId);
		
		XBrowserAddHandler(div, 'mousedown', function(e) { selectDivToHighlight(e) });
		XBrowserAddHandler(div, 'mouseup', function(e) { highlightDiv(e) });		
		
		div.setAttribute("ext:qtip",availServices[i].desc);
		div.appendChild(document.createTextNode(availServices[i].display));
		elementToRepaint.appendChild(div);
	}	

	if (unavailServices>0){		
		document.getElementById("unavailHolder").style.display = "";				
		document.getElementById("eventTable").tBodies[0].rows[5].deleteCell(1);		

		var tableData = document.createElement("td");
		var textNode;
		if (unavailServices>1){
			textNode = document.createTextNode("More time needed for "+unavailServices+" services, click ");
		}
		if (unavailServices==1){
			textNode = document.createTextNode("More time needed for 1 service, click ");
		}
		var anchor = document.createElement('a');
		anchor.setAttribute('href','/appt/secure/viewProvidedServices.do');
		anchor.appendChild(document.createTextNode("here"));
		var textNode2 = document.createTextNode(" to view");
		tableData.appendChild(textNode);
		tableData.appendChild(anchor);
		tableData.appendChild(textNode2);
		document.getElementById("eventTable").tBodies[0].rows[5].appendChild(tableData);
	}
	if (unavailServices===0){	
		document.getElementById("unavailHolder").style.display = "none";
	}	
	
	var selectedContainer = document.getElementById("dd2-ct");
	var childElements = selectedContainer.childNodes;
	while(childElements.length>0){
		selectedContainer.removeChild(childElements[0]);
	}
	
	changeTime();
	
	document.getElementById("progress").style.display = "none";
}

function retrieveServices(userId,staffId,day,startHour,startMin,element){	
	if (userId!="none"){
		document.getElementById("progress").style.display = "";
		var xhr = createXMLHttpRequest();
		try{
			xhr.open("POST","/appt/secure/retrieveServices.do?userId="+userId+"&staffId="+staffId+"&day="+day+"&hour="+startHour+"&min="+startMin,true);
		}
		catch(e){
			alert(e);
		}	
		xhr.onreadystatechange = function(){		
			if (xhr.readyState==4){
				if (xhr.status==200){									
					var textObject = xhr.responseText;				
					repaintDropdowns(textObject,element);
				}
				else{
					alert("An error occurred");
				}
			}
		};
		
		xhr.send(null);
	}
}