var all_json = {
			url1: '',
			url2: '',
			url3: '',
			url4: '',
			url5: ''
	};
	
$(document).ready(function(){
   		
	fbload();
   	setInterval(fbupdateall, 5000);		
		//mouseover effects
   $(".element").mouseenter(function(){		
		$(this).children("a").show();		
	});
	
	$(".element").mouseleave(function(){		
		$(this).children("a").hide();		
	});

		    
	  var $container = $('#container');
	
	  $container.isotope({
	    masonry: {
	      columnWidth: 180
	    },
	    sortBy: 'random',
		layoutMode: 'fitRows',
	    getSortData: {
	      number: function( $elem ) {
	        var number = $elem.hasClass('element') ? 
	          $elem.find('.number').text() :
	          $elem.attr('data-number');
	        return parseInt( number, 10 );
	      },
	      alphabetical: function( $elem ) {
	        var name = $elem.find('.name'),
	            itemText = name.length ? name : $elem;
	        return itemText.text();
	      }
	    }
	  });
	  
		
		var $optionSets = $('#options .option-set'),
		  $optionLinks = $optionSets.find('a');
		
		$optionLinks.click(function(){
		var $this = $(this);
		// don't proceed if already selected
		if ( $this.hasClass('selected') ) {
		  return false;
		}
		var $optionSet = $this.parents('.option-set');
		$optionSet.find('.selected').removeClass('selected');
		$this.addClass('selected');
		
		// make option object dynamically, i.e. { filter: '.my-filter-class' }
		var options = {},
		    key = $optionSet.attr('data-option-key'),
		    value = $this.attr('data-option-value');
		// parse 'false' as false boolean
		value = value === 'false' ? false : value;
		options[ key ] = value;
		if ( key === 'layoutMode' && typeof changeLayoutMode === 'function' ) {
		  // changes in layout modes need extra logic
		  changeLayoutMode( $this, options )
		} else {
		  // otherwise, apply new options
		  $container.isotope( options );
		}
		
		return false;
	});
	    
    
	
	 //check for scroll on load and add scroll event and group click events
    checkScrollAddPanels($container);
    $(window).scroll(function(){
		checkScrollAddPanels($container);
    });
    
    $('a[data-option-value="*"], a[data-option-value=".approach"], a[data-option-value=".people"], a[data-option-value=".community"], a[data-option-value=".marketplace"], a[data-option-value=".climate"]').click(function(){
    	checkScrollAddPanels($container,2000);
    	
    	/* footer link */
    	var oclass = $(this).attr('data-option-value');
    	oclass = oclass.replace('.','');
    	$('.footer-link').attr('class','footer-link');
    	if (oclass != "*") {
    		$('.footer-link').addClass(oclass).children('a' + $(this).attr('data-option-value')).show().siblings().hide();
    	}
    	
    }); 
    
    if ($.browser.msie && $.browser.version.substr(0,1)<7) { //Sizing is really slow in IE6, so check again after 7 seconds
    	$('a[data-option-value="*"], a[data-option-value=".approach"], a[data-option-value=".people"], a[data-option-value=".community"], a[data-option-value=".marketplace"], a[data-option-value=".climate"]').click(function(){
    		setTimeout(function(){ 
    			checkScrollAddPanels($container);
    		}, 7000);
    	});
    	
    }
	
});
	 
	 
		
function checkScrollAddPanels(target, delay) {
	if (!delay) {
		delay = 500;
	}
	if (($('#extra .element').size() > 0) && (!target.loadingpanels)) {
		target.loadingpanels = true; //prevent scrolling event from calling this again until its done
		setTimeout(function(){ //delay before checking
			target.loadingpanels = false;
			if (($(document).height() <= ($(window).scrollTop() + $(window).height() + 60)) || ($(document).height() <= $(window).height())) { //if scroll is at bottom, or if window is bigger than document size (i.e. no scroll bar)	
				//move this above "if", if the space on homepage bottom is too big
				var type = $('#filter li a.selected').attr('data-option-value'); //check which is the active filter
				
				if (type == "*") {
					$('#extra .element').each(function(i){
						if (i < 5) {
						
							target.append(this);
							target.isotope( 'appended', $( this ) ); 
							//$(this).appendTo('#container');    // once they're loaded, append them to our content area
							//console.log(this);
						} else {
							checkScrollAddPanels(target);
					 		return false;
						}
					});
				} else {
					$('#extra ' + type).each(function(i){
						if (i < 5) {
							target.append(this);
							target.isotope( 'appended', $( this ) );
						} else {
							checkScrollAddPanels(target);
					 		return false;
						}
					});
				}
			
				//fbupdateall();
			}
		}, delay);
	}	
}


function fbload() {
	var flag = true;
	
	var list = { 
			url1: 'Our Approach',
			url2: 'Our People',
			url3: 'Our Community',
			url4: 'Our Marketplace',
			url5: 'Our Climate' };
	var URL = 'http://crsadmin.stockland.com.au/?q=get_json&callback=?';
	$.getJSON(URL,function(data){
		if(data.error){
			setTimeout(fbload,'10000');
			flag= false;
		}
		else {
			$.map(list, function(value, key) {
				window.all_json[key] = data[value];
				fbupdateone(key,data[value]);
			});
		}
	});
}

function fbupdateone(key, data) {
	var bubble;
	
	if (data) {
		bubble = data[Math.floor(Math.random() * data.length)];
	}
	
	var html = '';
	if (bubble) {
		if(bubble.from){
			//alert(bubble.message);
			html += '<p><span>';
			html += bubble.from.name;
			html += '</span> says <span class="comment">';
			html += bubble.message;
			html += '</span></p><img src="../../images/logo-fb.gif" alt="" />'
			
			switch(key){
			case 'url1':
				html += '<a href="/sustainability/2011/our-approach.htm" class="more"><span>';
				html += 'Our Approach';
			 	break;
			case 'url2':
				html += '<a href="/sustainability/2011/our-people.htm" class="more"><span>';
				html += 'Our People';
				break;
			case 'url3':
				html += '<a href="/sustainability/2011/our-community.htm" class="more"><span>';
				html += 'Our Community';
				break;
			case 'url4':
				html += '<a href="/sustainability/2011/our-marketplace.htm" class="more"><span>';
				html += 'Our Marketplace';
				break;
			case 'url5':
				html += '<a href="/sustainability/2011/our-climate-and-environment.htm" class="more"><span>';
				html += 'Our Climate and Environment';
				break;
			}
			html += '</span><span class="arrow">Learn more</span></a><span class="baseline">&nbsp;</span>';
		}
		$("#" + key).html(html);
	}

}

function fbupdateall() {

	$.map(window.all_json, function(value, key) {
		fbupdateone(key, value);
	});	
}

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}
