// dependant form

// set the default values
function setDefaults()
{
	myForm.fName.value = 'First';
	myForm.mName.value = 'Middle';
	myForm.lName.value = 'Last';
	myForm.sfName.value = 'First';
	myForm.smName.value = 'Middle';
	myForm.slName.value = 'Last';
	myForm.fName.style.color = '#666';
	myForm.mName.style.color = '#666';
	myForm.lName.style.color = '#666';
	myForm.sfName.style.color = '#666';
	myForm.smName.style.color = '#666';
	myForm.slName.style.color = '#666';
	myForm.passType[0].checked = true;
	myForm.relation[0].focus();
}

// alert
function transferAlert() {	
	if (myForm.visaType[1].checked == true) { alert("Residence visa MUST be valid at least for one month"); }
}

function newBabyAlert() {	
	if (myForm.visaStatus[0].checked == true) { alert ('Select this option if the child is born in UAE and has not exited UAE. The baby does not require entry permit, and the application will go for residency permit procedures.'); }
}

function noBloodRelationAlert() {
	if (myForm.relation[2].checked == true && myForm.visaStatus[1].checked == true)
	{
		if ( myForm.cNationality.value != '' && (myForm.scNationality.value == myForm.cNationality.value || myForm.swcNationality.value == myForm.cNationality.value))
			{alert("No Blood Relation letter from the embassy or consulate is required");}
	}
}

function houseMaidAlert() {
	if (myForm.relation[2].checked == true && myForm.visaStatus[1].checked == true)
	{
		alert("Deposit for house maid is AED 2050. The deposit can only be refunded after the residency is cancelled and applicant (house maid) exits UAE.");
	}
}

function houseMaidSponsorGender() {
	if (myForm.relation[2].checked == true && ( myForm.sTitle[1].checked == true || myForm.sTitle[2].checked == true) )
	{
		alert("Only the husband can sponsor a house maid.");
	}
}

function addChildren ()
{
	if (myForm.relation[1].checked == false) { myForm.numberOfChildren.value = 0; }

	var childs  = myForm.numberOfChildren.value;
	for (i=childs;i<10;i++)
	{
		var childRow = 'child'+i;
		var row  = document.getElementById(childRow);
		row.style.display = 'none';
	}
	if (childs>0) 
	{
		child0.style.display = 'block';
		for (i=0;i<=childs;i++)
		{
			var childRow = 'child'+i;
			var row  = document.getElementById(childRow);
			row.style.display = 'block';
		}
		childrenNote.style.display = "block";
	} else { childrenNote.style.display = "none"; }
	calFee();
}

