var Service = new CService();
function CService()
{
	this.validationMap = new Array();
	this.validationMap['emailAddress'] = Common.checkEmailAddress;
	this.validationMap['phoneNumber'] = Common.checkPhoneNumber;
}

CService.prototype.selectedOption = function(id)
{
	var opt = Common.findById(id);
	var value = opt.options[opt.options.selectedIndex].value
	var others = Common.findById('others_tr');
	if(value == "-1") {
		others.className = "show";
	}else {
		others.className = "hide";
	}
}

CService.prototype.confirmDonation = function(formId)
{
	var formElem = Common.findById(formId);
	formElem.submit();
}

CService.prototype.submitDonation = function(formId)
{
	var formElem = Common.findById(formId);
	
	/*var elemIds = "Amount,BillingFirstnames,BillingSurname,BillingAddress1,BillingCity,BillingPostCode,BillingState," +
				"DeliveryFirstnames,DeliverySurname,DeliveryAddress1,DeliveryCity,DeliveryPostCode,DeliveryState";
	
	var selElems = "Currency,BillingCountry,DeliveryCountry";*/
	
	var donationType = Common.findById("DonationType");
	var amount = Common.findById("Amount");
	var currency = Common.findById("Currency");
	var customerEMail = Common.findById("CustomerEMail");

	var isDelivery = Common.findById("IsDeliverySame");

	Design.markErroneous(donationType, false);
	Design.markErroneous(amount, false);
	Design.markErroneous(currency, false);
	Design.markErroneous(customerEMail, false);
	
	var bError = false;

	if(formElem == null)
		return;
	
	bError = this.validateBillingInfo();
	/*if (!isDelivery.checked) {
		bError = this.validateDeliveryInfo();
	}*/
	
	if(amount == null || Common.trim(amount.value) == "" || !Common.validateDouble(amount.value)) {
		bError = true;
		Design.markErroneous(amount, true);
	}
	if(customerEMail != null && Common.trim(customerEMail.value) != "") {
		if(!Common.checkEmailAddress(customerEMail.value)) {
			bError = true;
			Design.markErroneous(customerEMail, true);
		}	
	}
	if(donationType.options.selectedIndex == 0 || donationType.options[donationType.options.selectedIndex].value == "") {
		bError = true;
		Design.markErroneous(donationType, true);
	}
	if(currency.options.selectedIndex == 0 || currency.options[currency.options.selectedIndex].value == "") {
		bError = true;
		Design.markErroneous(currency, true);
	}
	
	
	/*var elems = elemIds.split(",");
		
	for ( var a = 0; a < elems.length; a++) {
		var elemId = elems[a];
		var elem = Common.findById(elemId);
		if (elem == null || Common.trim(elem.value) == "")
		{
			bError = true;
			Design.markErroneous(elem, true);
		} else {
			Design.markErroneous(elem, false);
		}
	
	}
	
	elems = selElems.split(",");
	
	for ( var a = 0; a < elems.length; a++) {
		var elemId = elems[a];
		var elem = Common.findById(elemId);
		if (elem == null || elem.options.selectedIndex == 0 || elem.options[elem.options.selectedIndex].id == "")
		{
			bError = true;
			Design.markErroneous(elem, true);
		} else {
			Design.markErroneous(elem, false);
		}
	}*/
	
	
	if(bError) {
		return;
	}	
	
	formElem.submit();
}

