var DINING_GET_RESTUARANT_DETAILS_URL = '/dining/admin/get-restaurant';

function ModuleDiningAdminSelectRestaurant(restaurantId) {

	// get new request
    var xmlRequest = GetXmlRequest();
	var requestUrl = DINING_GET_RESTUARANT_DETAILS_URL + '?restaurant-id=' + restaurantId;

    // query the server
    xmlRequest.open('GET', requestUrl, false );
    xmlRequest.send(null);
    
    // get document element
    if (null != xmlRequest.responseXML) {
        response = xmlRequest.responseXML.documentElement;

		// process the response
		if ((null != response.getElementsByTagName('message')) &&
			('success' == response.getElementsByTagName('message')[0].getAttribute('type'))) {
			ModuleDiningAdminPopulateRestaurantDetails(response);
		} else {
			// failure
			alert("Sorry, the data for the requested restaurant could\nnot be retrieved from the database.\nPlease refresh the page and try again.");
		}
    }

    return;
}

function ModuleDiningValidateRestaurant(action) {
    var problemMessage = 'Please provide data for the following fields: ';
    var invalidFields = '';
    var isValid = true;

    if ('' == document.getElementById('module-dining-admin-' + action + '-restaurant-name').value) {
        isValid = false;
        invalidFields += 'name';
    }
    if ('' == document.getElementById('module-dining-admin-' + action + '-restaurant-address').value) {
        isValid = false;
        if ('' != invalidFields) {
            invalidFields += ', ';
        } 
        invalidFields += 'address';
    }
    if ('' == document.getElementById('module-dining-admin-' + action + '-restaurant-phone').value) {
        isValid = false;
        if ('' != invalidFields) {
            invalidFields += ', ';
        } 
        invalidFields += 'phone';
    }
    if (null == document.getElementById('module-dining-admin-' + action + '-restaurant-category') || 
            '-1' == document.getElementById('module-dining-admin-' + action + '-restaurant-category').value) {
        isValid = false;
        if ('' != invalidFields) {
            invalidFields += ', ';
        } 
        invalidFields += 'category';
    }

    if (false == isValid) {
        alert(problemMessage + invalidFields + '.');
    }

    return isValid; 
}

function ModuleDiningValidateCategory() {
    var problemMessage = 'Please provide a name for the category.';
    var isValid = true;

    if ('' == document.getElementById('module-dining-admin-add-category-name').value) {
        isValid = false;
    }

    if (false == isValid) {
        alert(problemMessage);
    }

    return isValid; 
}

function ModuleDiningAdminPopulateRestaurantDetails(response) { /* <<<( */

	var name = '';
	var address = '';
	var restaurantId = response.getElementsByTagName('restaurant')[0].getAttribute('id');
	var phone = '';
	var category = response.getElementsByTagName('category')[0].childNodes[0].nodeValue;
	var website = '';

	// get name
	if ((0 < response.getElementsByTagName('name').length) &&
		(true == response.getElementsByTagName('name')[0].hasChildNodes()))	{
		name = response.getElementsByTagName('name')[0].childNodes[0].nodeValue;
	}

	// get address
	if ((0 < response.getElementsByTagName('address').length) &&
		(true == response.getElementsByTagName('address')[0].hasChildNodes())) {
		address = response.getElementsByTagName('address')[0].childNodes[0].nodeValue;
	}

	// get phone
	if ((0 < response.getElementsByTagName('phone').length) &&
		(true == response.getElementsByTagName('phone')[0].hasChildNodes())) {
		phone = response.getElementsByTagName('phone')[0].childNodes[0].nodeValue;
	}

	// get website
	if ((0 < response.getElementsByTagName('website').length) &&
		(true == response.getElementsByTagName('website')[0].hasChildNodes())) {
		website = response.getElementsByTagName('website')[0].childNodes[0].nodeValue;
	}

	// set name
	if (null != document.getElementById('module-dining-admin-edit-restaurant-name')) {
		document.getElementById('module-dining-admin-edit-restaurant-name').value = name;
	}

	// set address
	if (null != document.getElementById('module-dining-admin-edit-restaurant-address')) {
		document.getElementById('module-dining-admin-edit-restaurant-address').value = address;
	}

	// set phone
	if (null != document.getElementById('module-dining-admin-edit-restaurant-phone')) {
		document.getElementById('module-dining-admin-edit-restaurant-phone').value = phone;
	}

    // set category
	if (null != document.getElementById('module-dining-admin-edit-restaurant-category')) {
		document.getElementById('module-dining-admin-edit-restaurant-category').value = category;
	}

	// set website
	if (null != document.getElementById('module-dining-admin-edit-restaurant-website')) {
		document.getElementById('module-dining-admin-edit-restaurant-website').value = website;
	}

    // change class name for the table containing the edit restaurant fields.
	if (null != document.getElementById('module-dining-admin-edit-restaurant-table')) {
        document.getElementById('module-dining-admin-edit-restaurant-table').className = "module-dining-admin-edit-restaurant-table-show";
    }

	// set selected restaurant id
	if (null != document.getElementById('module-dining-admin-selected-restaurant')) {
		document.getElementById('module-dining-admin-selected-restaurant').value = restaurantId;
	}

	return;
} /* )>>> */


function ModuleAdminConfirmDeleteRestaurant() {
    var confirmed = true;
    if (null == document.getElementById('module-dining-admin-delete-restaurant') 
            || -1 == document.getElementById('module-dining-admin-delete-restaurant').value) {
    } else {
        confirmed = confirm('Are you sure you wish to delete this restaurant?\nThis operation cannot be undone.\n');
    }
    return confirmed;
}

// returns an XMLHttpRequest object
function GetXmlRequest() {

	var obj_xml_request = null;
	// firefox, Opera, Safari
	try {
		obj_xml_request = new XMLHttpRequest();
	}
	catch (e) {

		// Internet Explorer
		try {
			obj_xml_request = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (e) {

			// Internet Explorer (alternative)
			try {
				obj_xml_request = new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (e) {
				alert('Sorry, your browser does not support AJAX.');
			}
		}
	}

	return obj_xml_request;
}
