// Load Google Maps Per Location Page
   var initializeGmap = function(ll) {
	   
	  YAHOO.util.Dom.setStyle(ll.element, "height", ll.height+"px");
	  YAHOO.util.Dom.setStyle(ll.element, "width", ll.width+"px");
	   
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById(ll.element));
		var geocoder = null;
		geocoder = new GClientGeocoder();
     
		
		if (ll.address) {
	
		   if (geocoder) {geocoder.getLatLng(ll.address,
          		function(point) {
					
					map.setCenter(point, 13);
					var marker = new GMarker(point);
              		map.addOverlay(marker);
          	  }
        	);
      	  }
		}
		else {
			var center = new GLatLng(ll.lat, ll.long);
			map.setCenter(center, 13);
        	map.addControl(new GSmallMapControl());
        	map.addControl(new GMapTypeControl());
			var marker = new GMarker(center);

			// Add the Marker
			map.addOverlay(marker);
		}

      }
    }
	
	var showAddress = function(address) {
      
	  
    }

	
	YAHOO.util.Event.onAvailable("kalina-project-map", initializeGmap, {lat:-33.702635, long:150.90816, element:"kalina-project-map", width:440, height:270})
	YAHOO.util.Event.onAvailable("woongarrah-project-map", initializeGmap, {lat:-33.240339, long:151.484041, element:"woongarrah-project-map", width:440, height:270})
	YAHOO.util.Event.onAvailable("terralla-project-map", initializeGmap, {lat:-34.906645, long:150.613772, element:"terralla-project-map", width:440, height:270})
	YAHOO.util.Event.onAvailable("glenmorepark-project-map", initializeGmap, {lat:-33.781791, long:150.68208, element:"glenmorepark-project-map", width:440, height:270})
		
	// Make clickable project links
	var initProjectSelectionPage = function(e){
		
		var projectListing = '';
				
		if (projectListing = YAHOO.util.Dom.get("project-listing")){
		
			var projects = YAHOO.util.Dom.getElementsByClassName("project", "div", projectListing);
			
			var highlight = function(e, o){
				YAHOO.util.Dom.addClass(o, 'hover');
			}
			
			var unhighlight = function(e, o){
				YAHOO.util.Dom.removeClass(o, 'hover');
			}
			
			var mouseclick = function(e, o){
				
				var linkTemp = '';
				if (linkTemp = YAHOO.util.Dom.getElementsByClassName("project-link", "a", o)[0]){
					window.location = YAHOO.util.Dom.getAttribute(linkTemp, "href");	
				}
			}
			
			for ( var i=0; i<projects.length; ++i ){
				
				//Skip Future Projects
				if(!YAHOO.util.Dom.hasClass(projects[i], "future")){
					
					YAHOO.util.Event.addListener(projects[i], 'mouseover', highlight, projects[i]);
					YAHOO.util.Event.addListener(projects[i], 'mouseout', unhighlight, projects[i]);
					YAHOO.util.Event.addListener(projects[i], 'click', mouseclick, projects[i]);
					
				}
				
			}  // END FOR
		} // END IF
	} // END FUNCTION
	YAHOO.util.Event.onDOMReady(initProjectSelectionPage);
	
	// Make clickable search results
	var initResultsPage = function(e){
		
		var searchResults = '';
				
		if (searchResults = YAHOO.util.Dom.get("search-results")){
		
			var results = YAHOO.util.Dom.getElementsByClassName("result", "div", searchResults);
			
			var highlight = function(e, o){
				YAHOO.util.Dom.addClass(o, 'hover');
			}
			
			var unhighlight = function(e, o){
				YAHOO.util.Dom.removeClass(o, 'hover');
			}
			
			var mouseclick = function(e, o){
				
				var linkTemp = '';
				if (linkTemp = YAHOO.util.Dom.getElementsByClassName("result-link", "a", o)[0]){
					window.location = YAHOO.util.Dom.getAttribute(linkTemp, "href");	
				}
			}
			
			for ( var i=0; i<results.length; ++i ){
				
				YAHOO.util.Event.on(results[i], 'mouseover', highlight, results[i]);
				YAHOO.util.Event.on(results[i], 'mouseout', unhighlight, results[i]);
				YAHOO.util.Event.on(results[i], 'click', mouseclick, results[i]);
				
			}  // END FOR
		} // END IF
	} // END FUNCTION
	YAHOO.util.Event.onDOMReady(initResultsPage);
	
	
	function invalid(str) {
  var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
  var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
  if (!reg1.test(str) && reg2.test(str)) { // if syntax is valid
    return false;
  }
  return true;
}