function showAndHide ()
{
	if (myForm.relation[1].checked == true) { numberOfChildrenSec.style.display = "block";
	} else { numberOfChildrenSec.style.display = "none"; }
	
	// add option for new born baby
	if (myForm.relation[0].checked == true)  
	{ 
		newBaby.style.display = "block"; 
	} else { 
		newBaby.style.display = "none"; 
		myForm.visaStatus[0].checked = false;
	}
	
	// new born baby
	if (myForm.visaStatus[0].checked == true)
	{
		dobNewChild.style.display = "block";
		pobNewChild.style.display = "block";
		visaTypeSec.style.display = "none";
	} else {
		dobNewChild.style.display = "none";
		pobNewChild.style.display = "none";
	}
	// maid: no transfer
	if (myForm.relation[2].checked == true)
	{
		// extra fields for contract
		spondorContractDetails.style.display = "block";
		maidContractDetails.style.display = "block";		
		if (myForm.visaStatus[1].checked == true)
		{
			myForm.visaType[0].checked = true;
			myForm.visaType[1].disabled = true;
			depositSec.style.display = "block";
			swcNationalitySec.style.display = "block";
		} else { 
			depositSec.style.display = "none"; 
			swcNationalitySec.style.display = "none";
		}
	} else {
		myForm.visaType[1].disabled = false;
		depositSec.style.display = "none";
		swcNationalitySec.style.display = "none";
		spondorContractDetails.style.display = "none";
		maidContractDetails.style.display = "none";
	}			
	
	// new visa
	if (myForm.visaStatus[1].checked == true)
	{
		visaTypeSec.style.display = "block";
		urgentStampingSec.style.display = "block";
		urgentSec.style.display = "none";
		langSec.style.display = "block";
	} else {
		visaTypeSec.style.display = "none";
		myForm.visaType[0].checked = false;
		myForm.visaType[1].checked = false;
	}
		
	// renewal
	if (myForm.visaStatus[2].checked == true)
	{
		renewalSec2.style.display = "block";
		renewalSec3.style.display = "block";
		urgentSec.style.display = "block";
		urgentStampingSec.style.display = "none";
		myForm.urgentStamping.checked = false;
		langSec.style.display = "none";
	} else {
		renewalSec2.style.display = "none";
		renewalSec3.style.display = "none";
	}
	
	// new entry permit
	if (myForm.visaType[0].checked == true)
	{
		inCountrySec.style.display = "block";
		if (myForm.inCountry[0].checked == true){ localAmendmentSec.style.display = "block"; }
		if (myForm.inCountry[1].checked == true)
		{ 
			myForm.localAmendment[0].checked = false;
			myForm.localAmendment[1].checked = false;
			localAmendmentSec.style.display = "none";
			preVisaSec.style.display = "none";
			preVisaIssuePlaceSec.style.display = "none";
		}
	} else {
		myForm.localAmendment[0].checked = false;
		myForm.localAmendment[1].checked = false;
		myForm.inCountry[0].checked = false;
		myForm.inCountry[1].checked = false;
		localAmendmentSec.style.display = "none";
		inCountrySec.style.display = "none";
		preVisaSec.style.display = "none";
		preVisaIssuePlaceSec.style.display = "none";
	}
		
	//local amendment
	if (myForm.localAmendment[0].checked == true) 
	{ 
		preVisaSec.style.display = "block";
		preVisaIssuePlaceSec.style.display = "block";
		if (myForm.preVisa[0].checked == true)
		{
			visitVisa1.style.display = "block";
			visitVisa2.style.display = "block";
			resVisa1.style.display = "none";
			resVisa2.style.display = "none";
		}
		if (myForm.preVisa[1].checked == true)
		{
			visitVisa1.style.display = "none";
			visitVisa2.style.display = "none";
			resVisa1.style.display = "block";
			resVisa2.style.display = "block";
		}
	} else { 
		preVisaSec.style.display = "none";
		preVisaIssuePlaceSec.style.display = "none";
		visitVisa1.style.display = "none";
		visitVisa2.style.display = "none";
		resVisa1.style.display = "none";
		resVisa2.style.display = "none";
		myForm.preVisa[0].checked = false;
		myForm.preVisa[1].checked = false;
		myForm.preVisaIssuePlace[0].checked = false;
		myForm.preVisaIssuePlace[1].checked = false;
		myForm.DOE.value = "";
		myForm.DOVE.value = "";
		myForm.DOVC.value = "";
		myForm.visitVisaExtended[0].checked = false;
		myForm.visitVisaExtended[1].checked = false;
	}
	
	// if applicant is outside, get outside contact details
	if(myForm.inCountry[1].checked == true)
	{
		insideContactSec.style.display = "none";
		outsideContactSec.style.display = "block";
	} else {
		insideContactSec.style.display = "block";
		outsideContactSec.style.display = "none";
	}
}