CService.prototype.validateBillingInfo = function()
{
	var billFirstName = Common.findById("BillingFirstnames");
	var billSurname = Common.findById("BillingSurname");
	var billAddress1 = Common.findById("BillingAddress1");
	var billCity = Common.findById("BillingCity");
	var billPostalCode = Common.findById("BillingPostCode");
	var tldBill = Common.findById("BillingCountry");
	var billCountryName = Common.findById("BillingCountryName");
	var billState = Common.findById("BillingState");
	
	var bError = false;
	
	Design.markErroneous(billFirstName, false);
	Design.markErroneous(billSurname, false);	
	Design.markErroneous(billAddress1, false);
	Design.markErroneous(billCity, false);
	Design.markErroneous(billPostalCode, false);
	Design.markErroneous(tldBill, false);
	Design.markErroneous(billState, false);
	
	if(billFirstName == null || Common.trim(billFirstName.value) == "") {
		bError = true;
		Design.markErroneous(billFirstName, true);
	}
	if(billSurname == null || Common.trim(billSurname.value) == "") {
		bError = true;
		Design.markErroneous(billSurname, true);
	}
	if(billAddress1 == null || Common.trim(billAddress1.value) == "") {
		bError = true;
		Design.markErroneous(billAddress1, true);
	}
	if(billCity == null || Common.trim(billCity.value) == "") {
		bError = true;
		Design.markErroneous(billCity, true);
	}
	if(billPostalCode == null || Common.trim(billPostalCode.value) == "") {
		bError = true;
		Design.markErroneous(billPostalCode, true);
	}
	if(tldBill.options[tldBill.options.selectedIndex].value == "US" && (billState == null || Common.trim(billState.value) == "")) {
		bError = true;
		Design.markErroneous(billState, true);
	}
	if(tldBill.options.selectedIndex == 0 || tldBill.options[tldBill.options.selectedIndex].value == "") {
		bError = true;
		Design.markErroneous(tldBill, true);
	}
	
	billCountryName.value = tldBill.options[tldBill.options.selectedIndex].id;
	
	/*
	if(!bError) {
		tldBill.options[tldBill.options.selectedIndex].value = tldBill.options[tldBill.options.selectedIndex].id;
	}*/
	
	return bError;
}
CService.prototype.validateDeliveryInfo = function()
{
	var delFirstName = Common.findById("DeliveryFirstnames");
	var delSurname = Common.findById("DeliverySurname");
	var delAddress1 = Common.findById("DeliveryAddress1");
	var delCity = Common.findById("DeliveryCity");
	var delPostalCode = Common.findById("DeliveryPostCode");
	var tldDeli = Common.findById("DeliveryCountry");
	var delState = Common.findById("DeliveryState");
	
	var bError = false;
	
	Design.markErroneous(delFirstName, false);
	Design.markErroneous(delSurname, false);
	Design.markErroneous(delAddress1, false);
	Design.markErroneous(delCity, false);
	Design.markErroneous(delPostalCode, false);
	Design.markErroneous(tldDeli, false);
	Design.markErroneous(delState, false);
	
	if(delFirstName == null || Common.trim(delFirstName.value) == "") {
		bError = true;
		Design.markErroneous(delFirstName, true);
	}
	if(delSurname == null || Common.trim(delSurname.value) == "") {
		bError = true;
		Design.markErroneous(delSurname, true);
	}
	if(delAddress1 == null || Common.trim(delAddress1.value) == "") {
		bError = true;
		Design.markErroneous(delAddress1, true);
	}
	if(delCity == null || Common.trim(delCity.value) == "") {
		bError = true;
		Design.markErroneous(delCity, true);
	}
	if(delPostalCode == null || Common.trim(delPostalCode.value) == "") {
		bError = true;
		Design.markErroneous(delPostalCode, true);
	}
	if(tldDeli.options[tldDeli.options.selectedIndex].value == "US" && (delState == null || Common.trim(delState.value) == "")) {
		bError = true;
		Design.markErroneous(delState, true);
	}
	if(tldDeli.options.selectedIndex == 0 || tldDeli.options[tldDeli.options.selectedIndex].value == "") {
		bError = true;
		Design.markErroneous(tldDeli, true);
	}
	
	/*if(!bError) {
		tldDeli.options[tldDeli.options.selectedIndex].value = tldDeli.options[tldDeli.options.selectedIndex].id;
	}*/
	
	return bError;
}

