
window.hiddenField	= new Array();
window.OnBlureFlag	= 1;

function SetText(Obj, txtValue)
{
	Obj.value = txtValue;	
}

function FormSubmit(Form, bHidden)
{
	TrimSpaces(Form);
		
	if(MandatoryFieldCheck(Form, bHidden) && CheckInteger(Form, bHidden) && EmailCheck(Form) && CheckSSN(Form) && CheckMatch(Form))
	{
		if(Form)
		{
			Form.submit();
		}
		else
		{
			document.forms[0].submit();
		}

		return 0;
	}

	return 1;
}

// Remove unwanted spaces from all Fields
function TrimSpaces(Form)
{
	var BeginWhiteSpace		= new RegExp("^ +");
	var EndWhiteSpace		= new RegExp(" +$");
	var PhoneType			= new RegExp("PHONE|FAX|ZIP");
	var EmailType			= new RegExp("EMAIL|URL");
	var AddressType			= new RegExp("ADDRES");
	var FloatType			= new RegExp("FLOAT");
	var IntegerType			= new RegExp("INTEGER");
	var MetaChars			= new RegExp("[\"|\'|`]","g");
	var PhoneMetaChars		= new RegExp("[\||\=|\/|\;|\:|\,|_|\"|\'|`|\~|!|@|%|&|<|>|#|\^|\*|\?|\$|\\\\|\.|\+|\{|\}|\[]","g");
	var EmilMetaChars		= new RegExp("[\||\;|\,|\"|\'|`|\~|!|%|<|>|#|\^|\*|\$|\\\\|\+|\(|\)|\{|\}|\[]","g");
	var AddressMetaChars	= new RegExp("[\"|\'|`]","g");
	var FloatMetaChars		= new RegExp("[\||-|\=|\/|\;|\:|\,|\"|\'|`|\~|!|@|%|&|<|>|#|\^|\*|\?|\$|\\\\|\+|\(|\)|\{|\}|\[]","g");		

	var Form = (Form) ? Form : document.forms[0];
	//var Form = document.forms[0];
		
	for(var i= 0 ; i < Form.elements.length ; i++)
	{
		var FieldName = Form.elements[i].name;
			
		if((Form.elements[i].type == "text") || (Form.elements[i].type == "textarea"))
		{
			Trimmed_String = Form.elements[i].value;
			Trimmed_String = Trimmed_String.replace(BeginWhiteSpace, "");
			Trimmed_String = Trimmed_String.replace(EndWhiteSpace, "");
				
			if(PhoneType.test(FieldName))
			{
				Trimmed_String = Trimmed_String.replace(PhoneMetaChars, "");
			}
			else if(EmailType.test(FieldName))
			{
				Trimmed_String = Trimmed_String.replace(EmilMetaChars, "");
			}
			else if(AddressType.test(FieldName))
			{
				Trimmed_String = Trimmed_String.replace(AddressMetaChars, "");
			}
			else if(FloatType.test(FieldName))
			{
				Trimmed_String = Trimmed_String.replace(FloatMetaChars, "");
			}
			else if(IntegerType.test(FieldName))
			{
				Trimmed_String = Trimmed_String.replace(MetaChars, "");
			}				
			else
			{
				Trimmed_String = Trimmed_String.replace(MetaChars, "");
			}								
				
			Form.elements[i].value = Trimmed_String;
		}
	}
}

// Check for Required Fields
function MandatoryFieldCheck(Form, bHidden)
{
	var Mandatory	= new RegExp("MANDATORY_");
	var ErrorMsg	= '';
	var FocusField	= null;

	var Form			= (Form) ? Form : document.forms[0];
	var hiddenFields	= window.hiddenField.toString();

	for(var i= 0 ; i < Form.elements.length ; i++)
	{
		var Element = Form.elements[i];
		var Zero    = false;

		if((Element.type == "text")		|| (Element.type == "textarea") || 
			Element.type == "password"	|| Element.type == "select-one" || 
			Element.type == "file"		|| (bHidden && Element.type == "hidden"))
		{
			var FieldName = Element.name;

			if(Mandatory.test(FieldName))
			{							
				if(Element.type == "hidden" && hiddenFields.indexOf(Element.name) < 0)
				{
					continue;
				}

				var FieldValue = Element.value;
			
				if(Form.elements[i].type == "text")
				{
					Zero = true;
				}
				
				if((FieldValue == 0 && !Zero) || FieldValue == "")
				{
					if(!FocusField)
					{
						FocusField = GetFocusField(Form, Element);
					}

					ErrorMsg += Element.id+"\n";
				}
			}
		}
	}

	if(ErrorMsg)
	{
		alert("The following field(s) are mandatory\n============================\n\n"+ErrorMsg);
		
		if(FocusField && FocusField.type != "hidden")
		{
			FocusField.focus();	
		}

		return false;		
	}

	return true;
}

