Number.prototype.formatMoney = function(c, d, t){
	var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};

function getXMLHttpRequest() {
    var httpRequest;

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
            }
        }
    }

	return httpRequest;
}

self.products = new Array();

function getAvailableResorts(initial, resortDiv, resortText, resortForm, tipologyDiv, tipologyText, tipologyForm, versionID) {
	if(initial == false) {
		resortDiv.innerHTML = '';
		resortForm.value = '';

		tipologyDiv.innerHTML = '';
		tipologyForm.value = '';
	}

	resortText.innerHTML = '';  
	tipologyText.innerHTML = '';

    var httpRequest = getXMLHttpRequest();

    var requestParameters = '';
	requestParameters += escape('__submited_action') + '=' + escape('Purchase:ListAvailableResorts');
    httpRequest.onreadystatechange = function() {
        receiveResorts(httpRequest, initial, resortDiv, resortText, resortForm, tipologyDiv, tipologyText, tipologyForm, versionID);
    };

    httpRequest.open('GET', 'index.php?returnFormat=json&' + requestParameters, true);
    httpRequest.send(requestParameters);
} 

function receiveResorts(httpRequest, initial, resortDiv, resortText, resortForm, tipologyDiv, tipologyText, tipologyForm, versionID) {
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			var result = eval(httpRequest.responseText);
			
			for(var i = 0; i != result.length; ++i) {
				if(result[i].resortID != 50 || versionID == 2){ // casas da comporta
					var item = document.createElement('p');
	
					item.className = "select";
					item.onmouseover =	function() {
											this.className='selectOver';
										};
					item.onmouseout =	function() {
											this.className='select';
										};
	
					item.onclick = 	function() {
										resortForm.value = this.zepp_id;
										resortText.innerHTML = this.innerHTML;
										getAvailableTipologies(false, resortForm, tipologyDiv, tipologyText, tipologyForm);
									};
	
					item.zepp_id = result[i].resortID;
					item.innerHTML = result[i].name;
	
					resortDiv.appendChild(item);
	
					if(result[i].resortID == resortForm.value) {
						resortText.innerHTML = result[i].name;
						getAvailableTipologies(initial, resortForm, tipologyDiv, tipologyText, tipologyForm);
					}
				} // casas da comporta
			}
		} else {
			//alert(httpRequest.responseText);
			//alert('There was a problem with the request.');
		}
    }
}

function getAvailableTipologies(initial, resortForm, tipologyDiv, tipologyText, tipologyForm) {
	if(initial == false) {
		tipologyDiv.innerHTML = '';
		tipologyForm.value = '';
	}

	tipologyText.innerHTML = '';

    var httpRequest = getXMLHttpRequest();

    var requestParameters = '';
	requestParameters += escape('__submited_action') + '=' + escape('Purchase:ListAvailableTipologies') + '&';
	requestParameters += escape('resortID') + '=' + escape(resortForm.value);

    httpRequest.onreadystatechange = function() {
        receiveTipologies(httpRequest, tipologyDiv, tipologyText, tipologyForm);
    };

    httpRequest.open('GET', 'index.php?returnFormat=json&' + requestParameters, true);
    httpRequest.send(requestParameters);
}

function receiveTipologies(httpRequest, tipologyDiv, tipologyText, tipologyForm) {
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			var result = eval(httpRequest.responseText);

			for(var i = 0; i != result.length; ++i) {
				var item = document.createElement('p');

				item.className = "select";
				item.onmouseover =	function() {
										this.className='selectOver';
									};
				item.onmouseout =	function() {
										this.className='select';
									};

				item.onclick = 	function() {
									tipologyForm.value = this.zepp_id;
									tipologyText.innerHTML = this.innerHTML;
								};

				item.zepp_id = result[i].categoryID;
				item.innerHTML = result[i].categoryTitle;

				tipologyDiv.appendChild(item);

				if(result[i].categoryID == tipologyForm.value || result.length == 1) {
					tipologyForm.value = result[i].categoryID;
					tipologyText.innerHTML = result[i].categoryTitle;
				}
			}
		} else {
			//alert(httpRequest.responseText);
			//alert('There was a problem with the request.');
		}
    }
}

function getAvailableBeingsHome(beingsDivHome, formDivHome, lang, horiz) {
	beingsDivHome.innerHTML = '';

    var httpRequest = getXMLHttpRequest();

    var requestParameters = '';
	requestParameters += escape('__submited_action') + '=' + escape('Purchase:ListAvailableBeings');

    httpRequest.onreadystatechange = function() {
        receiveBeingsHome(httpRequest, beingsDivHome, formDivHome, lang, horiz);
    };

    httpRequest.open('GET', 'index.php?returnFormat=json&' + requestParameters, true);
    httpRequest.send(requestParameters);
}


function receiveBeingsHome(httpRequest, beingsDivHome, formDivHome, lang, horiz) {
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			var get = param();

			var result = eval(httpRequest.responseText);

			for(var i = 0; i != result.length; ++i) {
				if(i != 0 && !horiz) {
					var clear = document.createElement('div');
					clear.style.clear = 'both';
					beingsDivHome.appendChild(clear);
				}

				var container = document.createElement('div');
				container.className = 'divHomeNumbersContainer';

				var containerForm = document.createElement('div');
				containerForm.className = 'divHomeNumbers';

				var inputForm = document.createElement('input');
				inputForm.type = 'text';
				inputForm.value = get['occupation' + result[i].categoryID] != null?get['occupation' + result[i].categoryID]:0;
				inputForm.name = 'occupation' + result[i].categoryID;
				inputForm.id = 'occupation' + result[i].categoryID;
				inputForm.className = 'inputHomeNumbers';
				inputForm.onchange =	function() {
											this.value = parseInt(this.value);

											if(this.value == 'NaN' || this.value < 0)
												this.value = 0;
										};

				containerForm.appendChild(inputForm);

				var containerText = document.createElement('div');
				containerText.className = 'reservasHomeTitle';
				containerText.style.cssFloat = 'left';
				containerText.style.width = horiz ? '100px' : '150px';

				var textName = document.createElement('p');
				textName.innerHTML = result[i].categoryTitle + ' ' + result[i].shortDescription;

				containerText.appendChild(textName);

				container.appendChild(containerForm);
				container.appendChild(containerText);

				beingsDivHome.appendChild(container);

				if(i == 0)
					formvalid.addValidation(inputForm.id,"gt=0", (lang == 'pt'?"Número de adultos tem de ser superior a zero.":"- Nrº de Pessoas"));
			}

			//formDivHome.style.display = 'block';
		} else {
			//alert(httpRequest.responseText);
			//alert('There was a problem with the request.');
		}
    }
}

function ptq(q) {
	/* parse the query */
	var x = q.replace(/;/g, '&').split('&'), i, name, t;

	/* q changes from string version of query to object */
	for (q={}, i=0; i<x.length; i++) {
		t = x[i].split('=', 2);
		name = unescape(t[0]);
		if (!q[name])
			q[name] = [];

		if (t.length > 1) {
			q[name][q[name].length] = unescape(t[1]);
		}
		/* next two lines are nonstandard */
		else
		q[name][q[name].length] = true;
	}

	return q;
}

function param() {
	return ptq(location.search.substring(1).replace(/\+/g, ' '));
}

