

window.addEvent('domready', function(){
	if ($("eventDate")) {
		new Calendar ({eventDate : "d/M/Y"});
		}	
	
	bubbles = new BubbleManager();
	bubbles.addBubble("bubble-services");
	if ($("bubble-login")) {
		bubbles.addBubble("bubble-login");
		$("bubble-login").getElements("h3").addEvent("click", function () {
			bubbles.cascadeClose();
			});
		$("button-login").addEvent("click", function () {
			bubbles.cascadeClose();
			bubbles.getBubble("bubble-login").toggle();
			});
		}
	
	
	
	
	$$("input[type=password]").each(
		function (e) {
			e.value = "";
			}
		);
		
	
	
	if ($("get-advertiser-details")) {
		$("get-advertiser-details").addEvent("submit", function (ev) {
				e = new Event(ev);
				e.stop();
				
				this.send({
					evalScripts : true
					});
				
				}
			);
		
		};
		
		
	if ($("services-input")) {
	
		$("services-input").addEvent("click", function () {
			bubbles.cascadeClose();
			bubbles.getBubble("bubble-services").toggle();
			});
		
		// Services bubble functions
		servicesOptions = $("bubble-services").getElements("input[type=checkbox]");
		$("service-selection-close").addEvent("click", function () {bubbles.cascadeClose();});
			
		servicesOptions.each(
			function (element) {
				//alert(element)
				
				if ($("services-input").value.indexOf(element.value) != -1) {
					element.checked = true;
					}
				
				element.addEvent("click", function (cv) {
					$("services-input").value = "";
					$("businessname").value = "";
					
					servicesOptions.each(
						function (o) {
							
							if (o.checked) {
								$("services-input").value += ($("services-input").value == "" ? "" : ",") + "[" + o.value +"]"
								}
							}
						);
					});
				
				element.getParent().getElement("a").addEvent("click", function (event) {
																			ev = new Event(event);
																			ev.stop();
																			element.checked = !element.checked;
																			element.fireEvent("click");
																			
																			}
																		);
				}
			);
		
		$("businessname").addEvent("click", function () 
			{
			$("services-input").value = "";
			servicesOptions.each(
				function (element) 
					{
					element.checked = false;
					}
				);
			});
		$("businessname").addEvent("keyup", function () {
			$("services-input").value = this.value;
			});
		
		
		$("suburb_postcode").addEvent("click", function () 
			{
			$("services-input").value = "";
			servicesOptions.each(
				function (element) 
					{
					element.checked = false;
					}
				);
			});
		
		$("suburb_postcode").addEvent("keyup", function () {
			$("services-input").value = this.value;
			});
			
		
		}
		
		
	});



function BubbleManager () {
	this.bubbleObjects = new Array();
	
	this.addBubble = function () {
		var thisBubble = arguments[0];
		if ($(thisBubble)) {
			this.bubbleObjects.push(thisBubble);
			this[thisBubble] = $(thisBubble);
			//alert(thisBubble)
			if (this[thisBubble].getStyle("display") == "none") {
					this[thisBubble].setOpacity(0);
					}
			
			this[thisBubble].isOpen = function () {
				return this.getStyle("opacity") == 0 ? false : true;
				}
			
			this[thisBubble].toggle = function () {
				
				
				
				var fx = new Fx.Styles(this, {
													duration: 300, wait: true, 
													onComplete : function () {
														//alert($("bubble-login").getStyle("opacity"))
														}
													});
					
				var start 	=  this.getStyle("opacity") == 1 ? 1 : 0
				var end 	=  this.getStyle("opacity") == 1 ? 0 : 1
				
				fx.options.transition = Fx.Transitions.Sine.easeIn;
				
				this.setStyles({
					'opacity': start,
					'display' : 'block'
					})
				
				this.s = {
					'opacity' : end
					};
			
				fx.start(this.s);	
				}
			}	
		
		}	
	
	this.getBubble = function () {
		if (this[arguments[0]]) {
			return this[arguments[0]];
			}		
		}
		
	this.cascadeClose = function () {
		for (var i = 0; i < this.bubbleObjects.length; ++i) {
			if (this[this.bubbleObjects[i]].isOpen()) {
				this[this.bubbleObjects[i]].toggle();
				}
			}
		}
	}

	
function loadAdvertiserTypes() {
	var selected = new Array();
	var formObj = arguments[0].form;
	//alert($(formObj.id).getElements("input[name=services]").length)
	if ($(formObj.id).getElements("input[name=services]").length > 0) {
		formObj.getElements("input[name=services]").each(
			function (e) {
				if(e.checked) {
					selected.pop(e.value);
					}
				}
			);
		}
	$("enquiry-service-listings").setText("Loading services for state " + arguments[0].value + "......");
	new Ajax(
		"ajax-state-advertisers-categories.cfm?StateCode=" + arguments[0].value + "&selected=" + selected, {
		method : "get",
		update : "enquiry-service-listings",
		evalScripts : true
		}).request();
	}	
	
function loadRegions() {
	if (arguments.length == 1)
	{	new Ajax(
		"/ajax-get-regions.cfm?StateCode=" + arguments[0].value, {
		method : "get",
		update : "advertiser-region-select",
		evalScripts : true
		}).request();
	}
	else if (arguments.length == 2)
	{	new Ajax(
		"/ajax-get-regions.cfm?StateCode=" + arguments[0].value + "&advertiserid=" + arguments[1], {
		method : "get",
		update : "advertiser-region-select",
		evalScripts : true
		}).request();
	}
	}