// Check Numbers, Digits, and Float Fields
function CheckInteger(Form, bHidden)
{
	var Form		= (Form) ? Form : document.forms[0];
	regExpns		=	new Array(	new RegExp("[^0-9|\(|\)|-]", "g"),
									new RegExp("[^0-9|\.]", "g"),
									new RegExp("[^0-9|]", "g"));

	regExpnsTypes	=	new Array(	new RegExp("_INT"),
									new RegExp("_FLOAT"),
									new RegExp("_DIGIT"));

	var ErrorMsg		= '';
	var FocusField		= null;
	var hiddenFields	= window.hiddenField.toString();

	for(var i=0 ; i < Form.elements.length ; i++)
	{
		var Element		= Form.elements[i];
		var FieldName	= Element.name;
		var InputValue	= Element.value;
		
		if(bHidden && Element.type == "hidden" && hiddenFields.indexOf(Element.name) < 0)
		{
			continue;
		}

		for(var j=0; j < regExpnsTypes.length; j++)
		{
			if(regExpnsTypes[j].test(FieldName) && (Element.type == "text" || (bHidden && Element.type == "hidden")))
			{
				if(InputValue.match(regExpns[j]))
				{
					if(!FocusField)
					{
						FocusField = GetFocusField(Form, Element);
					}
										
					ErrorMsg += Element.id+"\n";
				}
				
				break;
			}
		}
	}
		
	if(ErrorMsg)
	{
		alert("The following field(s) have invalid entries\n=============================================\n\n"+ErrorMsg);
		if(FocusField)
		{
			FocusField.focus();	
		}
		return false;		
	}
		
	return true;		
}

// Check E-mail Address
function EmailCheck(Form)
{
	var FormObj			= (Form) ? Form : document.forms[0];
	var InputTypeEmail	= new RegExp("EMAIL");
	var ErrorMsg		= '';
	var FocusField		= null;
	var Begin			= new RegExp("(^@)|(^_)|(^\\.)|(\\.$)|(@$)|(_$)|(\\.@)|(@\\.)|(@.*@)|(\\..?\\.)");
					
	for(var i= 0 ; i < FormObj.elements.length ; i++)
	{
		var FieldName = FormObj.elements[i].name;
		
		if(InputTypeEmail.test(FieldName) && FormObj.elements[i].type == "text")						
		{
			var InputValue	= FormObj.elements[i].value;
							
			if(InputValue != '')
			{
				if(InputValue.match(Begin))
				{
					if(!FocusField)
					{
						FocusField = FormObj.elements[i];
					}				
						
					ErrorMsg += FormObj.elements[i].id + "\n";
				}
				else if(!InputValue.match(/@/))
				{
					if(!FocusField)
					{
						FocusField = FormObj.elements[i];
					}				
						
					ErrorMsg += FormObj.elements[i].id + "\n";
				}
				else if(!InputValue.match(/\./))
				{
					if(!FocusField)
					{
						FocusField = FormObj.elements[i];
					}				
						
					ErrorMsg += FormObj.elements[i].id + "\n";					
				}	
			}									
		}
	}
		
	if(ErrorMsg)
	{
		alert("The following field(s) have invalid entries\n=============================================\n\n"+ErrorMsg);
		FocusField.focus();
		return false;
	}
		
	return true;
}

