/**********************************************/
	var selectId = "";
        var selectClass = "";
	var selectValue = "0";
        var targetDiv = "";
        var surrondingDiv = "";
        var ajaxRequest;

/***********************************************/
	/**
	* Adds the event to the site during load.
	*/



	function setScript(pSelect, pSurroundingDiv, pTarget){
          selectId = pSelect;
          selectClass = pSelect;
          surrondingDiv = pSurroundingDiv;
          targetDiv = pTarget;
		  changeValue();
	}


	/**
	* The AJAX request for xmlhttprequest
	*/
	function createRequestObject(){
	var ro;
	var browser = navigator.appName;

	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		ro = new XMLHttpRequest();
	}
	return ro;
	}

    function changeValue(){
    	http = createRequestObject();
		selectValue = window.document.getElementById(selectId).value;
         	sendReq();
    }

	/**
	* Send the request for the requested page
	*/
	function sendReq() {
		http.open('POST', 'company_finder.jsp?selectId='+selectId+'&selectValue='+ selectValue, true);
		http.onreadystatechange = handleResponse;
		try{
			http.send(null);
		}catch(ex){
			//alert("Error in sendReq: http.send(null)");
		}
	}

	/**
	* Hanldes the response and prints the result in the DIV
	*/
	function handleResponse() {
		if(document.getElementById(targetDiv)){
		  if(http.readyState == 4){

				var response = http.responseText;
				document.getElementById(targetDiv).innerHTML = response;
		  }
		  if(http.readyState == 1){
				document.getElementById(targetDiv).innerHTML ="Loading data";
		  }
		}
	}
	
	function clearOptions(selectId) {
		var select = document.getElementById(selectId)
		var options = select.getElementsByTagName("option");
		var i;
		for (i=options.length-1; i>=0; i--) {
		      select.removeChild(options[i]);
		}
	}
	
	/** Confirm dialog for remove company */
	function confirmRemoveCompany(cid,companyName) {
		if (confirm('Are you sure you want to remove '+companyName)) {
			window.location = '/opendirectory/admin/admin_action.jsp?admin_action=delete_company&company_id='+cid
		/*	httpObj = createRequestObject();
			httpObj.open('GET', '/opendirectory/admin/admin_action.jsp?admin_action=delete_company&company_id='+cid);*/
		}
	}
	
	/** ADD/EDIT COMPANY */
	
	function createAjaxRequest(){
				
		try{
			// Opera 8.0+, Firefox, Safari
			ajaxRequest = new XMLHttpRequest();
		} catch (e){
			// Internet Explorer Browsers
			try{
				ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try{
					ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e){
					// Something went wrong
					alert("Your browser is outdated and will not work with this page!");
					return false;
				}
			}
		}
	}
	
	/* Get new ports when changing region*/
	function sendFillPortRequest() {
		var selectedRegion = document.getElementById('region_select').value;
		createAjaxRequest();
		ajaxRequest.onreadystatechange = handlePortsResponse;
		//ajaxRequest.open('POST', 'company_finder.jsp?selectId='+1+'&selectValue='+ 1, true);
		ajaxRequest.open('GET', 'port_finder.jsp?selectedId=' + selectedRegion + '&selectedMethod=1', true);
		try{
			ajaxRequest.send(null);
		}catch(ex){
			alert("Error in sendReq: http.send(null)");
		}
	}
	
	function handlePortsResponse() {
		if(document.getElementById('ports')){
			var state = ajaxRequest.readyState;
			if(state == 4){
				document.getElementById('ports').innerHTML = ajaxRequest.responseText;
				checkPortCheckboxes();
			}
			else if (state == 2 || state == 3) {
				document.getElementById('ports').innerHTML = "Loading data";
			}
		}
	}
	
	/* Add/remove port when a checkbox is checked/un-checked*/
	function addPort(chkbx) {
		addedPorts = document.getElementById('added_ports');
		regionSelect = document.getElementById('region_select')
		var region = regionSelect.options[regionSelect.selectedIndex].text;
		

		if (!chkbx.checked) {
			optgrps = addedPorts.childNodes;
			for (var i=0; i<optgrps.length; i++) {
				currentOptGrp = optgrps[i];
				if (currentOptGrp.nodeName == 'OPTGROUP' && currentOptGrp.label == region) {
					portNodes = currentOptGrp.childNodes;
					for (var n=0; n<portNodes.length; n++) {
						if (portNodes[n].value == chkbx.value) {
							currentOptGrp.removeChild(portNodes[n]);
							break;
						}
					}
					if (portNodes.length <= 0)
						addedPorts.removeChild(currentOptGrp);
				}
			}
		} else {
			
			optgrps = addedPorts.childNodes;
			var found = false;
			var currentOptGrp;
			for (var j=0; j<optgrps.length; j++) {
				currentOptGrp = optgrps[j];
				if (currentOptGrp.nodeName == 'OPTGROUP' && currentOptGrp.label == region) {
					found = true;
					break;
				}
			}
			
			opt = document.createElement('option');
			text = document.createTextNode(chkbx.name);
			opt.setAttribute('value', chkbx.value);
			opt.appendChild(text);
			if (!found) {
				currentOptGrp = document.createElement('optgroup');
				currentOptGrp.label = region;
				currentOptGrp.appendChild(opt);
				addedPorts.appendChild(currentOptGrp);
			}
			else {
				currentOptGrp.appendChild(opt);
			}
		}
	}
	
	/* Check if any ports for the current region has been added and check the corresponding checkbox. */
	function checkPortCheckboxes() {
		regionSelect = document.getElementById('region_select')
		var region = regionSelect.options[regionSelect.selectedIndex].text;
		optgrp = document.getElementById('added_ports').childNodes;
		for (var i=0; i<optgrp.length; i++) {
			currentOptGrp = optgrp[i];
			if (currentOptGrp.nodeName == 'OPTGROUP' && currentOptGrp.label == region) {
				portNodes = currentOptGrp.childNodes;
				checkboxes = document.forms[0].elements;
				for (var j=0; j<portNodes.length; j++) {
					for (var n=0; n<checkboxes.length; n++) {
						if (checkboxes[n].type && checkboxes[n].type == 'checkbox' && checkboxes[n].value == portNodes[j].value) {
							checkboxes[n].checked = true;
							n = checkboxes.length;
						}
					}
				}
				break;
			}
		}
	}
	
	/*function addPorts( btn ) {
		var elems = btn.form.elements;
		addedPorts = document.getElementById('added_ports');
		
		for (var i = 0, len = elems.length; i < len; i++) {
			if (elems[i].type && elems[i].type == 'checkbox' && elems[i].checked == true) {
				var exist = false;
				for(var j = 0; j < addedPorts.length; j++) {
					if (addedPorts.options[j].value == elems[i].value) {
						exist = true;
					}
				}
				if (!exist) {
					opt = document.createElement('option');
					opt.value = elems[i].value;
					opt.text = elems[i].name;
					//addedPorts.appendChild(opt);
					try {
						addedPorts.add(opt, null);
					} catch(ex) {
						addedPorts.add(opt);
					}
				}
				elems[i].checked = false;
			}
		}
	}*/
	
	/* Clear the added ports*/
	function clearPorts() {
		addedPorts = document.getElementById('added_ports');
		optgrps = addedPorts.childNodes;
		while (addedPorts.childNodes.length > 0) {
			addedPorts.removeChild(addedPorts.childNodes[0]);
		}

		document.forms[0].reset();
	}
	
	/* Done adding ports. Send them to parent and close */
	function doneAddingPorts() {
		var addedPorts = document.getElementById('added_ports');
		
		window.opener.clearParent('added_ports')
		optgrps = addedPorts.childNodes;
		for (var i=0; i<optgrps.length; i++) {
			currentOptGrp = optgrps[i];
			if (currentOptGrp.nodeName == 'OPTGROUP') {
				window.opener.addOptgroup('added_ports', currentOptGrp);
				first = false;
			}
		}
		window.close();
	}
	
	function clearParent(elementId) {
		parentListBox = document.getElementById(elementId);
		for (var j=parentListBox.childNodes.length-1; j>= 0; j--) {
			parentListBox.removeChild(parentListBox.childNodes[j]);
		}
	}
	
	function addOptgroup(elementId, copyOptGroup) {
		parentListBox = document.getElementById(elementId);
				
		optgrp = document.createElement('optgroup');
		optgrp.label = copyOptGroup.label;
		
		for (var i=0; i<copyOptGroup.childNodes.length;i++) {
			opt = document.createElement('option');
			opt.value = copyOptGroup.childNodes[i].value;
			var text = document.createTextNode(copyOptGroup.childNodes[i].text);
			opt.appendChild(text);
			optgrp.appendChild(opt);
		}
				
		parentListBox.appendChild(optgrp);
	}
	
	/* Insert ports if we have any in parent */
	function insertPorts() {
		listToInsert = window.opener.document.getElementById('added_ports').childNodes;
		portList = document.getElementById('added_ports');
		var s;
		for (var i=0; i<listToInsert.length; i++) {
			
			if (listToInsert[i].nodeName == 'OPTGROUP') {
				optgrp = document.createElement('optgroup');
				optgrp.label = listToInsert[i].label;
						
				var ports = listToInsert[i].childNodes;
				for (var j=0; j<ports.length; j++) {
					if (ports[j].nodeName == 'OPTION') {
					opt = document.createElement('option');
					opt.value = ports[j].value;
					text = document.createTextNode(ports[j].text);
					opt.appendChild(text);
					optgrp.appendChild(opt);
					}
				}
				
				portList.appendChild(optgrp);
			}
		}
		checkPortCheckboxes();
	}
	
	/** SEARCHRESULTS */
	function sendGetPortsRequest() {
		var selectedRegion = document.getElementById('region_select').value;
		if (selectedRegion != null) {
			createAjaxRequest();
			ajaxRequest.onreadystatechange = handleGetPortsResponse;
			//ajaxRequest.open('POST', 'company_finder.jsp?selectId='+1+'&selectValue='+ 1, true);
			ajaxRequest.open('GET', 'port_finder.jsp?selectedId=' + selectedRegion + '&selectedMethod=2', true);
			try{
				ajaxRequest.send(null);
			}catch(ex){
				alert("Error in sendReq: http.send(null)");
			}
		} else {
			//clearList();
		}
	}
	
	function handleGetPortsResponse() {
		if(document.getElementById('port_div')){
			var state = ajaxRequest.readyState;
			if(state == 4) {
				document.getElementById('port_div').innerHTML = ajaxRequest.responseText;
			}	
			else if (state == 2 || state == 3) {
				//document.getElementById('ports').innerHTML = "Loading data";
			}
		}
	}
	
	function clearList() {
		addedPorts = document.getElementById('port_select');
		optgrps = addedPorts.childNodes;
		while (addedPorts.childNodes.length > 0) {
			addedPorts.removeChild(addedPorts.childNodes[0]);
		}

		opt = document.createElement('option');
		opt.value = '';
		var text = document.createTextNode('-');
		opt.appendChild(text);
		addedPorts.appendChild(opt);
	}


