﻿function GetRequestObject() {
	var ret = false;
	if (window.XMLHttpRequest && !(window.ActiveXObject)) {
		try { ret = new XMLHttpRequest(); }
		catch(e) { ret = false; }
	} else
	if (window.ActiveXObject) {
		try { ret = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch(e) {
			try { ret = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch(e) { ret = false; }
		}
		if (ret && document.Script)
			document.Script.XMLHttpRequest = ret;
	}
	
	return ret;	
}

function UserInfo(inpUsernameId, inpUsernameCmpId) {
	var elUsername = document.getElementById(inpUsernameId);
	var elUsernameCmp = document.getElementById(inpUsernameCmpId);
	var req = false;
	
	this.init = function() {
		if (elUsername != null)
			elUsername.onchange = this.checkUsername;
	}
	
	this.checkUsername = function() {
		var username = this.value;
		req = GetRequestObject();
		if (req) {
			var handlerUrl="check-username.ashx?username="+username;
			req.onreadystatechange = processReqChange;
			req.open("GET", handlerUrl, true);
			req.send("");
		}
	}
	
	processReqChange = function() {
		var sender = this;
		if (this.XMLHttpRequest != null)
		sender = this.XMLHttpRequest;
		if (sender.readyState == 4) {
			if (sender.status == 200) {
				var result = sender.responseText;
				displayResult(result);
			}
			else {
				displayResult("0");
			}
		}
	}
	
	function displayResult(result) {
		if (result == "1") {
			elUsernameCmp.value = "";
			elUsername.style.backgroundColor ="#FFE0A0";
		} else {
			elUsernameCmp.value = "1";
			elUsername.style.backgroundColor="";
		}
	}
	
}


function DomainInfo(domainp, templatep, typep, initStatusp, imgId, domId, selectId, statusTxtId) {
	var domain = domainp;
	var templatePath = templatep;
	var type = typep;
	var initStatus = initStatusp;
	var img = document.getElementById(imgId);
	var dom = document.getElementById(domId);
	var sel = document.getElementById(selectId);
	var status = document.getElementById(statusTxtId);
	var req = false;
	
	this.init = function() {
		status.className="searching";
		status.innerHTML="(a pesquisar)";
		status.style.width = "auto";
		sel.disabled = true;
		img.src = templatePath + "/rc_" + initStatus + ".gif";
		img.width = 16;
		img.height = 16;
		this.lookupDomain(domain);
	}

	this.lookupDomain = function(domain) {

		if (initStatus == "209" || initStatus == "212" || initStatus== "DomainAvailable") {	
		
			req = GetRequestObject();
			if (req) {
				var handlerUrl="check.ashx?domain="+domain;
				if (type == "Transfer")
					handlerUrl += "&transfer=yes";
				else
				if (type == "Renewal")
					handlerUrl += "&renew=yes";

				req.onreadystatechange = this.processReqChange;
				req.open("GET", handlerUrl, true);
				req.send("");
			}
		
		} else {
			displayResult(initStatus);
		}
		return null;		
	}	

	this.processReqChange = function() {
		if (req.readyState == 4) {
			if (req.status == 200) {
				var result = req.responseText;
				displayResult(result);
			}
			else {
				displayResult("ServiceError");
			}
		}
	}	

	function displayResult(result) {
		if (result == "DomainAvailable") {
			status.className = "available";
			status.innerHTML="(livre)";
			sel.disabled = false;
			sel.checked = true;
		}	else
		if (result == "DomainUnavailable") {
			status.className = "unavailable";
			status.innerHTML="(indispon&iacute;vel)";
			status.onclick = openWhoisWindow;
			img.className="unavailable";
			img.onclick = openWhoisWindow;
			sel.checked = false;
		} else {
			status.innerHTML = "";
		}
		img.src = templatePath + "/rc_" + result + ".png";
		return true;
	}

	function openWhoisWindow() {
		openWindow("register/whois.aspx?domain="+domain, "whois", "350", "500", "yes");
	}

}




function roundToEuros(n) {
	if (n==0)
		return "0,00";
	euros = n * 100;
	euros = "" + Math.round(euros);
	len = euros.length;
	return euros.substring(0, len - 2) + "," + euros.substring(len - 2, len);
}

function roundDecimal(decimalValue, decimalPlaces)
{
	if (!decimalPlaces)
		decimalPlaces = 2;
	var ret = 0.0;
	if (decimalValue.toFixed)
		ret = decimalValue.toFixed(decimalPlaces);
	else
	{
		var expo = Math.pow(10, decimalPlaces);
		ret = Math.round(decimalValue * expo) / expo;
	}

	return parseFloat(ret);
}


function formatCurrency(decimalValue) {
	var symbol = '€';
	var rounded = 0.0;
	if (decimalValue.toFixed)
		rounded = decimalValue.toFixed(2);
	else
		rounded = Math.round(decimalValue * 100) / 100;
	var vs = (''+rounded).replace('.',',');
	switch (1) {
		case 0: return symbol+vs;
		case 1: return vs+symbol;
		case 2: return symbol+' '+vs;
		case 3: return vs+' '+symbol;
	}
	return vs;
}




function DomainOrderRowInfo(idPriceLabel, idExtras, idExtraPriceLabel, idYears) {
	var objPriceLabel = document.getElementById(idPriceLabel);
	var objExtras = document.getElementById(idExtras);
	var objExtraPriceLabel = document.getElementById(idExtraPriceLabel);
	var objYears = document.getElementById(idYears);
	
	this.ExtrasYearsPrices = null;
	
	this.getRowPrice = function() {
		var ret = 0;

		index = objYears.selectedIndex;
		
		ret += roundDecimal(parseFloat(objYears.options[index].value.replace(",",".")),	2);
		
		objPriceLabel.innerHTML = formatCurrency(ret);

		if (objExtras) {
			var years = parseInt(objYears.options[index].text);
			var extra_price = 0;
			var found = false;

			if (this.ExtrasYearsPrices) {
				for (i=0; i<this.ExtrasYearsPrices.length; i++) {
					year = this.ExtrasYearsPrices[i].Years;
					if (years == year)
					{
						extra_price = this.ExtrasYearsPrices[i].Price;
						found = true;
					}
				}
			}
		
			if (found)
				objExtraPriceLabel.innerHTML = formatCurrency(extra_price);
			else
				objExtraPriceLabel.innerHTML = formatCurrency(0);
			
			extras = objExtras.checked;
			if (extras)
				ret += roundDecimal(extra_price, 2);
		}

		return ret;
	}

}



function DomainOrderInfo(idPrice, idTax, idTotal, arrRows, objExtrasYearsPrices) {
	var objPrice = document.getElementById(idPrice);
	var objTax = document.getElementById(idTax);
	var objTotal = document.getElementById(idTotal);
	
	var rows = arrRows;
	
	this.displayResults = function() {
	
		if (!rows || rows.length == 0)
			return false;
			
		var subtotal = 0;
		
		if (rows && rows.length > 0) {
			for (var i=0; i<rows.length; i++) {
				var row = rows[i];
				row.ExtrasYearsPrices = objExtrasYearsPrices;
				subtotal += row.getRowPrice();
			}
		}

		var tax = subtotal * 0.20;
		var total = subtotal + tax;

		objPrice.value = formatCurrency(subtotal);
		objTax.value = formatCurrency(tax);
		objTotal.value = formatCurrency(total);
	}		
	
}