function CheckMatch(Form)
{
	var Form		= (Form) ? Form : document.forms[0];
	var InputType	= new RegExp("_MATCH");
	var ErrorMsg	= '';
	var FocusField	= null;
	
	for(var i= 0 ; i < Form.elements.length ; i++)
	{
		var FieldName = Form.elements[i].name;
		if(InputType.test(FieldName))
		{
			var MatchFieldName = FieldName.substring(0, FieldName.indexOf("_MATCH"));
			var MatchFieldObj = eval("document.forms['" + Form.name + "']." + MatchFieldName);
			
			if(MatchFieldObj.value != "")
			{
				if(MatchFieldObj.value != Form.elements[i].value)
				{
					if(!FocusField)
					{
						FocusField = MatchFieldObj;
					}

					ErrorMsg += Form.elements[i].id+"\n";	
				}
			}
		}
	}

	if(ErrorMsg)
	{
		alert("The following field(s) have invalid entries\n=============================================\n\n"+ErrorMsg);
		FocusField.focus();	
		return false;		
	}	

	return true;
}

// Check if SSN is valid (Social Security Number)
function CheckSSN(Form)
{
	var Form			= (Form) ? Form : document.forms[0];
	var InputTypeSSN	= new RegExp("_SSN");
	var ErrorMsg		= '';
	var	FocusField		= null;
	
	for(var i= 0 ; i < Form.elements.length ; i++)
	{
		var FieldName = Form.elements[i].name;
		if(InputTypeSSN.test(FieldName))
		{
			if((!Form.elements[i].value) && (!Form.elements[i+1].value) && (!Form.elements[i+2].value))
			{
				continue;
			}

			if((!Form.elements[i].value) || (!Form.elements[i+1].value) || (!Form.elements[i+2].value))
			{
				if(!FocusField)
				{
					FocusField = Form.elements[i];
				}
				
				ErrorMsg += Form.elements[i].id+"\n";	
			}
		}
	}

	if(ErrorMsg)
	{
		alert("The following field(s) have invalid entries\n=============================================\n\n"+ErrorMsg);
		FocusField.focus();	
		return false;		
	}	

	return true;
}

function CopyAddress(Form, Address)
{
	var AddressArray = Address.split('ä');

	Form.MANDATORY_BILLINGFIRSTNAME.value	= (AddressArray[0]) ? AddressArray[0] : '';
	Form.BILLINGMIDDLENAME.value			= (AddressArray[1]) ? AddressArray[1] : '';
	Form.MANDATORY_BILLINGLASTNAME.value	= (AddressArray[2]) ? AddressArray[2] : '';
	Form.MANDATORY_BILLING_ADDRESS.value	= (AddressArray[3]) ? AddressArray[3] : '';
	Form.BILLING_ADDRESS2.value				= (AddressArray[4]) ? AddressArray[4] : '';
	Form.MANDATORY_BILLING_CITY.value		= (AddressArray[5]) ? AddressArray[5] : '';
	Form.MANDATORY_BILLING_STATE.value		= (AddressArray[6]) ? AddressArray[6] :  0;
	Form.MANDATORY_BILLING_ZIP.value		= (AddressArray[7]) ? AddressArray[7] : '';
	Form.MANDATORY_BILLING_COUNTRY.value	= (AddressArray[9]) ? AddressArray[9] : '';
	Form.MANDATORY_BILLINGPHONE_INT.value	= (AddressArray[8]) ? AddressArray[8] : '';
}

function CopyHomeAddress(Form, Address)
{
	var AddressArray = Address.split('ä');

	Form.MANDATORY_SHIPPINGFIRSTNAME.value	= (AddressArray[0]) ? AddressArray[0] : '';
	Form.SHIPPINGMIDDLENAME.value			= (AddressArray[1]) ? AddressArray[1] : '';
	Form.MANDATORY_SHIPPINGLASTNAME.value	= (AddressArray[2]) ? AddressArray[2] : '';
	Form.MANDATORY_SHIPPING_ADDRESS.value	= (AddressArray[3]) ? AddressArray[3] : '';
	Form.SHIPPING_ADDRESS2.value			= (AddressArray[4]) ? AddressArray[4] : '';
	Form.MANDATORY_SHIPPING_CITY.value		= (AddressArray[5]) ? AddressArray[5] : '';	
	Form.MANDATORY_SHIPPING_STATE.value		= (AddressArray[6]) ? AddressArray[6] :  0;
	Form.MANDATORY_SHIPPING_ZIP.value		= (AddressArray[7]) ? AddressArray[7] : '';
	Form.MANDATORY_SHIPPING_COUNTRY.value	= (AddressArray[9]) ? AddressArray[9] : '';
	Form.MANDATORY_SHIPPINGPHONE_INT.value	= (AddressArray[8]) ? AddressArray[8] : '';
}

