/*- Audio Player
 * Modified from orinal by: Gustavo Ribeiro Amigo. Copyright (c) 2006, Gustavo Ribeiro Amigo <http://jssoundkit.sourceforge.net/>
 */
var players = new Array();

function Sound(options) {
	this.options = options;
	if(this.options == undefined) this.options = new Object();
	if(!this.options.swfLocation) {
		this.options.swfLocation = "http://ontheinside.info/wp-content/themes/7thart/sound/SoundBridge.swf";
	}
	if(Sound.id_count == undefined) {
		Sound.id_count = 1;
	} else {
		Sound.id_count ++;
	}
	if(Sound.instances == undefined) {
		Sound.instances = new Object();
	}
	this.object_id = "object_id_" + Sound.id_count;
	Sound.instances[this.object_id] = this;
	movie_swf = this.options.swfLocation;
	movie_id = this.object_id;
	movie_element = "";
	movie_element += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="0" height="0"'; 
	movie_element += ' id="' + movie_id+ '"'; 
	movie_element += ' align="left">';
	movie_element += '<param name="movie" value="'+movie_swf+'" />';
	movie_element += '<param name="quality" value="high" />';
	movie_element += '<param name="bgcolor" value="#aaaaaa" />';
	movie_element += '<param name="FlashVars" value="id='+ movie_id +'"/>';
	movie_element += '<param name="allowScriptAccess" value="always"/>';
	movie_element += '<embed src="'+movie_swf+'" FlashVars="id='+ movie_id +'"'; 
	movie_element += ' allowScriptAccess="always" quality="high" bgcolor="#aaaaaa" width="0" height="0"'; 
	movie_element += ' name="' + movie_id + '" align="left" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	movie_element += '</object>';
	if( $E('div','__sound_flash__') == undefined) {
		var element = new Element('div').injectInside(document.body);
		element.id = "__sound_flash__";
	}
	$E('div','__sound_flash__').innerHTML += movie_element;
}
function Player () {
	this.sound = new Sound();
	this.stoped = true;
}
Sound.prototype.loadSound = function(url, streaming) {
	return Sound.__call('loadSound',this.object_id, url, streaming);
}
Sound.prototype.start = function() {
	return Sound.__call('start', this.object_id);
}
Sound.prototype.stop = function() {
	return Sound.__call('stop', this.object_id);
}
Sound.trace = function(value, isJavascript) {
	if($E('','sound_tracer') != undefined) {
		if(isJavascript == undefined || isJavascript == true) {
			$E('','sound_tracer').value += 'Javascript: ' + value + '\n';
		} else {
			$E('','sound_tracer').value += value + '\n';
		}
	}
}
Sound.__thisMovie = function(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName]
	}
	else {
		return document[movieName]
	}
}
Sound.__call = function () {
	Sound.trace('Sound.__call '+ arguments[0]+ ' on object_id ' + arguments[1] );    
	var functionname = arguments[0];
	var object_id = arguments[1];        
	var justArgs = new Array();
	if (arguments.length > 1)   {
		for (var i = 2; i < arguments.length; i++ ) {
			justArgs.push(arguments[i]);
		}
	}        
	return Sound.__thisMovie(object_id).proxyMethods(functionname, justArgs);
}
Player.prototype.onPlayButtonClick = function(url,button) {
	var buttonPlay = button;
	if(this.stoped) {
		this.track = url;
		$(buttonPlay).firstChild.nodeValue="Stop";
		this.sound.loadSound(this.track, true);
		this.sound.start();
		this.stoped = false;
	} else {
		$(buttonPlay).firstChild.nodeValue="Play";
		this.sound.stop();
		this.stoped = true;
   }
}
Sound.cleanupSWFs = function() { // fixes bug in fp9 see http://blog.deconcept.com/2006/07/28/swfobject-143-released
	if (window.opera || !document.all) return;
	var objects = $$('OBJECT');
	for (var i=0; i < objects.length; i++) {
		objects[i].style.display = 'none';
		for (var x in objects[i]) {
			if (typeof objects[i][x] == 'function') {
				objects[i][x] = function() {};
			}
		}
	}
}
Sound.prepUnload = function() {
	__flash_unloadHandler = function() {};
	__flash_savedUnloadHandler = function() {};
	if (typeof window.onunload == 'function') {
		var oldUnload = window.onunload;
		window.onunload = function() {
			Sound.cleanupSWFs();
			oldUnload();
		}
	} else {
		window.onunload = Sound.cleanupSWFs;
	}
}
if (typeof window.onbeforeunload == 'function') {
	var oldBeforeUnload = window.onbeforeunload;
	window.onbeforeunload = function() {
		Sound.prepUnload();
		oldBeforeUnload();
	}
} else {
	window.onbeforeunload = Sound.prepUnload;
}