function setRequirements () {
	// child
	if (myForm.relation[0].checked == true )
	{
		//new OR new born
		if (myForm.visaStatus[1].checked == true || myForm.visaStatus[0].checked == true)
		{
			childNewVisa.style.display = "block";
			
			// new born baby: 2 photo + original birth certificate + original passport
			if (myForm.visaStatus[0].checked == true) 
			{ 
				birthCertificateOriginal.style.display = "block";
				newChildPhoto.style.display = "block";
				newChildPassport.style.display = "block";
			} else { 
				birthCertificateOriginal.style.display = "none";
				newChildPhoto.style.display = "none";
				newChildPassport.style.display = "none";
			}
			
			// new baby: 1 photo and copy of birth certificate
			if (myForm.visaStatus[1].checked == true) 
			{ 
				birthCertificateCopy.style.display = "block";
				childPhoto.style.display = "block";
			} else { 
				birthCertificateCopy.style.display = "none";
				childPhoto.style.display = "none";
			}
			
			// baby: new entry permit
			if (myForm.visaType[0].checked == true)
			{
				childPhoto.style.display = "block";
			} else {
				childPhoto.style.display = "none";
			}
			
			// 3 photos for transfer
			if (myForm.visaType[1].checked == true)
			{
				transferChildPhoto.style.display = "block";
			} else {
				transferChildPhoto.style.display = "none";
			}
		} else { childNewVisa.style.display = "none"; }
		
		// renewal
		if (myForm.visaStatus[2].checked == true) { childRenewVisa.style.display = "block"; 
		} else { childRenewVisa.style.display = "none";	}
		
		// 4 pass copies and 5 photos for medical
		if (myForm.medicalTest.checked == true) 
		{ 
			passCopyForChildNoMedical.style.display = "none"; 
			childPhoto.style.display = "none";
			newChildPhoto.style.display = "none";
			transferChildPhoto.style.display = "none";
			renewChildPhoto.style.display = "none";
			renewChildPass.style.display = "none";
			childMedical.style.display = "block";
			childMedicalPhoto.style.display = "block";
		} else { 
			childMedical.style.display = "none";
			childMedicalPhoto.style.display = "none";
			passCopyForChildNoMedical.style.display = "block"; 
			if (myForm.visaType[0].checked == true) { childPhoto.style.display = "block"; }
			if (myForm.visaStatus[0].checked == true) { newChildPhoto.style.display = "block"; }
			if (myForm.visaType[1].checked == true) { transferChildPhoto.style.display = "block"; }
			renewChildPhoto.style.display = "block";
			renewChildPass.style.display = "block";
		}
			
		// educational certificate
		var age = calAge();
		if (myForm.title[0].checked == true && age>15) {eduCertificate.style.display = "block";} else {eduCertificate.style.display = "none";}
	} else {
		childNewVisa.style.display = "none";
		childRenewVisa.style.display = "none";
		eduCertificate.style.display = "none";
		childMedical.style.display = "none";
	}
	
	// wife
	if (myForm.relation[1].checked == true)
	{
		// new
		if (myForm.visaStatus[1].checked == true) {	
			wifeNewVisa.style.display = "block";
			// 5 photos for transfer
			if (myForm.visaType[1].checked == true)
			{
				wifeTransferPhoto.style.display = "block";
				wifePhoto.style.display = "none";
			} else {
				wifeTransferPhoto.style.display = "none";
				wifePhoto.style.display = "block";
			}	
			
		} else { wifeNewVisa.style.display = "none"; }
		//renewal
		if (myForm.visaStatus[2].checked == true) { wifeRenewVisa.style.display = "block";
		} else { wifeRenewVisa.style.display = "none"; }
	} else {
		wifeRenewVisa.style.display = "none"; 
		wifeNewVisa.style.display = "none";
	}
	
	// maid
	if (myForm.relation[2].checked == true)
	{
		// new
		if ( myForm.visaStatus[1].checked == true) { 
			maidNewVisa.style.display = "block";
			if ( myForm.cNationality.value != '' && (myForm.scNationality.value == myForm.cNationality.value || myForm.swcNationality.value == myForm.cNationality.value))
			{noRelationLetter.style.display = "block";} 
			else {noRelationLetter.style.display = "none";}
		} else { maidNewVisa.style.display = "none"; }
		// renewal
		if (myForm.visaStatus[2].checked == true) {	maidRenewVisa.style.display = "block"; 
		} else { maidRenewVisa.style.display = "none"; }
	} else {
		maidNewVisa.style.display = "none";
		maidRenewVisa.style.display = "none";
		noRelationLetter.style.display = "none";
	}
	
	// local amendment
	if (myForm.localAmendment[0].checked == true) 
	{
		localAmendmentAttach.style.display = "block";
		wifePhoto.style.display = "none";
		childPhoto.style.display = "none";
		maidPhoto.style.display = "none";
		newChildPhoto.style.display = "none";
		childMedicalPhoto.style.display = "none";
		transferChildPhoto.style.display = "none";
		renewChildPhoto.style.display = "none";
		if (myForm.preVisa[0].checked == true)
		{
			visitVisaAtachment.style.display = "block";
			residentVisaAttachment.style.display = "none";
		}
		if (myForm.preVisa[1].checked == true)
		{
			residentVisaAttachment.style.display = "block";
			visitVisaAtachment.style.display = "none";
		}
		if (myForm.relation[2].checked == true) 
		{
			maidSponsorPassCopyLA.style.display = "block";
			maidPassCopyLA.style.display = "block";
			maidSponsorPassCopy.style.display = "none";
			maidPassCopy.style.display = "none";
		}
	} else {
		localAmendmentAttach.style.display = "none";
	}
}

