/**
 * Maximiza la ventana del navegador.
 */
function maximizeNavWindow() {
	window.moveTo(0, 0);
	window.resizeTo(screen.width, screen.height);
}

/**
 * Redimensiona un componente a un tamaño máximo.
 * 
 * @param which El id del componente que se redimensiona.
 * @param max El tamaño máximo. Si no se especifica se cogerá uno por defecto.
 * 
 * @return <code>false</code> si no se ha encontrado el componente con el id
 *         dado.
 */
function resize(which, max) {
	var elem = document.getElementById(which);
	if (elem == undefined || elem == null) {
		return false;
	}
	if (max == undefined) {
		max = 150;
	}
	if (elem.width > elem.height) {
		if (elem.width > max)
			elem.width = max;
	} else {
		if (elem.height > max) {
			elem.height = max;
		}
	}
}

function trim(str) {
    return str.replace(/^\s+|\s+$/g,"");
}

function send(emailEmptyMsg) {
    var email = document.getElementById('email').value;
    if (trim(email) == '') {
        alert(emailEmptyMsg);
        return false;
    } else {
        document.theForm.submit();
        return true;
    }
}

/**
 * Cambia el input de selección de provincia, para que sea un combo o un
 * campo de texto, en función del pais seleccionado actualmente.
 */
function updateProvinceInput(currentCountry) {
    // Obtenemos el combo de selección de paises.
    var combo = document.getElementById('addressCountry');

    // Obtenemos el elemento seleccionado.
    var country = combo.options[combo.selectedIndex].value;

    if (country == '${currentCountry}') {
        // La provincia se seleccionará mediante un combo.
        document.getElementById('addressProvinceField').disabled = true;
        document.getElementById('addressProvinceFieldDiv').style.display = 'none';

        document.getElementById('addressProvinceComboDiv').style.display = 'inline';
        document.getElementById('addressProvinceCombo').disabled = false;
    } else {
        // La provincia se introduce manualmente.
        document.getElementById('addressProvinceCombo').disabled = true;
    	document.getElementById('addressProvinceComboDiv').style.display = 'none';

    	document.getElementById('addressProvinceFieldDiv').style.display = 'inline';
    	document.getElementById('addressProvinceField').disabled = false;
    }
}

function nextImage(collectionId) {
    imgPtr ++;
    if (imgPtr >= imgArray.length) {
        imgPtr = 0;
    }
    showImage();
}

function prevImage(collectionId) {
    imgPtr --;
    if (imgPtr < 0) {
        imgPtr = imgArray.length - 1;
    }
    showImage();
}

function showImage(collectionId) {
    var img = document.getElementById('img_' + collectionId);
    if (img != null) {
        img.src = imgArray[imgPtr].src;
    }
}

function showBigImage(imageServlet) {
	window.open(imageServlet + '?imageURL=' + imgArray[imgPtr].src, '', 'height=640, width=530, resizable');
}

/**
 * Valida que las unidades no contienen decimales cuand el producto no
 * es divisible.
 */
function validateUnits2(doSubmit, divisible, notDivisibleMsg) {
    var units = document.getElementById('units').value + '';
    if (!divisible && (units.indexOf('.') > -1 || units.indexOf(',') > -1)) {
        alert(notDivisibleMsg);
        return false;
    } else {
        if (doSubmit) {
            document.cartForm.submit();
        }
        return true;
    }
}

function showBigImage2(show, imageServlet, imageName) {
    if (show) {
        window.open(imageServlet + '?imageURL=images/' + imageName, '', 'height=640, width=530, resizable');
    }
}

function MyFireEvent(element,event){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}