function SetValueInHidden(FromForm, ToForm, bReplace)
{
	if(!window.hiddenField || bReplace)
	{
		window.hiddenField =  new Array();
	}

	if(document.forms.length > 1 && FromForm && ToForm)
	{
		for(i=0; i < FromForm.elements.length; i++)
		{
			Element = FromForm.elements[i];
			Result	= String(Element.type).indexOf('radio');

			if((Result >= 0 && Element.checked) || Result < 0)
			{
				ToForm.elements[Element.name].value = Element.value;
				window.hiddenField[window.hiddenField.length] = Element.name;
			}
		}
	}
}

var CreditCard = '';
if((SpanID = document.getElementById('CreditCardDetails')))
{
	CreditCard = AddFormHtml('CREDITCARD_FORM', SpanID);
}

var CreditCard = '';
if((SpanID = document.getElementById('CreditCardDetails')))
{
	CreditCard = AddFormHtml('CREDITCARD_FORM', SpanID);
}

var PurchaseOrd = '';
if((POSpanID = document.getElementById('PurchaseOrderDetails')))
{
	PurchaseOrd = AddFormHtml('PRUCHASEORDER_FORM', POSpanID);
}

var PatientInsurDet = '';
if((PISpanID = document.getElementById('PatientInsuranceDetails')))
{
	PatientInsurDet = AddFormHtml('PatientInsurDet_FORM', PISpanID);
}

function ShowCreditCard(BMethod)
{
	var Form = document.forms[0];
	Form.MANDATORY_BILLINGMETHOD.options.selectedIndex = BMethod;

	var CreditCardLayer		= document.getElementById('CreditCardDetails');
	var PurchaseOrderLayer	= document.getElementById('PurchaseOrderDetails');
	var PatientInsurLayer	= document.getElementById('PatientInsuranceDetails');

	CreditCardLayer.innerHTML	 = "";
	PurchaseOrderLayer.innerHTML = "";		
	PatientInsurLayer.innerHTML  = "";		

	if(BMethod == 2)
	{
		if(CreditCardLayer)    { CreditCardLayer.innerHTML = CreditCard;	}
		if(PurchaseOrderLayer) { PurchaseOrderLayer.innerHTML = "";			}
		if(PatientInsurLayer)  { PatientInsurLayer.innerHTML = "";			}
	}
	else if(BMethod == 3)
	{
		if(CreditCardLayer)    { CreditCardLayer.innerHTML = "";			}
		if(PatientInsurLayer)  { PatientInsurLayer.innerHTML = "";			}
		if(PurchaseOrderLayer) { PurchaseOrderLayer.innerHTML = PurchaseOrd;}
	}
	else if(BMethod == 4)
	{
		if(PatientInsurLayer)  { PatientInsurLayer.innerHTML = PatientInsurDet;	}	
		if(CreditCardLayer)    { CreditCardLayer.innerHTML = "";				}
		if(PurchaseOrderLayer) { PurchaseOrderLayer.innerHTML = "";				}
	}
	else
	{
		var BlankLayer = document.getElementById('BlankLayer');
		BlankLayer.innerHTML = "-"; 
		BlankLayer.style.visibility	  = "inherit";
		BlankLayer.style.visibility	  = "hidden";
	}
}

var Prescription = '';
if((SpanID = document.getElementById('PrescriptionDetails')))
{
	Prescription = AddFormHtml('PESCRIPTION_FORM', SpanID);
}

function ShowPrescription(PMethod)
{
	var Form = document.forms['PRESCRIPTION'];
	Form.MANDATORY_PRESCRIPTION.value = PMethod;
	var PrescriptionLayer	=	document.getElementById('PrescriptionDetails');

	if(PrescriptionLayer)
	{
		if(PMethod == 1)
		{
			PrescriptionLayer.innerHTML = Prescription;
		}
		else
		{
			PrescriptionLayer.innerHTML = "";

			var BlankLayer = document.getElementById('BlankLayer');
			BlankLayer.innerHTML = "-"; 
			BlankLayer.style.visibility	  = "inherit";
			BlankLayer.style.visibility	  = "hidden";			
		}
	}
}