function setNewBornBaby ()
{
	if (myForm.visaStatus[0].checked == true)
	{
		myForm.DOB.value = myForm.newChildDOB.value;
		myForm.DOB.disabled = true;
		myForm.bCountry.selectedIndex = 223;
		myForm.bCountry.disabled = true;
		if (myForm.newChildPOB[0].checked == true) 
		{ 
			myForm.bCity.value = 'Dubai'; 
			myForm.bCity.disabled = true;
		} else { 
			myForm.bCity.disabled = false;
		}
	} else {
		myForm.DOB.disabled = false;
		myForm.bCountry.disabled = false;
		myForm.bCity.disabled = false;
	}
}

// calculate fee
// if express, disable options that express already includes
function calFee() 
{
	var fee = 0;
	
	// child
	if (myForm.relation[0].checked == true )
	{
		// new
		if (myForm.visaStatus[1].checked == true )
		{
			// new entry permit
			if (myForm.visaType[0].checked == true) { fee = 1200; }
			// transfer
			if (myForm.visaType[1].checked == true) { fee = 1650; }
		}
		// renewal
		if (myForm.visaStatus[2].checked == true ) { fee = 700; }
		// new born child
		if (myForm.visaStatus[0].checked == true ) { fee = 650;  myForm.medicalTest.checked = false;}
	}
	// wife
	if (myForm.relation[1].checked == true )
	{
		// new
		if (myForm.visaStatus[1].checked == true )
		{
			// new entry permit
			if (myForm.visaType[0].checked == true) { fee = 1550; }
			// transfer
			if (myForm.visaType[1].checked == true) { fee = 1650; }
		}
		// renewal
		if (myForm.visaStatus[2].checked == true ) { fee = 1050; }
		
		// 450 for each child endoresed in passport
		var childs = myForm.numberOfChildren.value;
		fee = fee + (550 * childs);
	}
	// maid
	if (myForm.relation[2].checked == true )
	{
		// new
		if (myForm.visaStatus[1].checked == true ) { 
			if(myForm.scNationality.value == 'Bahrain' ||
			   myForm.scNationality.value == 'Kuwait' ||
			   myForm.scNationality.value == 'Oman' ||
			   myForm.scNationality.value == 'Saudi Arabia' ||
			   myForm.scNationality.value == 'Qatar') {
				
				fee = 1900;
				depositAmount.innerHTML = '1,550';
				myForm.deposit.value = '1,550';
			} else {
				fee = 6500; 
				depositAmount.innerHTML = '2,050';
				myForm.deposit.value = '2,050';
			}
		}
		
		// renewal
		if (myForm.visaStatus[2].checked == true ) { fee = 6050; }
	}

	// incountry and local amendment
	if (myForm.inCountry[0].checked == true) {fee = fee + 810;}
	if (myForm.localAmendment[0].checked == true) {fee = fee + 810;}
	
	// express
	if (myForm.expressService.checked == true) 	
	{
		if (myForm.visaStatus[1].checked == true)
		{
			fee = fee + 600;
			myForm.urgentStamping.checked = false;
			myForm.urgentStamping.disabled = true;
		}
		if (myForm.visaStatus[2].checked == true)
		{
			fee = fee + 300;
			myForm.urgent.checked = false;
			myForm.urgent.disabled = true;
		}
		if (myForm.visaStatus[0].checked == true)
		{
			fee = fee + 300;
			myForm.urgent.checked = false;
			myForm.urgentStamping.checked = false;
			myForm.urgentStamping.disabled = true;
		}
	} else {
		myForm.urgent.disabled = false;
		myForm.urgentStamping.disabled = false;
		myForm.medicalTest.disabled = false;	
	}
		
	// urgent
	if (myForm.urgent.checked == true || myForm.urgent.disabled == true) { fee = fee + 250; }
	if (myForm.urgentStamping.checked == true || myForm.urgentStamping.disabled == true) {fee = fee + 250;}	
	
	// medical is same for both new and renewal
	if (myForm.medicalTest.checked == true || myForm.medicalTest.disabled == true) { fee = fee + 100; }
	
	// display the fee and update the fee hidden field
	fee = addCommas(fee);
	paymentAmount.innerHTML = fee;
	myForm.feeAmount.value = fee;
}

