
// (c) 2005 Merlin Associates, Inc.


	function CatSwitch(jset) {
//	**************************
	if (jset=='A') {
		document.getElementById('cat_A').checked=true
	} else if (jset=='R') {
		document.getElementById('cat_R').checked=true
	} else {
		document.getElementById('sale').checked=false
		document.getElementById('lease').checked=false
	}

	if (document.getElementById('cat_A').checked) {
		document.getElementById('mask_s').style.visibility="visible"
		document.getElementById('mask_p').style.visibility="hidden"
		document.getElementById('msn').disabled=false
		document.getElementById('msn').style.background="WHITE"
	} else {
		document.getElementById('mask_s').style.visibility="hidden"
		document.getElementById('mask_p').style.visibility="visible"
		document.getElementById('msn').disabled=true
		document.forms[0].elements.msn.value=''
		document.getElementById('msn').style.background="#C0C0C0"
	}
   return true
 }


  function ContactSync() {
//************************
	jfields=["name","comp","tel","fax","email"]
	for (jx1=0;jx1<jfields.length;jx1++) {
		document.getElementById(jfields[jx1]).value=document.getElementById('c'+jfields[jx1]).value
	}
	return false
}


  function FormReset(jform) {
//***************************
	document.getElementById('sale').checked=false
	document.getElementById('lease').checked=false
	jfields=["model","msn","details","cname","ccomp","ctel","cfax","cemail","name","title","comp","tel","fax","email","message"]
	for (jx1=0;jx1<jfields.length;jx1++) {
		document.getElementById(jfields[jx1]).value=''
	}
	CatSwitch('A')
	return false
}


	function Loaded() {
//	*******************
	MaskAlign()
	CatSwitch('')
	return true
}


	function MaskAlign() {
//	********************
	jcoord=ElementCoordinates('sale').split(',')
	document.getElementById('mask_p').style.left=parseInt(jcoord[0])+21
	document.getElementById('mask_p').style.top=parseInt(jcoord[1])-1
	document.getElementById('mask_s').style.left=parseInt(jcoord[0])+21
	document.getElementById('mask_s').style.top=parseInt(jcoord[1])-1
}


  function Validate(jform) {
//************************
	jerrors=''
	jnewline='\n -  '
	
	with (jform) {
		if (Blank(elements['model'].value)) {
			jerrors=jerrors+jnewline+'provide the aircraft type/model'
		}
  
		if (!elements['sale'].checked && !elements['lease'].checked) {
			if (elements['cat_A'].checked) {
				jmessage='available for sale or for lease'
			} else {
				jmessage='required for purchase or for lease'
			}
			jerrors=jerrors+jnewline+'indicate if the aircraft are '+jmessage
		}

		if (elements['cat_A'].checked && Blank(elements['msn'].value)) {
			jerrors=jerrors+jnewline+'provide the serial numbers of the aircraft (required for a listing in Airfax)'
		}

		if (Blank(elements['details'].value)) {
			jerrors=jerrors+jnewline+'provide some details about the aircraft, such as engine type, year of manufacture etc.'
		} else {
			if (WordCount(elements['details'].value)<5) {
				jerrors=jerrors+jnewline+'provide some details about the aircraft (at least 5 words)'
			} else {
				if (At('<',elements['details'].value)>0 || At('>',elements['details'].value)>0) {
					jerrors=jerrors+jnewline+'delete the <> characters from details - html code is not accepted'
			   }
}
		}

		if (!HasAlpha(elements['cname'].value)) {
			jerrors=jerrors+jnewline+'provide a contact name'
		}

		if (Blank(elements['ctel'].value+elements['cemail'].value)) {
			jerrors=jerrors+jnewline+'provide a contact telephone number or email address'
		} else {
			if (!Blank(elements['ctel'].value) && !TelValid(elements['ctel'].value)) {
				jerrors=jerrors+jnewline+'provide a valid contact telephone number (at least 8 digits)'
			}
		}

		if (!Blank(elements['cfax'].value) && !TelValid(elements['cfax'].value)) {
			jerrors=jerrors+jnewline+'provide a valid contact fax number (at least 8 digits)'
		}

		if (!Blank(elements['cemail'].value) && !EmailValid(elements['cemail'].value)) {
			jerrors=jerrors+jnewline+'provide a valid contact email address (with an x@x.xx format)'
		}

		if (!HasAlpha(elements['name'].value)) {
			jerrors=jerrors+jnewline+'provide your name'
		}

		if (Blank(elements['tel'].value+elements['email'].value)) {
			jerrors=jerrors+jnewline+'provide your telephone number or email address'
		} else {
			if (!Blank(elements['tel'].value) && !TelValid(elements['tel'].value)) {
				jerrors=jerrors+jnewline+'provide your telephone number (at least 8 digits)'
			}
		}

		if (!Blank(elements['fax'].value) && !TelValid(elements['fax'].value)) {
			jerrors=jerrors+jnewline+'provide your fax number (at least 8 digits)'
		}

		if (!Blank(elements['email'].value) && !EmailValid(elements['email'].value)) {
			jerrors=jerrors+jnewline+'provide your email address (with an x@x.xx format)'
		}
	}

	if (!Blank(jerrors)) {
		alert('Incomplete information - please:'+jerrors)
		return false
	}
	return true
}



// ******************
// Standard functions
// ******************


  function At(jchar,jstring) {
//*****************************
	return jstring.indexOf(jchar)
}


  function Blank(jstring) {
//*************************
	return (jstring.match(/[^ \s]/)==null)
}


	function ElementCoordinates(jelement) {
//	***************************************
	jobj=document.getElementById(jelement)
	jleft=jobj.offsetLeft
	jtop=jobj.offsetTop
	while (jobj['offsetParent']!=null) {
		jobj=jobj.offsetParent
		jleft=jleft+jobj.offsetLeft
		jtop=jtop+jobj.offsetTop
	}
	return jleft+', '+jtop
}


  function EmailValid(jemail) {
//*****************************
// parameters are <email address>
// there seems to be a lot of confusion about the syntax for a valid email address
// the most realistic set of rules I could generate are as follows:
// an email address must have a <user>@<subdomain>.<tld> format, where
//	- <user> can be any combination of alphanumeric, underscore, dash and period characters
//		but the first and the last characters cannot be a period and periods cannot be consecutive
//  - <subdomain> can be any combination of alphanumeric, dash and period characters
//		but the first and the last characters cannot be a period and periods cannot be consecutive
//  - <tld> can be any 2,3 or 4 alphabetic characters
// by inference, the minimal email address is x@x.xx

	return (jemail.match(/^\s*[a-z0-9_\-]+(\.[a-z0-9_\-]+)*@[a-z0-9\-]+(\.[a-z0-9\-]+)*\.[a-z]{2,4}\s*$/i)!=null)
}


  function HasAlpha(jstring) {
//****************************
	return (jstring.match(/[a-z]/i)!=null)
}


  function TelValid(jtel) {
//*************************
// a valid telephone number has at least eight digits
	jmatches=jtel.match(/\d/g)
	if (jmatches==null) return false
	return jmatches.length>=8
}


	function WordCount(jtext) {
//	***************************
	jtext=' '+jtext.replace(/\s/g,' ')+' '
	while (jtext.match(/  /)) {
		jtext=jtext.replace(/  /,' ')
	}

	jc=-1
	for (jx1=0;jx1<jtext.length;jx1++) {
		if (jtext.charAt(jx1)==' ') jc+=1
	}
	return jc
}