var players = new Array();
function playersInit(name) {
	players[players.length] = name;
}

function playersCreate() {
	document.write("\<script type=\"text\/javascript\"\>\n");
	document.write("\/\/ \<![CDATA[\n");
	players.each(function(player) {
		document.write("var " + player + " = new Player();\n");
	});
	document.write("\/\/ ]]\>\n");
	document.write("\<\/script\>\n");
}



/*- Search/filter functions */
function setForm() {
	if($E("#searchform")) {
		$E("#searchform").onsubmit = function() {
			$E("#info_header").setHTML("<table cellspancing=\"0\" callpadding=\"0\" border=\"0\"><tr><td style=\"padding-right:10px\"><img src=\"http://ontheinside.info/wp-content/themes/7thart/images/loading_white.gif\" /></td><td>Loading. Please wait for search results...</td></tr></table>");
		}
	}
	if ($E("#email", "info")) {
		$E("#email", "info").setProperty("value", "Enter valid email address...");
		$E("#email", "info").setStyle("color", "#888");
		$E("#email", "info").addEvent("focus", function() {
			if (this.value.test("Enter valid email address...")) {
				this.setProperty("value", "");
				this.setStyle("color", "#444");
			}
		});
	}
	$ES("div.expandable", "top").each(function(obj) {
		setExpandableFilters(obj);
	});
	$ES("ul.selectReplacement", "top").each(function(obj) {
		selectReplacement(obj);
	});
}


function setExpandableFilters(div) {
	div.onmouseover = function() {
		var id = $ES("div", this)[0].id;
		$E("#" + id).removeClass("hidden");
		if(id == "headerRecommendationsBox" && toutRecommendations) clearTimeout(toutRecommendations);
	}
	div.onmouseout = function() {
		var id = $ES("div", this)[0].id;
		$E("#" + id).addClass("hidden");
		if(id == "headerRecommendationsBox") toutRecommendations = setTimeout(clearRecommendationsBox, 100);
	}
}
 /*- Option/Select replacement */
function selectReplacement(obj) {
	$ES("li", obj).each(function(li) {
		if(li.innerHTML != "&nbsp;") {
			li.onmouseover = function() {
				this.addClass("hover");
			}
			li.onmouseout = function() {
				this.removeClass("hover");
			}
			li.onclick = function() {
				selectMe(this);
			}
		} else li.style.cursor = "default";
	});
}