// calculate the fine
function calFine()
{
	var fine = 0;
	var today = new Date();
	//Set 1 day in milliseconds
	var one_day=1000*60*60*24;
	
	// days added to the fine because of the processing time at TECOM
	var processingDays = 7; // normal takes 7 days
	if (myForm.expressService.checked == true) {processingDays = 2;} // express takes 2 days
	
	//visit visa
	if (myForm.visaStatus[1].checked == true && myForm.preVisa[0].checked == true && myForm.inCountry[0].checked == true && myForm.localAmendment[0].checked == true)
	{
		if(myForm.preVisaIssuePlace[0].checked == true) {
			var dailyFine = 30; // DXB
		}

		if(myForm.preVisaIssuePlace[1].checked == true) {
			var dailyFine = 100; // non DXB
		}	
		
		var DOE = fixDateFormat (myForm.DOE.value);
		var DOE = new Date(DOE);
		
		//Calculate difference between today and date of entry, and convert to days
		var daysPassed = (today.getTime()-DOE.getTime())/one_day;
		//var daysRemaining = 0;
		
		//validity
		if(myForm.visitVisaExtended[0].checked == true) {
			var validity = 30;
		}	
		if(myForm.visitVisaExtended[1].checked == true) {
			var validity = 90;
		}			

		//date of fine - date of entry - validity
		var days = parseInt(daysPassed) - validity;
		
		
		if(days <= 30 && myForm.preVisaIssuePlace[0].checked == true) {
			var fine = days * dailyFine;
		}	

		if(days >= 31 && myForm.preVisaIssuePlace[0].checked == true) {
				var fine = (days * dailyFine);
		}	
/*
		if(days >= 151 && myForm.preVisaIssuePlace[0].checked == true) {
			var fine = (days * dailyFine) + 2030 + 3000;
		}

		if(days >= 336 && myForm.preVisaIssuePlace[0].checked == true) {
			var fine = (days * dailyFine) + 2030 + 3000 + 5000;
		}
*/		
		if(myForm.preVisaIssuePlace[1].checked == true) {
			var fine = days * dailyFine;
		}	
		
	}
	
	//residence visa
	if (myForm.preVisa[1].checked == true && myForm.inCountry[0].checked == true && myForm.localAmendment[0].checked == true)
	{
		if(myForm.preVisaIssuePlace[0].checked == true) {
			var dailyFine = 10; // DXB
		}

		if(myForm.preVisaIssuePlace[1].checked == true) {
			var dailyFine = 25; // non DXB
		}
	// Specifics	
		var DOVC = fixDateFormat(myForm.DOVC.value);
		var DOVC = new Date(DOVC);	

		//Calculate difference between today and date of entry, and convert to days
		var daysPassed = (today.getTime()-DOVC.getTime())/one_day;

		var validity = 30;

		//date of fine - date of entry - validity
		var days = parseInt(daysPassed) - validity;
		

		if(days <= 180 && myForm.preVisaIssuePlace[0].checked == true) {
			var fine = days * dailyFine;
		}	

		if(days >= 181 && myForm.preVisaIssuePlace[0].checked == true) {
			    var SecondDailyFine = 20; 
				var fine = ((days -180) * SecondDailyFine) + 1800;
		}	

		if(days >= 366 && myForm.preVisaIssuePlace[0].checked == true) {
		    var ThirdDailyFine = 30; 
			var fine = ((days -365) * ThirdDailyFine) + 1800 + 3600;
		}

		if(days >= 336 && myForm.preVisaIssuePlace[0].checked == true) {
			var fine = (days * dailyFine) + 2030 + 3000 + 5000;
		}
		
		if(myForm.preVisaIssuePlace[1].checked == true) {
			var fine = days * dailyFine;
		}	
	}
	
	//renewal visa
	if (myForm.visaStatus[2].checked == true)
	{
		var dailyFine = 10; // DXB

		// Specifics	

			var RED = fixDateFormat(myForm.RED.value);
			var RED = new Date(RED);	

			//Calculate difference between today and date of entry, and convert to days
			var daysPassed = (today.getTime()-RED.getTime())/one_day;

			//validity
			var validity = 60;

			//date of fine - date of entry - validity
			var days = parseInt(daysPassed);

			if(days > 30) {
				var fine = ((days - 30) * dailyFine);
			}	

			if(days >= 91) {
			    var SecondDailyFine = 20; 
				var fine = ((days - 90) * SecondDailyFine);
			}

			if(days >= 366) {
			    var ThirdDailyFine = 30; 
				var fine = ((days - 365) * ThirdDailyFine);
			}	
	}
	
	// new born baby
	if (myForm.visaStatus[0].checked == true)
	{
		var DOB = fixDateFormat (myForm.newChildDOB.value);
		var DOB= new Date(DOB);
		
		//Calculate difference btw the two dates, and convert to days
		var daysPassed = (today.getTime()-DOB.getTime())/one_day;
		
		var daysRemaining = daysPassed+processingDays-(120);
		
		// if daysRemaining is minus, there is no fine
		if (daysRemaining>0) 
		{
			var daysRounded = parseInt(daysRemaining);
			
			if (myForm.newChildPOB[0].checked == true) 
			{
				fine = 10*daysRounded + 270;
				if (daysRounded>180){fine = fine + 10*(daysRounded-180);}
				if (daysRounded>365){fine = fine + 10*(daysRounded-365);}
			}
			if (myForm.newChildPOB[1].checked == true) {fine = 25*daysRounded + 270;}
		}
	}
	
	fine1 = addCommas(fine);
	fineAmount.innerHTML = fine1;
	myForm.fine.value = fine1;
	
	if (fine>0) {fineSec.style.display = "block";}
	else {fineSec.style.display = "none";}
}

