// <![CDATA[
//-----------------------------------------------------------------------------
// Define some constants.
//-----------------------------------------------------------------------------

// Define a list of Microsoft XML HTTP ProgIDs.
var XMLHTTPREQUEST_MS_PROGIDS = new Array(
	"Msxml2.XMLHTTP.7.0",
	"Msxml2.XMLHTTP.6.0",
	"Msxml2.XMLHTTP.5.0",
	"Msxml2.XMLHTTP.4.0",
	"MSXML2.XMLHTTP.3.0",
	"MSXML2.XMLHTTP",
	"Microsoft.XMLHTTP"
);

// Define ready state constants.
var XMLHTTPREQUEST_READY_STATE_UNINITIALIZED = 0;
var XMLHTTPREQUEST_READY_STATE_LOADING       = 1;
var XMLHTTPREQUEST_READY_STATE_LOADED        = 2;
var XMLHTTPREQUEST_READY_STATE_INTERACTIVE   = 3;
var XMLHTTPREQUEST_READY_STATE_COMPLETED     = 4;

//-----------------------------------------------------------------------------
// Returns an XMLHttpRequest object.
//-----------------------------------------------------------------------------
function getXMLHttpRequest() {
	var httpRequest = null;
	// Create the appropriate HttpRequest object for the browser.
	if (window.XMLHttpRequest != null)
		httpRequest = new window.XMLHttpRequest();
	else if (window.ActiveXObject != null) {
		// Must be IE, find the right ActiveXObject.
		var success = false;
		for (var i = 0; i < XMLHTTPREQUEST_MS_PROGIDS.length && !success; i++) {
			try {
				httpRequest = new ActiveXObject(XMLHTTPREQUEST_MS_PROGIDS[i]);
				success = true;
			}
			catch (ex)
			{}
		}
	}
	// Display an error if we couldn't create one.
	if (httpRequest == null)
		alert("Error in HttpRequest():\n\nCannot create an XMLHttpRequest object.");
	// Return it.
	return httpRequest;
}

function setStatusText(text)
{
	// Display the status message.
	var el = document.getElementById("statusText");
	if (el.firstChild == null)
		el.appendChild(document.createTextNode(""));
	el.firstChild.nodeValue = text;
}

var objLookup = getXMLHttpRequest();

function initiateObjLookup(osid)
{
	// Clear the status text.
	//setStatusText("");
	// Abort any currently active request.
	objLookup.abort();
	// Perform an asynchronous request to get the matching city and state.
	var ajaxurl = "/ajaxobjget.phtml";
	objLookup.onreadystatechange = objReadyStateChange;

	objLookup.open("POST", ajaxurl, true);
	objLookup.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	objLookup.send("id=" + osid);
}