function selectMe(obj) {

	var ul = obj.parentNode;
	
	if(ul.id == "recommendations_select") {
		openRecommendationsFilter(obj);
		return;
	}
	
	// Reseting the brother's ul lis for 2 columns list
	if(ul.id.indexOf("occupation_select") != -1) resetBrotherLIs("occupation_select", ul.id);
	else if(ul.id.indexOf("neighborhood_select") != -1) resetBrotherLIs("neighborhood_select", ul.id);
	else if(ul.id.indexOf("feature_select") != -1) resetBrotherLIs("feature_select", ul.id);
	
	$ES("li", ul).each(function(li) {
		
		if (li != obj) {
			
			li.removeClass("default");
			li.removeClass("selected");
			li.onclick = function() {
				selectMe(this);
			}
			
		} else {
			
			if (obj.innerHTML.test(" all")) {
				obj.className = "default";
				if(ul.parentNode.id.indexOf("Recommendations") != -1) updateRecommendationsItem(ul.id);
			} else {
				obj.className = "selected";
				if(ul.parentNode.id.indexOf("Recommendations") != -1) updateRecommendationsItem(ul.id, obj);
			}
			
			var url = "http://ontheinside.info/?";
			
			
			if ($E("li.selected", "category_select") && !$E("li.default", "category_select")) {
				url += "filter_category=" + $E("li.selected", "category_select").id + "&";
			}
			
			if ($E("li.selected", "neighborhood_select") && !$E("li.default", "neighborhood_select")) {
				url += "filter_neighborhood=" + $E("li.selected", "neighborhood_select").id + "&";
			} else if ($E("li.selected", "neighborhood_select2") && !$E("li.default", "neighborhood_select2")) {
				url += "filter_neighborhood=" + $E("li.selected", "neighborhood_select2").id + "&";
			}
			
			if ($E("li.selected", "price_select") && !$E("li.default", "price_select")) {
				url += "filter_price=" + $E("li.selected", "price_select").id + "&";
			}
			
			if ($E("li.selected", "feature_select") && !$E("li.default", "feature_select")) {
				url += "filter_feature=" + $E("li.selected", "feature_select").id + "&";
			} else if ($E("li.selected", "feature_select2") && !$E("li.default", "feature_select2")) {
				url += "filter_feature=" + $E("li.selected", "feature_select2").id + "&";
			}
			
			if ($E("li.selected", "occupation_select") && !$E("li.default", "occupation_select")) {
				url += "filter_occupation=" + $E("li.selected", "occupation_select").id + "&byPersonality&";
			} else if ($E("li.selected", "occupation_select2") && !$E("li.default", "occupation_select2")) {
				url += "filter_occupation=" + $E("li.selected", "occupation_select2").id + "&byPersonality&";
			}
			
			//document.title = (url);
			
			$E("#info_header").setHTML("<table cellspancing=\"0\" callpadding=\"0\" border=\"0\"><tr><td style=\"padding-right:10px\"><img src=\"http://ontheinside.info/wp-content/themes/7thart/images/loading_white.gif\" /></td><td>Loading. <a href=\"" + url + "\">Please wait for filter results or click here...</a></td></tr></table>");
			url += "ajaxSearch";
			ajaxSearch(url, updateHeaderInfo);
			
		}
		
	});
	
}
function resetBrotherLIs(family_name, current_id) {
	
	var brother_ul = ((current_id == family_name) ? $E("#" + family_name + "2") : $E("#" + family_name));
	
	$ES("li", brother_ul).each(function(li) {
		li.removeClass("default");
		li.removeClass("selected");
		li.onclick = function() {
			selectMe(this);
		}
	});
	
}

function openRecommendationsFilter(obj) {
	var target_name = obj.id.substr(5);
	var div = $E("#headerRecommendations" + target_name + "Box");
	if(div.hasClass("hidden")) div.removeClass("hidden");
	else div.addClass("hidden");
	/*
	var arrDivs = ["Category", "Neighborhood", "Price", "Feature"];
	for(var i = arrDivs.length; i--;) {
		var divItems = $E("#headerRecommendations" + arrDivs[i] + "Box");
		if(arrDivs[i] == target_name) divItems.removeClass("hidden");
		else divItems.addClass("hidden");
	}
	*/
}
var toutRecommendations;
function clearRecommendationsBox() {
	$ES("div", "headerRecommendationsBox").addClass("hidden");
}
function updateRecommendationsItem(group, obj) {
	
	var selected_text = (obj ? " - " + obj.innerHTML : "");
	
	var group = (group.split("_")[0]);
	group = group.charAt(0).toUpperCase() + group.substr(1);
	
	$ES("span", $E("#liRec" + group))[0].innerHTML = "<nobr>By " + group + selected_text + "</nobr>";
	
}


/*- Ajax search */
function ajaxSearch(url, fncCallback) {
	new Ajax(url, { update: "loop", method: "GET", onComplete:fncCallback }).request();
}



/*- Updating of header info after Ajax call */
function updateHeaderInfo() {
	$E("#info_header").innerHTML = $E("#loop_info_header").innerHTML;
}

/*- Left navbar function */
function expandNavList(ul) {
	ul.style.height = "450px";
	ul.style.overflow = "auto";
}
function retractNavList(ul) {
	ul.style.height = "300px";
	ul.style.overflow = "hidden";
}



/*- Load DOM dependant functions */
window.onDomReady(function(){
	setForm();
});