// calculate the age (years)
function calAge()
{
	if(checkDate(myForm.DOB)== true)
	{
		var DOB = fixDateFormat (myForm.DOB.value);
		var birthday= new Date(DOB);
		var today = new Date();
		$ageArray = DateDiff(today,birthday);
		age = $ageArray[1];

		if (myForm.relation[2].checked== true && age>60) { alert("House maid cannot be above 60 years old."); }
		return age;
	}
}

function isMedicalRequired ()
{
	// show the option if DOB is empty
	if (myForm.DOB.value == '')  { medicalTestSec.style.display = "block"; } 
	
	// no medial for new born baby
	if (myForm.visaStatus[0].checked == true)
	{
		myForm.medicalTest.checked = false;
		medicalTestSec.style.display = "none";

	// for child, check the DOB
	} else if(checkDate(myForm.DOB)== true && myForm.relation[0].checked== true) {
		var DOB = fixDateFormat (myForm.DOB.value);
		var birthday= new Date(DOB);
		var today = new Date();
		$ageArray = DateDiff(today,birthday);
		age = $ageArray[1];
		month = $ageArray[0];
		if ((age<17) || (age==17 && month<6)) { myForm.medicalTest.checked = false; myForm.medicalTest.disabled = false; medicalTestSec.style.display = "none";}
		if ((age>17) || (age==17 && month>5)) { medicalTestSec.style.display = "block"; }
	} else {
		medicalTestSec.style.display = "block"; 
	}
}

function calSponsorRED()
{
	if(checkDate(myForm.sRED)== true)
	{
		var sRED = fixDateFormat(myForm.sRED.value);
		var sRED = new Date(sRED);
		var today = new Date();
		if(today>sRED) { alert("Sponsor's residency must be valid at least for 6 months.");}
		else {
			$ageArray = DateDiff(sRED,today);
			year = $ageArray[1];
			month = $ageArray[0];
			if (year<1 && month<6) { alert("Sponsor's residency must be valid at least for 6 months.");}
		}
	}
}

// call all necessary functions
function callAllFunctions()
{
	showAndHide();
	isMedicalRequired ();
	setRequirements();
	setNewBornBaby ();
	calFee();
	calFine();
	addChildren ();
}