// Common JavaScript Functions

//----------------------------------------------------------------------------------------------------------------------------	
function SetActiveControl(obj, iControlSize)
{
	
	var strControlImageBkg = '';
		
	switch (iControlSize)
  {
		case 1: //required textbox
		strControlImageBkg = 'url(images_layout/required_field_anim.gif)';
	 	break;
		
		case 2: //required textarea
		strControlImageBkg = 'url(images_layout/required_textarea_retracted.gif)';
	 	break;
		
  }
	
	obj.style.backgroundImage = strControlImageBkg;

}
// --------------------------------------------------------------------------------------------------------------------------------
function EnableButton(strControlID)
{
	
	if (document.getElementById(strControlID).disabled == true) 
		document.getElementById(strControlID).disabled = false;	
	else
		document.getElementById(strControlID).disabled = true;		

}
// --------------------------------------------------------------------------------------------------------------------------------
function IsEmailAddressValid(str) 
{

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	
	var bEmailError = false;
	
	if (str.indexOf(at)==-1)
		bEmailError = true;

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
		bEmailError = true;

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
		bEmailError = true;

	 if (str.indexOf(at,(lat+1))!=-1)
	 	bEmailError = true;

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
	 	bEmailError = true;

	 if (str.indexOf(dot,(lat+2))==-1)
	 	bEmailError = true;
	
	 if (str.indexOf(" ")!=-1)
		bEmailError = true;

	if (bEmailError == true) 
		return false;
	else
		return true;
	
}
// --------------------------------------------------------------------------------------------------------------------------------	
function createCookie(name, value, days) 
{

	if (days) 
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
// --------------------------------------------------------------------------------------------------------------------------------
function RequiredTextPass(strControlID)	
{

	if (document.getElementById(strControlID).value == '')
	{
		//the textbox is empty, therefore mark the UI to indicate this to the user.
		MarkControlAsInvalid(strControlID)
		return false;
	}
	else
	{
		document.getElementById(strControlID).style.backgroundColor = '';
		return true;	
	}
	
}
// --------------------------------------------------------------------------------------------------------------------------------
function MarkControlAsInvalid(strControlID)
{
	document.getElementById(strControlID).style.backgroundColor = '#ffb7b7';
	document.getElementById(strControlID).style.backgroundImage = '';
	//document.getElementById(strControlID).style.backgroundImage = 'url(images_layout/required_textbox_error.gif)';
	document.getElementById(strControlID).focus();
}
// --------------------------------------------------------------------------------------------------------------------------------
function TriggerRequiredFieldAnim(strControlID)	
{
	
	if (document.getElementById(strControlID).style.backgroundColor != '#ffb7b7')	//only trigger the req. field animation if a form submit attempt hasnt been attempted
		document.getElementById(strControlID).style.backgroundImage = 'url(images_layout/required_field_anim.gif)';
}
// --------------------------------------------------------------------------------------------------------------------------------
function AddOptionToDropList(strElementID, strValue, strText)
{
	var objOption = document.createElement('option');
	
	objOption.text = strText;
  objOption.value = strValue;

  document.getElementById(strElementID).options.add(objOption);

}
//----------------------------------------------------------------------------------------------------------------------------	
function SubmitOnEnterKeyPress(strButtonID)
{
	if (event.keyCode == 13) 
		document.getElementById(strButtonID).click();
}
//----------------------------------------------------------------------------------------------------------------------------	
function TriggerCollapsingPanel(strControlID)
{

	if (document.getElementById(strControlID).style.display == "none")
		document.getElementById(strControlID).style.display = "";
	else
		document.getElementById(strControlID).style.display = "none";
		
}	 
//----------------------------------------------------------------------------------------------------------------------------	
function ValidateRequiredField(strControlID, strFormControlID)
{
	var iErrorFree = 1;
			
	if (RequiredTextPass(strControlID) == false) { iErrorFree = 0; return false; }
	
	if (iErrorFree == 1) document.getElementById(strFormControlID).submit();

}	 
//----------------------------------------------------------------------------------------------------------------------------
function DisableBtnOnClick(strButtonID, strControlSetIDs)
{

	var iErrorFree = 1;
	var strArrControlSetIDs = strControlSetIDs.split(", ");

	for ( var i=0, len=strArrControlSetIDs.length; i<len; ++i )
	{	
		if (RequiredTextPass(strArrControlSetIDs[i]) == false)
			iErrorFree = 0;	
	}
	
	if (iErrorFree == 1)
		document.getElementById(strButtonID).disabled = true;	
	
}
//----------------------------------------------------------------------------------------------------------------------------
function GenericFormValidator(strFormControlID, strControlSetIDs, strEmailControlID)
{

	var iErrorFree = 1;
	var strArrControlSetIDs = strControlSetIDs.split(", ");
	
	for ( var i=0, len=strArrControlSetIDs.length; i<len; ++i )
	{	

		if (RequiredTextPass(strArrControlSetIDs[i]) == false) {
			iErrorFree = 0;	
			return false;	
		}
	}

	//check that the email address is well formed.
	if (strEmailControlID != '') {
		if (IsEmailAddressValid(document.getElementById(strEmailControlID).value) == false) { 
			MarkControlAsInvalid(strEmailControlID)
			iErrorFree = 0;
			return false;	
		}		
	}


	
	if (iErrorFree == 1) //there are no more errors, submit the form.
		document.getElementById(strFormControlID).submit();
	
}
//----------------------------------------------------------------------------------------------------------------------------
function CheckboxUpdateHidden(strCloneFieldID, strParentControlID)
{
	
 	if (document.getElementById(strParentControlID).checked == true) 
		document.getElementById(strCloneFieldID).value = 1;
	else
		document.getElementById(strCloneFieldID).value = 0;
		
}
//----------------------------------------------------------------------------------------------------------------------------
function trim(s)
{
	return s.replace(/^\s+|\s+$/g, "");
}
//----------------------------------------------------------------------------------------------------------------------------	
function IsArray(input)
{
	return typeof(input)=='object'&&(input instanceof Array);
}
//----------------------------------------------------------------------------------------------------------------------------	
function UpdateHidden(strControlID, strValue)
{
	document.getElementById(strControlID).value = strValue;	
}
//----------------------------------------------------------------------------------------------------------------------------
function AutoFillOrderForm()
{
	document.getElementById('first_name_textbox').value = 'Louis';
	document.getElementById('last_name_textbox').value = 'Marshall';
	document.getElementById('mobile_number_textbox').value = '0401 151 599';
	document.getElementById('email_address_textbox').value = 'louis_mar@hotmail.com';	

	document.getElementById('unit_no_textbox').value = '1b';	
	document.getElementById('street_no_textbox').value = '300';	
	document.getElementById('street_name_textbox').value = 'Springvalue Rd';	
	document.getElementById('suburb_textbox').value = 'Springvale';
	document.getElementById('postcode_textbox').value = '3156';	

	document.getElementById('business_name_textbox').value = 'Top Fresh Bakery';
	document.getElementById('business_phone_textbox').value = '(03) 9343 5432';
	document.getElementById('website_address_textbox').value = 'www.topfreshbakery.com.au';	

	document.getElementById('operating_hours_textarea').value = '8:00am-5:00pm Monday to Friday, 8:00am-4:00pm Saturday, Sunday - CLOSED';
	document.getElementById('business_description_textarea').value = 'Top Fresh Bakery is Australia’s most successful bakery franchise. Over the past 30 years this Australian owned company, has grown to over 700 bakeries across three countries, serving 2.5 million customers each week. Top Fresh Bakers use real ingredients to bake unreal bread.';
	document.getElementById('search_keywords_textarea').value = 'bakery, bakeries, bread, healthy breads, baked, fresh, fresh bread, traditional and gourmet breads, real grains and seeds';		

	document.getElementById('gmail_account_textbox').value = 'louis.mar@gmail.com';		
	document.getElementById('gmail_password_textbox').value = 'lmx.75';
	document.getElementById('continue_button').disabled = false;	
	
}
//----------------------------------------------------------------------------------------------------------------------------
function DateAdd(ItemType, DateToWorkOn, ValueToBeAdded)
{
    switch (ItemType)
    {
        //date portion        
        case 'd': //add days
            DateToWorkOn.setDate(DateToWorkOn.getDate() + ValueToBeAdded)
            break;
        case 'm': //add months
            DateToWorkOn.setMonth(DateToWorkOn.getMonth() + ValueToBeAdded)
            break;
        case 'y': //add years
            DateToWorkOn.setYear(DateToWorkOn.getFullYear() + ValueToBeAdded)
            break;
        //time portion        
        case 'h': //add days
            DateToWorkOn.setHours(DateToWorkOn.getHours() + ValueToBeAdded)
            break;
        case 'n': //add minutes
            DateToWorkOn.setMinutes(DateToWorkOn.getMinutes() + ValueToBeAdded)
            break;
        case 's': //add seconds
            DateToWorkOn.setSeconds(DateToWorkOn.getSeconds() + ValueToBeAdded)
            break;
    }
    return DateToWorkOn;
}
//----------------------------------------------------------------------------------------------------------------------------
function chkObject(theVal)
{
    if (document.getElementById(theVal) != null)
        return true;
    else
       return false;
}
//----------------------------------------------------------------------------------------------------------------------------
function ValidateDate(strDayControlID, strMonthControlID, strYearControlID, strErrorMsgDivID, strStartShowingDateHiddenControlID)
{
	
	var strDate = document.getElementById(strMonthControlID).value + '/' + document.getElementById(strDayControlID).value + '/' + document.getElementById(strYearControlID).value;
	var bIsDateValid = isDate(strDate);
	
	if (bIsDateValid == false)
	{
		document.getElementById(strErrorMsgDivID).style.display = 'block';
	}
	else
	{
		document.getElementById(strErrorMsgDivID).style.display = 'none';
		document.getElementById(strStartShowingDateHiddenControlID).value = document.getElementById(strDayControlID).value + '/' + GetShortMonthName(document.getElementById(strMonthControlID).value) + '/' + document.getElementById(strYearControlID).value;
	}

}
//----------------------------------------------------------------------------------------------------------------------------
function GetShortMonthName(iMonth)
{
	var strArrMonthShortNames = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
		
	return strArrMonthShortNames[iMonth-1];

}
//----------------------------------------------------------------------------------------------------------------------------
function isDate(dateStr) 
{
	
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?
	
	if (matchArray == null) 
		return false;
	
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[5];
	
	if (month < 1 || month > 12) // check month range
	{
		document.getElementById('date_is_valid').value = '';
		return false;
	}
	
	if (day < 1 || day > 31)
	{
		document.getElementById('date_is_valid').value = '';
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31)
	{
		document.getElementById('date_is_valid').value = '';
		return false;
	}
	
	if (month == 2) // check for february 29th
	{ 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		
		if (day > 29 || (day==29 && !isleap))
		{
			document.getElementById('date_is_valid').value = '';
			return false;
		}
	}
	
	document.getElementById('date_is_valid').value = '1';
	return true; // date is valid
}
//----------------------------------------------------------------------------------------------------------------------------
function ValidateNumericOnly(objControl)
{
	//this function checks if a control holds a numeric value, if not, it kicks off!
	var strControlValue = objControl.value;
	var strControlClassName = objControl.className;
	
	if (isNaN(strControlValue) == true)
	{
		objControl.value = 0;
		objControl.style.backgroundColor = '#ffb7b7';
		objControl.style.backgroundImage = 'url(images_layout/required_numeric_only_rev_04.gif)';
	}
	
	//set the background back to normal if a number has been put into the textbox
	if (objControl.style.backgroundColor == '#ffb7b7')
	{
	
		if (isNaN(strControlValue) == false)
		{
			objControl.style.backgroundColor = '';
			
			if (strControlClassName.indexOf('req') == -1) 
				objControl.style.backgroundImage = '';
			else
				objControl.style.backgroundImage = 'url(images_layout/required_field_frame_08.gif)';			
				
		}
	
	}
	
}
//----------------------------------------------------------------------------------------------------------------------------
function ismaxlength(obj)
{
	var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
	
	if (obj.getAttribute && obj.value.length>mlength)
		obj.value=obj.value.substring(0,mlength)
		
}
//----------------------------------------------------------------------------------------------------------------------------
function GetRadioButtonValue(radioObj) 
{
	if(!radioObj)
		return "";
		
	var radioLength = radioObj.length;
	
	if(radioLength == undefined)
	
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
			
	for(var i = 0; i < radioLength; i++) 
	{
		if(radioObj[i].checked) 
		{
			return radioObj[i].value;
		}
	}
	
	return "";
}
//----------------------------------------------------------------------------------------------------------------------------
function LightUpBkg(strDivID)
{
	document.getElementById(strDivID).style.backgroundImage = 'url(images_layout/summary_item_highlight.png)';
}
//----------------------------------------------------------------------------------------------------------------------------
function ReturnBkgToNormal(strDivID)
{
	document.getElementById(strDivID).style.backgroundImage = '';
}
//----------------------------------------------------------------------------------------------------------------------------