function SubmitForm(form)
{
	document.forms[0].submit();
	return 0;
}

function CheckInt(OrderObj, CheckBox, PageName)
{
	var Flag	= Number(CheckBox.checked);		
	var Digit	= new RegExp( ((PageName == 'HOME') ? "[^0-9|]" : "[^0-9|\.]") , "g" );

	if(Flag && OrderObj.value && (OrderObj.value).match(Digit))
	{
		Flag = 0;
		alert("The following field(s) are invalid\n=============================================\n\n" + OrderObj.id);
	}
	
	if((!Flag && PageName == 'HOME') || ((!Flag || !OrderObj.value) && PageName != 'HOME'))
	{
		OrderObj.value = '';
		CheckBox.checked = false;
	}
			
	return Flag;
}

function AddFormHtml(FormName, SpanID)
{
	var SpanHtml = SpanID.innerHTML;		
	var ClientBrowser = navigator.userAgent;
	
 	if(ClientBrowser.indexOf("MSIE") < 0)
	{
		SpanHtml = 
		"<TABLE WIDTH='100%' BORDER='0' CELLPADDING='0' CELLSPACING='0' CLASS='FormText'>"	+
		"<TR><TD><FORM NAME='"	+ FormName + "' ONSUBMIT='return false;'>"					+
		SpanHtml				+ "</FORM></TD></TR></TABLE>";
	}
	else
	{
		IndexStart	= (SpanHtml.toLowerCase()).indexOf('<tr');
		IndexEnd	= (SpanHtml.toLowerCase()).lastIndexOf('tr>') + 3;
		Start		= SpanHtml.substr(0, IndexStart);
		End			= SpanHtml.substr(IndexEnd, SpanHtml.length);
	
		SpanHtml = SpanHtml.substr(IndexStart, (IndexEnd-IndexStart));
	
		SpanHtml =	Start			+
					'<FORM name="'	+	FormName	+ '" ONSUBMIT="return false;">'	+
					SpanHtml		+	"</FORM>"	+	End;
	}
	
	return SpanHtml;
}

function RemoveSpace(OrderObj)
{
	var BeginWhiteSpace = new RegExp("^ +");
	var EndWhiteSpace	= new RegExp(" +$");

	var Trimmed_String = OrderObj.value;
	Trimmed_String = Trimmed_String.replace(BeginWhiteSpace, "");
	Trimmed_String = Trimmed_String.replace(EndWhiteSpace, "");
	OrderObj.value = Trimmed_String;
}

function PositionLayer()
{
	var Browser = (String(navigator.userAgent).indexOf("MSIE") > 0) ? 1 : 0;
	var DivID	= document.getElementById('Content');
	var TbSpan	= document.getElementById('BLANKTABLE');
	var Spacer	= document.images['SPACER'];

	if(DivID && TbSpan && Spacer)
	{
		var InnerHeight	 = Number((!Browser) ? window.innerHeight : window.document.body.offsetHeight);
		var ReduceHeight = Number(TbSpan.offsetTop);
		var Height		 = Number(InnerHeight-ReduceHeight);
		var TotalPtg	 = Number((Height * 100)/InnerHeight)-1;				
		var SHeight		 = Number(DivID.scrollHeight);
		Spacer.width	 = (SHeight >= Height) ? 15 : 0;
		
		if(Browser && (SHeight >= Height ))
		{
			DivID.style.overflow = 'auto';
		}
		else if(Browser)
		{
			DivID.style.overflow = '';
		}				

		if(TotalPtg > 0)
		{
			DivID.style.height	= TotalPtg + '%';
		}
	}
}

function GetFocusField(Form, Element)
{
	if(Element && Element.type != "hidden")
	{
		return Element; 
	}

	for(var j=0; j < document.forms.length; j++)
	{
		var EachForm = document.forms[j];
		if(EachForm.name != Form.name)
		{
			if((EachForm.elements[Element.name]) && (EachForm.elements[Element.name].type != "hidden"))
			{
				FocusField = EachForm.elements[Element.name];
				return FocusField;
			}
		}
	}
		
	return false;
}

