/* Utility functions */
function showElement(element) {
	var el = document.getElementById(element);
	el.style.display = 'block';
}

function hideElement(element) {
	var el = document.getElementById(element);
	el.style.display = 'none';
}

function showPreview() {
	var contentElement = document.getElementById('review_content');
	var previewElement = document.getElementById('preview_area');
	if (contentElement && previewElement) {
		previewElement.style.display = 'block';
		previewElement.innerHTML = contentElement.value; 
	}
}

function showHtmlCode(row, column) {

	// hide all first
    for (var i = 1; i <= 3; i++) {
        var el = document.getElementById('htmlcode' + row + i);
        if (el) {
            el.style.display = 'none';
        }
    }
    
    document.getElementById('htmlcode' + row + column).style.display = 'block';
}


/* Comparison functions */
function addCompare(productId) {
    var url = '/ajax_functions.php';
    var pars = 'action=add_compare&product_id=' + productId;
    $.ajax({
    	url: url, 
    	type: 'GET', 
    	data: pars, 
    	complete: addCompareResponse
    });
}

function addCompareResponse(originalRequest) {
    displayCompareBasket(originalRequest.responseXML);
}

function removeCompare(productId) {
    var url = '/ajax_functions.php';
    var pars = 'action=remove_compare&product_id=' + productId;
    $.ajax({
    	url: url, 
    	type: 'GET', 
    	data: pars, 
    	complete: removeCompareResponse
    });
}

function removeCompareResponse(originalRequest) {
    displayCompareBasket(originalRequest.responseXML);
}

function clearCompare(productId) {
    var url = '/ajax_functions.php';
    var pars = 'action=clear_compare';
    $.ajax({
    	url: url, 
    	type: 'GET', 
    	data: pars, 
    	complete: clearCompareResponse
    });
}

function clearCompareResponse(originalRequest) {
    displayCompareBasket(originalRequest.responseXML);
}

function displayCompareBasket(xmlDoc) {
        var rootProducts = xmlDoc.getElementsByTagName('products')[0];
        
        if (rootProducts != null) {
            var products = rootProducts.getElementsByTagName("product");
        
            if (products.length > 0) {
                var htmlText = '<div class="section-content"><h3>Compare Products</h3><ul>';
            
                for (i = 0; i < products.length; i++) {
                    var product = products[i];
                    var productId = product.getElementsByTagName("product-id")[0].firstChild.nodeValue;
                    var versionedName = product.getElementsByTagName("versioned-name")[0].firstChild.nodeValue;
                    var productUrl = product.getElementsByTagName("internal-product-url")[0].firstChild.nodeValue;
                
                    htmlText += '<li><span><button class="remove-product" title="Remove" onmouseover="this.className=\'remove-product remove-product-active\'" onmouseout="this.className=\'remove-product\'" onclick="removeCompare(\'' + productId + '\')"></button></span>';
                    htmlText += '<a href="' + productUrl + '" title="' + versionedName + '">' + versionedName + '</a></li>';
                }
            
                htmlText += '</ul><div class="buttons">' +
                            '<a class="button" href="/compare.html"><span>Compare</span></a>' +
                            '<a class="button" href="#" style="margin-left: 10px" onclick="clearCompare(); return false;"><span>Clear</span></a>' +
                            '</div>';
            
                document.getElementById("compare-basket").innerHTML = htmlText;
            } else {
                document.getElementById("compare-basket").innerHTML = '';
            }
        
        } else {
            var rootErrors = xmlDoc.getElementsByTagName('errors')[0];
            
            if (rootErrors != null) {
                var errors = rootErrors.getElementsByTagName("error");
                var errorMessage = '';
                for (i = 0; i < errors.length; i++) {
                    if (errorMessage != '') {
                        errorMessage += '\n';
                    }
                    errorMessage += errors[i].firstChild.nodeValue;
                }
                alert(errorMessage);
            } else {
                alert('An error has occurred.');
            }
        }
}