function validate(fObj) {
	  
	  	// First and Last Name
	  	if(fObj.firstname.value === "") {
			
			alert("Please enter your first name.");
			return false;
		}
		  
		  if(fObj.lastname.value === "") {
			
			alert("Please enter your last name.");
			return false;
		}
		
		// Emaill address
		if(invalid(fObj.allamEmail.value) || fObj.allamEmail.value === ""){
			alert("Please enter a valid E-Mail address.");
			return false;
	  	}	
		
		// Verifcation Code
		if(fObj.contactNumber.value === "") {
			
			alert("Please enter a contact number.");
			return false;
		}
		return true;
		
}


function send(fObj) {
	
	
		var sUrl = YAHOO.util.Dom.getAttribute(YAHOO.util.Dom.get("listingContactForm"), "action");
		
		function baCareerFormSuccess(o) {
			
			
		
			if(o.responseText !== undefined){ 
						
			
				//If the transaction was successfull
				if(o.responseText == "SUCCESS"){
	
					
					alert("Your enquiry has been successfully sent.");
					YAHOO.allam.container.contact.hide();
					
					fObj.reset();
				
				}
			} // end if


		} // end function
		
		function handleFailure(o) {}
			
		var callback = 
		{ 
		  success:baCareerFormSuccess
		}
		
		
		// the second argument is true to indicate file upload. 
		YAHOO.util.Connect.setForm(fObj); 

		
		var transaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback); 	
		
	}
	
function sendCallback(e) {
		
		YAHOO.util.Event.stopEvent(e);
		
		var sendButton = document.getElementById("send-contact-form");
		
		if (validate(YAHOO.util.Dom.get("listingContactForm"))) {send(YAHOO.util.Dom.get("listingContactForm"));}
		
	} 
	
	// Listing Contact Form (Module Overlay using YUI)
	var initListing = function(){
		
		YAHOO.namespace("allam.container");
		
			YAHOO.allam.container.contact =  
	        new YAHOO.widget.Panel("contact",   
	            { width:"727px",  
	              fixedcenter:true,  
	              close: true,  
	              draggable:false,  
	              zindex:4, 
	              modal:true, 
	              visible:false 
	            }  
	        ); 
			
	var kl = new YAHOO.util.KeyListener(document, { keys:27 },                               
	                                              { fn:YAHOO.allam.container.contact.hide, 
	                                                scope:YAHOO.allam.container.contact, 
	                                                correctScope:true } ); 
	 
	YAHOO.allam.container.contact.cfg.queueProperty("keylisteners", kl);
	 
	 
	YAHOO.allam.container.contact.setHeader("Email Allam About This Listing");  
	YAHOO.allam.container.contact.setFooter("&nbsp;");
	YAHOO.allam.container.contact.render(document.body);
	
	YAHOO.util.Dom.addClass(document.body, "yui-skin-sam");
	
	var openContact = function(e, o){
		YAHOO.util.Event.stopEvent(e);
		
		// Contact Form Content
		var content = 			'<div class="content"><h1>' + o.address + '</h1>';
		content = content + '<form action="php/emailAllam.php" method="post" id="listingContactForm">';
		content = content + '<input value="' + o.listingID + '" type="hidden" name="listingID" id="listingID" />';
		content = content + '<input value="' + o.address + '" type="hidden" name="listingAddress" id="listingAddress" />';
		content = content + '<label><strong>First Name</strong> (required):<input type="text" name="firstname" id="firstname" /></label>';
		content = content + '<label><strong>Last Name</strong> (required):<input type="text" name="lastname" id="lastname" /></label>';
		content = content + '<label><strong>Phone Number</strong> (required):<input type="text" name="contactNumber" id="contactNumber" /></label>';
		content = content + '<label><strong>Email Address</strong> (required):<input type="text" name="allamEmail" id="allamEmail" /></label>';
		content = content + '<label class="label-comments"><strong>Comments:</strong><br /><textarea name="comments" id="comments" rows="5" cols="40"></textarea></label>';
		content = content + '<label class="checkbox"><input type="checkbox" name="subscribe" id="subscribe" checked="checked" />';
		content = content + 'Yes, I would like to be join the mailing list, and be contacted about special offers and promotions as well as';
		content = content + 'information regarding Allam\'s projects via email and regular postal mail. For more information please read our <a href="privacy.html">privacy policy.</a></label>';
		content = content + '<label class="checkbox"><input type="checkbox" name="copyEmail" id="copyEmail" />';
		content = content + 'Send a copy of this email to myself via the address provided above.</label>';
		content = content + '<button id="send-contact-form" name="Send Details" type="submit"/></div>';
		
		YAHOO.allam.container.contact.setBody(content); 		
		YAHOO.util.Event.on('send-contact-form', "click", sendCallback);
		YAHOO.allam.container.contact.show();
	}
	
	
	YAHOO.util.Event.on("email-listing", "click", openContact, {"address":YAHOO.util.Dom.get("listingAddress").innerHTML, "listingID":YAHOO.util.Dom.get("listingIDHidden").innerHTML});
	}
	YAHOO.util.Event.onDOMReady(initListing);
	