function objReadyStateChange()
{
	var statusText;
	switch (objLookup.readyState)
	{
		case XMLHTTPREQUEST_READY_STATE_UNINITIALIZED:
			statusText = "";
			break;

		case XMLHTTPREQUEST_READY_STATE_LOADING:
			statusText = "Uppdaterar data";
			break;

		case XMLHTTPREQUEST_READY_STATE_LOADED:
			statusText = "Skickar data";
			break;

		case XMLHTTPREQUEST_READY_STATE_INTERACTIVE:
			statusText = "Hämtar data";
			break;

		case XMLHTTPREQUEST_READY_STATE_COMPLETED:
			// Assume no match was found.
			statusText = "Ingen data uppdaterad."
			try
			{
				var xmlDoc = objLookup.responseXML;
				
    		var els = xmlDoc.getElementsByTagName("object");
        if(els.length > 0) {
					for(iloop = 0; iloop < els.length; iloop ++  ){
	          if(els[iloop].getElementsByTagName('id')[0].hasChildNodes() == true) {
							oid = els[iloop].getElementsByTagName('id')[0].firstChild.data;
							
							if(els[iloop].getElementsByTagName('addresslock')[0].hasChildNodes() == true) {
								AddressLock = els[iloop].getElementsByTagName('addresslock')[0].firstChild.data;
							}
							if(AddressLock == 1){
								toggleDisabled("invoice_company", true);
								toggleDisabled("invoice_address", true);
								toggleDisabled("invoice_zipcode", true);
								toggleDisabled("invoice_city", true);
								toggleHidden("addresslock_info", "");
							}
							else {
								toggleDisabled("invoice_company", false);							
								toggleDisabled("invoice_address", false);
								toggleDisabled("invoice_zipcode", false);
								toggleDisabled("invoice_city", false);
								toggleHidden("addresslock_info", "none");
							}
							
							if(els[iloop].getElementsByTagName('invoicerefreq')[0].hasChildNodes() == true) {
								InvoiceRefReq = els[iloop].getElementsByTagName('invoicerefreq')[0].firstChild.data;
							}
							if(InvoiceRefReq == 1){
								if(document.getElementById("invoice_unit")){
									document.getElementById("invoice_unit").className = "formfield varukorg required";
								}
								toggleHidden("invoicerefreq_info", "");
							}
							else {
								if(document.getElementById("invoice_unit")){
									document.getElementById("invoice_unit").className = "formfield varukorg";
								}							
								toggleHidden("invoicerefreq_info", "none");
							}
							
							if(els[iloop].getElementsByTagName('RegNumber')[0].hasChildNodes() == true) {
								RegNumber = els[iloop].getElementsByTagName('RegNumber')[0].firstChild.data;
								setField('invoice_clientnbr', RegNumber);
								setField('invoice_clientnbr_disabled', RegNumber);
							}
							else {
								setField('invoice_clientnbr', '');							
								setField('invoice_clientnbr_disabled', '');
							}
							if(els[iloop].getElementsByTagName('OfficialCustomerName')[0].hasChildNodes() == true) {
								OfficialCustomerName = els[iloop].getElementsByTagName('OfficialCustomerName')[0].firstChild.data;
								setField('invoice_company', OfficialCustomerName);
							}
							else {
								setField('invoice_company', '');							
							}
							if(els[iloop].getElementsByTagName('OfficialPostalAddress')[0].hasChildNodes() == true) {
								OfficialPostalAddress = els[iloop].getElementsByTagName('OfficialPostalAddress')[0].firstChild.data;
								setField('invoice_address', OfficialPostalAddress);
							}
							else {
								setField('invoice_address', '');							
							}
							if(els[iloop].getElementsByTagName('OfficialPostalAddressZipCode')[0].hasChildNodes() == true) {
								OfficialPostalAddressZipCode = els[iloop].getElementsByTagName('OfficialPostalAddressZipCode')[0].firstChild.data;
								setField('invoice_zipcode', OfficialPostalAddressZipCode);
							}
							else {
								setField('invoice_zipcode', '');							
							}
							if(els[iloop].getElementsByTagName('OfficialPostalPostalAddressCity')[0].hasChildNodes() == true) {
								OfficialPostalPostalAddressCity = els[iloop].getElementsByTagName('OfficialPostalPostalAddressCity')[0].firstChild.data;
								setField('invoice_city', OfficialPostalPostalAddressCity);
							}
							else {
								setField('invoice_city', '');							
							}

						}
					}
          statusText = "Data uppdaterad";
        }
			}
			catch (ex)
			{}
			break;

		default:
			statusText = "Unknown error.";
			break;
	}
	// Update the status message.
	//setStatusText(statusText);
}

	function toggleHidden(elemId, displayType){
		if(document.getElementById(elemId)){
			document.getElementById(elemId).style.display = displayType;
		}
	}
	function swapHidden(elemId){
		var elem = document.getElementById(elemId);
		if(elem.style.display == ''){
			elem.style.display = 'none';
		}
		else {
			elem.style.display = '';		
		}	
	}

	function toggleOffentligSektor(osType){
		var selbox = document.getElementById("select_"+osType);
		var selIndex = selbox.selectedIndex;
		var selvalue = selbox.options[selIndex].value;
		if(selvalue != ''){
			toggleHidden('fakturauppgifter', '');
			initiateObjLookup(selvalue);
		}
		else {
			toggleHidden('fakturauppgifter', 'none');
			setField('all', '');
		}
	}
	function setField(fieldId, fieldValue){
		if(fieldId == 'all'){
			setField('invoice_clientnbr', fieldValue);
			setField('invoice_clientnbr_disabled', fieldValue);
			setField('invoice_company', fieldValue);
			setField('invoice_unit', fieldValue);
			//setField('invoice_reference', fieldValue);
			setField('invoice_address', fieldValue);
			setField('invoice_zipcode', fieldValue);
			setField('invoice_city', fieldValue);
			setField('invoice_phone', fieldValue);
			setField('invoice_cell', fieldValue);
		}
		else {
			if(document.getElementById(fieldId)){
				document.getElementById(fieldId).value = fieldValue;
			}
		}
	}

	function toggleDisabled(fieldId, disabledValue){
		if(document.getElementById(fieldId)){
			document.getElementById(fieldId).disabled = disabledValue;
		}
	}

// ----------------------------------------------------------------------------------------------------------------------------------