function ValidateOrder(OrderObj, CheckBox, PageName)
{
	if(CheckBox.checked)
	{
		if(!OrderObj.value && (PageName == 'HOME'))
		{
			CheckBox.checked = false;
			return false;
		}
		
		if(((PageName == 'HOME') || (PageName == 'SALE' && OrderObj.value)) && (OrderObj.value <= 0))
		{			
			alert("The following field(s) are invalid\n=============================================\n\n" + OrderObj.id);					
			OrderObj.value = '';
			CheckBox.checked = false;
			return false;
		}
	}
	else
	{
		OrderObj.value = '';
	}
	
	return true;
}

function RemoveDuplicate(Form, OrderObj, CheckBox)
{
	if(!OrderObj.value || !CheckBox.checked)
	{
		return false;
	}
	
	var DuplicateOrder	= OrderObj.value = Number(OrderObj.value);	
	var OrderValue		= Form.ORDERVALUE.value;
	var Reg				= new RegExp('(^|,)' + DuplicateOrder + '(,|\$)');
	var Result			= OrderValue.match(Reg);
	
	if(Result)
	{
		OrderObj.value = '';
		if(CheckBox.checked && DuplicateOrder)
		{
			window.OnBlureFlag = 0;
			alert("The following field(s) have duplicate entries\n=============================================\n\n" + OrderObj.id);
		}

		CheckBox.checked = false;
		return true;
	}

	Form.ORDERVALUE.value += OrderObj.value + ',';	
	return true;
}

function ClearContent(Form, PageName)
{
	for(var i=0; i < Form.elements.length; i++)
	{
		var Element = Form.elements[i];
		var ElementType = String(Element.type);

		if(ElementType == "text")
		{
			if(PageName == 'HOME')
			{
				RV(Element);
			}
			
			Element.value = '';			
		}
		else if(ElementType.indexOf('checkbox') >= 0)
		{
			Element.checked = false;
		}
		else if(ElementType.indexOf('select') >= 0)
		{
			Element.value = 0;
		}
	}
}

function BL(NamePart, Page)
{
	var PageName	= (Page) ? 'HOME' : 'SALE';
	var CtrlType	= (Page) ? '_TEXT_INT' : '_TEXT_FLOAT';	
	var TextCtrl	= eval('document.forms[0].TEXT_'	+ NamePart	+ CtrlType);
	var CheckBox	= eval('document.forms[0].CHK_'		+ NamePart	+ '_FLAG');
	var Form		= TextCtrl.form;
				
	RemoveSpace(TextCtrl);
	var Ret=CheckInt(TextCtrl, CheckBox, PageName);
	
	if(Ret)
	{
		ValidateOrder(TextCtrl, CheckBox, PageName); 
	}
	
	if(PageName == 'HOME')
	{	
		RemoveDuplicate(Form, TextCtrl, CheckBox);
	}
	
	return true;
}

function SP(NamePart, Page, event)
{
	var PageName	= (Page) ? 'HOME' : 'SALE';
	var CtrlType	= (Page) ? '_TEXT_INT' : '_TEXT_FLOAT';
	var TextCtrl	= eval('document.forms[0].TEXT_'	+ NamePart	+ CtrlType);
	var CheckBox	= eval('document.forms[0].CHK_'		+ NamePart	+ '_FLAG');
	var Form		= TextCtrl.form;
		
	var ClientBrowser = navigator.userAgent;
	if((ClientBrowser.indexOf("MSIE") < 0) && PageName == 'HOME' && !window.OnBlureFlag)
	{
		window.OnBlureFlag = 1;
		CheckBox.checked = false;
		return false;
	}

	if(CheckBox.checked)
	{
		if(PageName != 'HOME')
		{
			TextCtrl.value = '';
		}

		TextCtrl.focus();
	}
	else 
	{
		if(PageName == 'HOME')
		{
			RV(TextCtrl);
		}
		
		TextCtrl.value = '';
	}
	
	return true;
}

function RV(TextCtrl)
{
	if(TextCtrl.value)
	{
		var Form = TextCtrl.form;
		var RemoveOrder	= TextCtrl.value;
		var OrderValue	= Form.ORDERVALUE.value;
		var Reg			= new RegExp('(^|,)' + RemoveOrder + '(,|\$)');

		OrderValue = OrderValue.replace(Reg, ',');
		OrderValue = OrderValue.replace(/^,/, '');
		Form.ORDERVALUE.value = OrderValue;
	}

	return true;
}