function updateSelection() {
	if($("edit-advertiser-regions-notice")){
		$("edit-advertiser-regions-notice").setHTML("<br />Updating....");
		}
	new Ajax(
		"/ajax-update-advertiser-region.cfm?StateCode=" + $("state-select").value + "&ZoneID=" + arguments[0].value + "&AdvertiserID=" + arguments[1] + "&checked=" + arguments[0].checked, {
		method : "get",
		update : "advertiser-region-select",
		evalScripts : true
		}).request();
	}



function loadNonPackagePurchaseItems() {
	
	new Ajax(
		"/advertiser/ajax-loadNonPackagePurchaseItems.cfm?RateCode=" + arguments[0].value, {
		method : "get",
		update : "advertiser-NonPackagePurchaseItems",
		evalScripts : true
		}).request();
	}

	
	
function setupSuburbs() {
	var regions = $$("img.region-area-suburbs")
	regions.each(
		function (e) {
			e.addEvent("click", function () {
				//alert("ajax-suburbs.cfm?StateRegionAreaID=" + this.id.toString().replace("_", ""));
				if ($("suburb-listing")) {
					$("suburb-listing").remove();	
					}
				new Element("div", {"id":"suburb-listing"}).injectAfter(e);
				$("suburb-listing").addEvent("click", function () {
					$("suburb-listing").remove()
					});
				new Ajax(
						"/ajax-suburbs.cfm?StateRegionAreaID=" + this.id.toString().replace("_", ""), {
						method : "get",
						update : "suburb-listing",
						evalScripts : true,
						onComplete : function () {
							
							var coords = e.getParent().getCoordinates();
							var loc = e.getCoordinates();
							/*
							$("suburb-listing").setStyles({
								top : coords.top - loc.top,
								left : coords.left - loc.left
								});
							*/
							}
						}).request();
				});
			}
		);
	
	}


function setProfileLink(o) {
	$('profileURLValue').setText(o.value); 
	$('member-profile-url').href = "http://" + $('member-profile-url').getText();
	
}






function nuFavourite() {
	window.external.AddFavorite(document.location.href, document.title);
	}
function nuCookie(form) {
	SetCookie ("state", form.State.Value);
	}

function SetCookie (name, value) {
	var argv = SetCookie.arguments;
	var argc = SetCookie.arguments.length;
	var expires = (argc> 2) ? argv[2] : null;
	var path = (argc> 3) ? argv[3] : null;
	var domain = (argc> 4) ? argv[4] : null;
	var secure = (argc> 5) ? argv[5] : false;
	document.cookie = name + "=" + escape (value) +
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
	((path == null) ? "" : ("; path=" + path)) +
	((domain == null) ? "" : ("; domain=" + domain)) +
	((secure == true) ? "; secure" : "");
	}
	
	
			function check_date(field){
				var checkstr = "0123456789";
				var DateField = field;
				var Datevalue = "";
				var DateTemp = "";
				var seperator = "/";
				var day;
				var month;
				var year;
				var leap = 0;
				var err = 0;
				var i;
				err = 0;
				DateValue = DateField.value;

				for (i = 0; i < DateValue.length; i++) {
					if (checkstr.indexOf(DateValue.substr(i,1))>= 0) {
						DateTemp = DateTemp + DateValue.substr(i,1);
					}
				}
				DateValue = DateTemp;
			
				if (DateValue.length == 6) {
					DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
				if (DateValue.length != 8) err = 1;
			
				day = DateValue.substr(0,2);
				month = DateValue.substr(2,2);
				year = DateValue.substr(4,4);
			
				if (year == 0) err = 1;
				if ((month < 1) || (month> 12)) err =1
				if (day < 1) err = 1;
				if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) leap = 1;
				if ((month == 2) && (leap == 1) && (day> 29)) err = 1;
				if ((month == 2) && (leap != 1) && (day> 28)) err = 1;
				if ((day> 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
					err = 1;
				}
				if ((day> 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
					err = 1;
				}
				if ((day == 0) && (month == 0) && (year == 00)) {
					err = 0; day = ""; month = ""; year = ""; seperator = "";
				}
				if (err != 0)
				{
					alert ('Please enter a valid date'); return (false);
				}
			}

			function emailCheck (emailStr) {
			var checkTLD=1;
			var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
			var emailPat=/^(.+)@(.+)$/;
			var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
			var validChars="\[^\\s" + specialChars + "\]";
			var quotedUser="(\"[^\"]*\")";
			var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
			var atom=validChars + '+';
			var word="(" + atom + "|" + quotedUser + ")";
			var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
			var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
			var matchArray=emailStr.match(emailPat);

			if (matchArray==null) {
				alert("Email address seems incorrect (check @ and .'s)");
				return false;
			}
			var user=matchArray[1];
			var domain=matchArray[2];
			for (i=0; i<user.length; i++) {
				if (user.charCodeAt(i)>127) {
					alert("Ths username contains invalid characters.");
					return false;
			   }
			}
			for (i=0; i<domain.length; i++) {
				if (domain.charCodeAt(i)>127) {
					alert("Ths domain name of your email address contains invalid characters.");
					return false;
			  }
		}
		if (user.match(userPat)==null) {
			alert("The username doesn't seem to be valid.");
			return false;
		}
		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null) {
			for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
					alert("Destination IP address is invalid!");
					return false;
				}
			}
			return true;
		}
		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		for (i=0;i<len;i++) {
			if (domArr[i].search(atomPat)==-1) {
				alert("The domain of your email address name does not seem to be valid.");
				return false;
			 }
		}
		if (checkTLD && domArr[domArr.length-1].length!=2 && 
			domArr[domArr.length-1].search(knownDomsPat)==-1) {
			alert("The address must end in a well-known domain or two letter " + "country.");
			return false;
		}
		if (len<2) {
			alert("This email address is missing a hostname!");
			return false;
		}
		return true;
	}