// Interactive Map On Homepage
var initMap = function(){
	
	var paramsGallery = {};
	swfobject.embedSWF("swf/interactiveMap.swf", "stateMap", "335", "330", "9.0.0", "", "", paramsGallery);
	
}
YAHOO.util.Event.onAvailable("stateMap", initMap)

var initTools = function(){
	
	var temp = YAHOO.util.Dom.getStyle(document.body, "font-size");
	
	var bodySize = parseInt(temp.slice(0, 2));
	
	var increaseFontSize = function(e, o){
		
		YAHOO.util.Event.stopEvent(e);
		
		var temp = YAHOO.util.Dom.getStyle(document.body, "font-size");
	
		var bodySize = parseInt(temp.slice(0, 2));
		
		if (o.direction === "increase"){
		
	   	   YAHOO.util.Dom.setStyle(document.body, "font-size", (bodySize+1)+"px");
		 
		}
		else if (o.direction === "decrease") {
			YAHOO.util.Dom.setStyle(document.body, "font-size", (bodySize-1)+"px");
		}
		//Reset Font Sizes
		else {
			YAHOO.util.Dom.setStyle(document.body, "font-size", "13px");	
		}
	
	}
	
	var printPage = function(e){
		YAHOO.util.Event.stopEvent(e);
		window.print();
	}
	
	
	YAHOO.util.Event.on("increaseText", "click", increaseFontSize, {"direction":"increase"});
	YAHOO.util.Event.on("decreaseText", "click", increaseFontSize, {"direction":"decrease"});
	YAHOO.util.Event.on("printPage", "click", printPage);
	
}
YAHOO.util.Event.onDOMReady(initTools);

//Initialise Project Photo Gallery Previous and Next Buttons
var initProjectPhotos = function(e){
	
	if(YAHOO.util.Dom.get("project-gallery") != null){
		var count  = 0;
		
		
		var images = YAHOO.util.Dom.getChildren("project-gallery");
		images.splice(0, 1);
		var limit = images.length-1;
		var mainImage = YAHOO.util.Dom.get("galleryMainImage");
		var mainImageURL = YAHOO.util.Dom.getAttribute(mainImage, "href");
	}
	
	var nextImage = function(e, o){
		
		YAHOO.util.Event.stopEvent(e);
		
		if(o.type === "next"){
			count = count+1;
			if(count > limit){
				count = 0;
			}
		}
		if(o.type === "previous"){
			count = count-1;
			if(count < 0){count = limit;}
		}
		
		//if(count === 0 ){
		//	YAHOO.util.Dom.setAttribute(YAHOO.util.Dom.getFirstChild(o.mainImage), "src", o.mainImageURL);	
		//	YAHOO.util.Dom.setAttribute(o.mainImage, "href", o.mainImageURL);
		//}
			
			YAHOO.util.Dom.setAttribute(YAHOO.util.Dom.getFirstChild(o.mainImage), "src", YAHOO.util.Dom.getAttribute(o.images[count], "href"), this);
			YAHOO.util.Dom.setAttribute(o.mainImage, "href", YAHOO.util.Dom.getAttribute(o.images[count], "href"), this);
		
		
	
	}
	
	YAHOO.util.Event.on(YAHOO.util.Dom.get("photos-next"), "click", nextImage, {"images": images, "mainImage":mainImage,"mainImageURL":mainImageURL, "type":"next", "limit":limit}, this);
	YAHOO.util.Event.on(YAHOO.util.Dom.get("photos-previous"), "click", nextImage, {"images": images, "mainImage":mainImage,"mainImageURL":mainImageURL, "type":"previous", "limit":limit}, this);
	
	var startSlideShow = function(e,o){
		YAHOO.util.Event.stopEvent(e);
		Lightbox.start(o.start[count]);
	}
	
	YAHOO.util.Event.on(YAHOO.util.Dom.get("startSlideShow"), "click", startSlideShow, {"start":images}, this);
	YAHOO.util.Event.on(YAHOO.util.Dom.get("galleryMainImage"), "click", startSlideShow, {"start":images}, this);

}
YAHOO.util.Event.onDOMReady(initProjectPhotos);