CService.prototype.isDeliverySame = function()
{
	var chkBox = Common.findById("IsDeliverySame");
	var delFirstName = Common.findById("DeliveryFirstnames");
	var delSurname = Common.findById("DeliverySurname");
	var delAddress1 = Common.findById("DeliveryAddress1");
	var delAddress2 = Common.findById("DeliveryAddress2");
	var delCity = Common.findById("DeliveryCity");
	var delPostalCode = Common.findById("DeliveryPostCode");
	var tldDeli = Common.findById("DeliveryCountry");
	var delState = Common.findById("DeliveryState");
	var delPhone = Common.findById("DeliveryPhone");
	
	if(chkBox.checked) {
		if(this.validateBillingInfo()) {
			chkBox.checked = false;
			chkBox.value = "FALSE";
		} else {			
			
			delFirstName.value = Common.findById("BillingFirstnames").value;
			delSurname.value = Common.findById("BillingSurname").value;
			delAddress1.value = Common.findById("BillingAddress1").value;
			delAddress2.value = Common.findById("BillingAddress2").value;
			delCity.value = Common.findById("BillingCity").value;
			delPostalCode.value = Common.findById("BillingPostCode").value;
			delState.value = Common.findById("BillingState").value;
			delPhone.value = Common.findById("BillingPhone").value;
			tldDeli.options.selectedIndex = Common.findById("BillingCountry").options.selectedIndex;
			
			delFirstName.setAttribute('readonly',true);
			delSurname.setAttribute('readonly',true);
			delAddress1.setAttribute('readonly',true);
			delAddress2.setAttribute('readonly',true);
			delCity.setAttribute('readonly',true);
			delPostalCode.setAttribute('readonly',true);
			tldDeli.setAttribute('readonly',true);
			delState.setAttribute('readonly',true);
			delPhone.setAttribute('readonly',true);
						
			chkBox.value = "YES";
		}
	} else {
		
		delFirstName.setAttribute('readonly',false);
		delSurname.setAttribute('readonly',false);
		delAddress1.setAttribute('readonly',false);
		delAddress2.setAttribute('readonly',false);
		delCity.setAttribute('readonly',false);
		delPostalCode.setAttribute('readonly',false);
		tldDeli.setAttribute('readonly',false);
		delState.setAttribute('readonly',false);
		delPhone.setAttribute('readonly',false);
		
		chkBox.value = "FALSE";
	}
}

CService.prototype.submitServiceForm = function(formId, elemIds)
{
	var bSubmit = Common.findById('submit');
	var sHref = bSubmit.href; 
	bSubmit.href = "#headerPageStart";
	var formElem = Common.findById(formId);
	if(formElem == null)
		return;
	var elems = elemIds.split(",");
	if(elems == null || elems.length == 0)
		formElem.submit();
	else 
	{
		var bError = false;
		for(var a=0;a<elems.length;a++)
		{
			var elemId = elems[a];
			if(Common.trim(elemId).length == 0)
				continue;
			var elem = Common.findById(elemId);
			if(elem == null || elem.title.toLowerCase() == 'true')
				continue;
			Design.markErroneous(elem, false);
			var nodeName = elem.nodeName.toLowerCase();
			var nodeValue = '';
			if(nodeName == 'input')
			{
				var nodeType = elem.type.toLowerCase();
				nodeValue = Common.trim(elem.value.toLowerCase());
				if(nodeType == 'text' || nodeType == 'password')
				{
					if(elem.id == "others")
					{
						var others = Common.findById('others_tr');
						if(others.getAttribute("class") == "show" && nodeValue.length == 0)
						{
							Design.markErroneous(elem, true);
							bError = true;
							continue;
						}							
					}
					else if(nodeValue.length == 0)
					{
						Design.markErroneous(elem, true);
						bError = true;
						continue;
					}
				}
				else if(nodeType == 'checkbox')
				{
					elem.value = elem.checked;
				}
			}
			else if(nodeName == 'textarea')
			{
				nodeValue = Common.trim(elem.value.toLowerCase());
				if(elem.id == "others")
				{
					var others = Common.findById('others_tr');
					if(others.getAttribute("class") == "show" && nodeValue.length == 0)
					{
						Design.markErroneous(elem, true);
						bError = true;
						continue;
					}							
				}
				else if(nodeValue.length == 0)
				{
					Design.markErroneous(elem, true);
					bError = true;
					continue;
				}
			}
			else if (nodeName == 'select')
			{
				nodeValue = Common.trim(elem.value.toLowerCase());
				if(nodeValue.length == 0)
				{
					Design.markErroneous(elem, true);
					bError = true;
					continue;
				}
			}
			var validationFunc = this.validationMap[elemId];
			if(validationFunc != null && nodeValue != null && nodeValue.length > 0) 
			{
				if(!validationFunc(nodeValue))
				{
					Design.markErroneous(elem, true);
					bError = true;
					continue;
				}
			}
		}
		
		var si = Common.findById('si');
		if(!bError) {
			if(si.value == 3) {
				if(confirm("If address is correct then press ok else cancel and provide correct address."))
					formElem.submit();
				else
					bSubmit.href = sHref;
			} else {
				formElem.submit();
			}
		}
	}
	if(bError)
		bSubmit.href = sHref;
}

