var objGTA = new GTA();
function GTA ()
{	
	this.arrFieldMap				= new Object();
	this.arrFieldMap[111]			= 'strOfficeAddr1';
	this.arrFieldMap[112]			= 'strOfficeAddr2';
	this.arrFieldMap[113]			= 'strOfficeSuburb';
	this.arrFieldMap[114]			= 'strOfficePostcode';
	this.arrFieldMap[115]			= 'strOfficePhone';
	this.arrFieldMap[116]			= 'intOfficeStateId';
	this.arrFieldMap[117]			= 'intOfficeCountryId';
	
	this.arrFieldMap[121]			= 'strTradingAddr1';
	this.arrFieldMap[122]			= 'strTradingAddr2';
	this.arrFieldMap[123]			= 'strTradingSuburb';
	this.arrFieldMap[124]			= 'strTradingPostcode';
	this.arrFieldMap[125]			= 'strTradingPhone';
	this.arrFieldMap[126]			= 'intTradingStateId';
	this.arrFieldMap[127]			= 'intTradingCountryId';
	
	this.arrFieldMap[151]			= 'strPostalAddr1';
	this.arrFieldMap[152]			= 'strPostalAddr2';
	this.arrFieldMap[153]			= 'strPostalSuburb';
	this.arrFieldMap[154]			= 'strPostalPostcode';
	this.arrFieldMap[155]			= 'strPostalPhone';
	this.arrFieldMap[156]			= 'intPostalStateId';
	this.arrFieldMap[157]			= 'intPostalCountryId';
	
	this.pullAbnBusData = function(strCurTradeName)
	{
		strCurTradeName = isDefined(strCurTradeName) ? strCurTradeName : strCurTradeName;
		$('CompNameDiv').hide();
		$(KEY_TRADING_NAME+'Msg').update('');
		$('BusNameMsg').update('');
		if ($('strTempAbn').value)
		{
			//dbe($('strTempAbn').value+'!!');
			$('CompInstr').hide();
			objCallBack = function(strResponse)
			{						
				//dbe(strResponse);
				strErr			= '';
				
				if (strResponse.isJSON())
				{
					objBusData 			= strResponse.evalJSON();
					strBusinessName 	= objBusData.strBusName;

					if (isDefined(strBusinessName))
					{
						$(KEY_BUS_NAME).value = strBusinessName;
					}
					else
					{
						$('BusNameMsg').update('No Company Name Found');
					}
					arrTradeNames	= objBusData.strTradeNames;
					$(KEY_TRADING_NAME).options.length = 1;
					
					boolTradeNames = true;
					if (arrTradeNames.length)
					{
						arrTradeNames.each(function(strName)
						{
							if (!$(KEY_INT_ID).value)
							{
								$('CompNameDiv').show();
							}
							if (strName.length)
							{
								boolTradeNames = true;
								var elOptNew 	= document.createElement('option');
								elOptNew.text 	= strName;
								elOptNew.value 	= strName;
								if (strCurTradeName == strName)
								{
									elOptNew.selected = true;
								}
								try 
								{
								  $(KEY_TRADING_NAME).add(elOptNew, null); //standards compliant; doesn't work in IE
								}
								catch(ex) 
								{
								  $(KEY_TRADING_NAME).add(elOptNew); //IE only
								}
							}
	
						});
						if (!boolTradeNames)
						{
							$(KEY_TRADING_NAME).update('No Trade Names Found');
						}
					}else
					{			
						$('strNext').show();
						$('strNext').disabled=false;
						if (!$(KEY_INT_ID).value)
						{
							$('CompNameDiv').show();
						}
						
						//$(KEY_TRADING_NAME).update('No Trade Names Found');
					}
				}else
				{
					strErr = 'Invalid Json Response: '+strResponse;
				}
				$('ValidateMsg').update(strErr);
				//dbe(strErr);
				$('CompNameDiv').show();
			};

			if (isDefined(IS_DEV) && IS_DEV && 0)
			{
				$(KEY_STR_EMAIL).value='testemp@test.com';
				$(KEY_STR_PWORD).value='pword';
				$('strPwordConfirm').value='pword';
				$(KEY_FIRST_NAME).value='FName';
				$(KEY_LAST_NAME).value='LName';
				$(KEY_PHONE).value='80000000';
				$(KEY_MOBILE).value='040000000';				
			}
			
			objRmi = new RMICaller();
			objRmi.sendForm('ABNSearch', 'ElWait', IMG_ICON_WAIT, IMG_BTN_TICK, IMG_BTN_CROSS, objCallBack);

		}
		else
		{
			$('AbnMsg').update('Invalid ABN');	
			$('CompNameDiv').hide();
		}
		$('ElWait').src=IMG_ICON_NULL;
	}

		
	this.validateBusNames = function()
	{
		//$(KEY_TRADING_NAME).update('');
		$('BusNameMsg').update('');			
		if ($('strBusName').value.length)
		{
			this.showMachForm();
		}
		else
		{	
			$('BusNameMsg').update('No Company Name Found');				
		}
		
	}	
	
	this.showMachForm = function()
	{
		$('strNext').show();
		$('strNext').disabled=false;
	}	
	
	
	this.saveComments = function()
	{
		$('ValidateMsg').update('');
		
		objCallBack = function(strResponse)
		{		
			//console.log(strResponse);
			try
			{
				objResp = strResponse.evalJSON();
				$('ValidateMsg').update(objResp.strMessage);	
			}
			catch (ex)
			{
				$('ValidateMsg').update(strResponse);	
			}	
		}
		
		objRmi = new RMICaller();
		objRmi.sendForm('CommentsForm', 'ElWait', IMG_ICON_WAIT, IMG_BTN_TICK, IMG_BTN_CROSS, objCallBack);
		this.loadComments($(KEY_INT_ID).value);		
		$('ElWait').src=IMG_ICON_NULL;
	
	
				
	}
	
	this.populateDetails = function(objData, objAddrData)
	{	
		//grab the up to date trading names in case they want to change
		this.pullAbnBusData(objData.strTradingName);
		
		//show all divs		
		$('CompNameDiv').show();
		
	}
	
	this.loadComments = function(intCompanyId)
	{
		if (intCompanyId)
		{
			objCallBack = function(strComments)
			{	
				//dbe('Got Comments for '+intCompanyId+': '+strComments);
				objComments = strComments.evalJSON();
				strComments = '<table cellpadding="5"><tr><td><h3>Existing Notes</h3></td></tr>' +
								'<tr><th>Date</th><th>Comment</th></tr>';
				objComments.each(function(objComment)
				{
					strComments += '<tr><td>'+objComment.strDateAdded+'</td><td>'+objComment.strComment+'</td></tr>';
				
				});
				strComments += '</table>';
				$('CommentsDiv').update(strComments);
				$('CommentsDiv').show();
			}	
	
			objRmi = new RMICaller();
			objRmi.call('CompanyMgr', 'loadComments', '{"intCompanyId":'+intCompanyId+'}', objCallBack);
		}
		
	}
	
	
	this.saveUser = function()
	{
		$('ValidateMsg').update('');

		
		boolValid = false;
		if (boolValid)
		{
			objCallBack = function(strResponse)
			{			
				//console.log('Response: '+strResponse);
				try
				{
					objResp = strResponse.evalJSON();					
				}
				catch (ex)
				{
					dbe('Json Error on Json: '+strResponse+'.\n Description: '+ex.description);
				}
				
				$('ValidateMsg').update(objResp.strMessage);	
				if (objResp.intStatus == 1)
				{	
					$('DetailsDiv').hide();					
				}
			}
			objRmi = new RMICaller();
			objRmi.sendForm('ManageUser', 'ElWait', IMG_ICON_WAIT, IMG_BTN_TICK, IMG_BTN_CROSS, objCallBack);
		}
		$('ElWait').src='images/icons/dot.jpg';
	}
		
	
	this.validateDetails = function()
	{	
		if (isDefined(IS_DEV) && IS_DEV && 1)
		{
			if (!$(KEY_STR_EMAIL).value)$(KEY_STR_EMAIL).value = 'testemp@test.com';
			if (!$(KEY_STR_PWORD).value)$(KEY_STR_PWORD).value = 'pword';
			if (!$(KEY_STR_PWORD).value)$('strPwordConfirm').value = 'pword';
			if (!$(KEY_FIRST_NAME).value)$(KEY_FIRST_NAME).value = 'Test';
			if (!$(KEY_LAST_NAME).value)$(KEY_LAST_NAME).value = 'Employer';
			if (!$('strOfficeAddr1').value)$('strOfficeAddr1').value = 'Test a';
			if (!$('strOfficeSuburb').value)$('strOfficeSuburb').value = 'Test Suburb';
			if (!$('strOfficePostCode').value)$('strOfficePostCode').value = '5000';
			if (!$('strOfficePhone').value)$('strOfficePhone').value = '84100000';
		}
		$('ValidateMsg').update('');		
		boolValid 				= true;
		if (!validateEmailString(KEY_STR_EMAIL, 'strEmailMsg'))
		{
			boolValid = false;
		}
		if ($(KEY_STR_PWORD) && !validatePassword(5, KEY_STR_PWORD, 'PwordMsg'))
		{
			boolValid = false;
		}
		else if ($(KEY_STR_PWORD) && !confirmPassword('strPwordConfirm', KEY_STR_PWORD, 'ConfMsg'))
		{
			boolReturn = false;
		}
		if (!validateText(2, 'First Name', KEY_FIRST_NAME, 'strFirstNameMsg'))
		{
			boolValid = false;
		}
		if (!validateText(2, 'Last Name', KEY_LAST_NAME, 'strLastNameMsg'))
		{
			boolValid = false;
		}
		/*if ($(KEY_TRADING_NAME).selectedIndex==0)
		{
			$(KEY_TRADING_NAME+'Msg').update('<div style="color:red;display:inline">Please select a Trade name</div>');
			boolValid = false;
		}*/
		
		//boolValid = true;
		if (boolValid)
		{
			$(KEY_ABN).value = $('strTempAbn').value;
			//dbe($(KEY_COMMENT).value+' - '+FCKeditorAPI.GetInstance('sendComment').GetXHTML());
			this.showAddressDiv();			
		}	
	}
	
	this.validateAddress = function()
	{			

		if (isDefined(IS_DEV) && IS_DEV && 1)
		{
			$('strOfficeAddr1').value = 'Test Addr1';
			$('strOfficeSuburb').value = 'Test Suburb';
			$('strOfficePostCode').value = '5000';
			$('strOfficePhone').value = '84100000';
		}
		$('ValidateMsg').update('');
		$('strOfficeAddr1Msg').update('');
		$('strOfficeSuburbMsg').update('');
		$('strOfficePostCodeMsg').update('');
		$('strOfficePhoneMsg').update('');
		
		boolValid 				= true;
		
		if (!validateText(2, 'Address 1', 'strOfficeAddr1', 'strOfficeAddr1Msg'))
		{
			boolValid = false;
		}
		if (!validateText(2, 'Suburb', 'strOfficeSuburb', 'strOfficeSuburbMsg'))
		{
			boolValid = false;
		}
		if ($('strOfficePostCode').value.length !=4 || !isNumber($('strOfficePostCode'), false))
		{
			$('strOfficePostCodeMsg').update('<div style="color:red;display:inline">Invalid Postcode</div>');
			boolValid = false;
		}
		if (!isNumber($('strOfficePhone'), false) || !($('strOfficePhone').value.length>=8 && $('strOfficePhone').value.length<=10))
		{
			$('strOfficePhoneMsg').update('<div style="color:red;display:inline">Phone must be an 8-10 digit number (ie 81000000)</div>');			
		}
		
		if (boolValid)
		{
			this.showDiscDiv();			
		}			
	}

	this.submitBusiness = function()
	{
		$('ValidateMsg').update('');
		objCallBack = function(strResponse)
		{		
			try
			{
				objResp = strResponse.evalJSON();
			}
			catch (ex)
			{
				//dbe('Json Error on Json: '+strResponse+'.\n Description: '+ex.description);
				$('ValidateMsg').update(strResponse);	
			}

			if (objResp.intStatus == 1)
			{			
				
				$('AbnSearchDiv').hide();
				$('CompNameDiv').hide();
				$('AddressDiv').hide();
				if (!isDefined(IS_DEV) || !IS_DEV)
				{
					$('DisclaimerDiv').hide();
					$('SuccessDiv').show();
				}				
			
				$('ValidateMsg').update(objResp.strMessage);		
			}
			else
			{
				$('ValidateMsg').update(objResp.strMessage);						
			}
		}
		objRmi = new RMICaller();
		objRmi.sendForm('BusForm', 'ElWait', IMG_ICON_WAIT, IMG_BTN_TICK, IMG_BTN_CROSS, objCallBack);
		this.loadComments($(KEY_INT_ID).value);	

		$('ElWait').src=IMG_ICON_NULL;
	}	

	
	this.copyAddress = function(boolChecked, strFromType, strToType)
	{
		[KEY_ADDR_1, KEY_ADDR_2, KEY_SUBURB, KEY_POSTCODE, KEY_PHONE, KEY_STATE].each(function(strField)
		{
			strFromField = strField.substr(0, 3)+strFromType+strField.substr(3);
			strToField = strField.substr(0, 3)+strToType+strField.substr(3);
			if ($(strToField) && $(strFromField))
			{
				$(strToField).value = $(strFromField).value;
			}
		});		
	}
	
	
	this.validate = function(arrValFieldMap)
	{		
		//iterate through the field map, add the values to corresponding hidden fields
		boolValid = true;
		//console.log(arrValFieldMap);
		for (var intIndex in arrValFieldMap)
		{
			strInputName 	= arrValFieldMap[intIndex];
			strElement 		= 'element_'+intIndex;
			//console.log(intIndex+': '+strInputName+' = '+strElement);
			if ($(strElement))
			{
				$(strElement).style.background="#ffffff";
				if ($(strElement).getAttribute('boolRequired')==1 && !$(strElement).value)
				{
					boolValid = false;
					$(strElement).style.background="#FFC4C4";
				}

				//console.log(strInputName+':'+intIndex+':'+$(strElement).selectedIndex);
				objEl 		= $(strInputName);
				if (isDefined($(strElement).selectedIndex))
				{
					objEl.value = $(strElement).selectedIndex;
				}
				else
				{
					objEl.value = $(strElement).value;
				}
				//console.log(intIndex+': '+strInputName+' - '+objEl.value+'!!');
				
			}	
		}
		return boolValid;
	}
		
	this.showBusDiv = function()
	{			
		$('AddressDiv').hide();	
		$('DisclaimerDiv').hide();	
		$('CompNameDiv').show();	
		$('AbnSearchDiv').show();	
	}
	
	this.showAddressDiv = function()
	{
		$('AbnSearchDiv').hide();	
		$('CompNameDiv').hide();			
		$('AddressDiv').show();	
		$('DisclaimerDiv').hide();	
	}
	
	this.showDiscDiv = function()
	{
		$('AddressDiv').hide();			
		$('DisclaimerDiv').show();	
	}
	
	this.preloadImages = function() 
	{	
		addEvent(window, 'onload', MM_preloadImages('images/navigation/rollover/forProfessionals.jpg','images/navigation/rollover/forIndividuals.jpg','images/navigation/rollover/forProducts.jpg','images/navigation/rollover/thingsYouShouldKnow.jpg','images/navigation/rollover/seminars.jpg'));
	}	
	
	this.toggleRow = function (strRowId)
	{
		$(strRowId).toggle();
	}
	
	this.toggleNotify = function(event)
	{
		if ($("optGtaYes").checked)
		{
			$("GtaNotifications").show();
		}
		else
		{
			$("GtaNotifications").hide();	
		}	
	}
	
	this.toggleNotifyEmail = function(event)
	{
		if ($("optGtaNotYes").checked)
		{
			$("NotifyEmailDisplay").show();
		}
		else
		{
			$("NotifyEmailDisplay").hide();	
		}	
	}
	
}