/*
 * loadCookies
 * EACH CLASS .bls HAS A POSSIBLE SESSION COOKIE STORED FOR IT, THIS WILL SEARCH FOR THE COOKIE AND SET THE CORRESPONDING FIELD WITH THE VALUE IN THE COOKIE
 */
function loadCookies(){
	$(".bls").each( function() {
		if($.cookie($(this).attr("id"))===undefined || $.cookie($(this).attr("id"))===null){
		}else {
			//CHECK TO SEE IF OUR CLOSE BUTTON HAS BEEN CREATED
				showCloseButton($(this));
			//CHECK TO SEE IF THIS IS A RADIO/CHECKBOX FIELD
				if($(this).attr("title")=="bls_radio" || $(this).attr("title")=="bls_check"){
					//
						if($.cookie($(this).attr("id"))){
							$("#"+$(this).attr("id")).attr("checked", true);
						}else{
							$("#"+$(this).attr("id")).attr("checked", false);
						}
				}else{
					//SET THE VALUE OF OUR FIELD WITH OUR COOKIE - STORE THE ID SO WE CAN SUPPORT EACH CHECKBOX CHECKED AND RADIO CHECKED
						$("#"+$(this).attr("id")).val($.cookie($(this).attr("id")));
				}
		}
	});
}
/*
 * setCookies
 * EACH CLASS .bls CAN HAVE A COOKIE SET FOR IT, IF IT HAS A VALUE SET
 */
function setCookies(){
	$(".bls").each( function() {
		//CHECK TO SEE IF THIS IS A RADIO/CHECKBOX FIELD
			if($(this).attr("title")=="bls_radio" || $(this).attr("title")=="bls_check"){
				//ONLY SET THE COOKIE IF THE BOX IS CHECKED
					if($(this).attr("checked")){
						$.cookie($(this).attr("id"), true);
					}else{
						$.cookie($(this).attr("id"), null);
					}
			}else{
				//ONLY SET THE COOKIE IF THE FIELD HAS A VALUE
					if($(this).val().length>0){
						$.cookie($(this).attr("id"), $(this).val());
					}else{
						$.cookie($(this).attr("id"), null);
					}
			}
	});
}
/*
 * clearSearch
 */
function clearSearch(field){
	//HIDE OUR LOADING GRAPHIC
		$(".bls_loading").css("visibility", "hidden");
	//CLEAR OUT THE FIELD
		if(field.attr("title")=="bls_radio" || field.attr("title")=="bls_check"){
			resetRadioInputs(field.attr("name"));
		}else{
			field.val("");
		}
	//UPDATE COOKIES
		setCookies();
	//HIDE OUR CLOSE BUTTON
		hideCloseButton(field);
	//REFRESH OUR PET LISTING
		loadPets(0, null);
}
/*
 * resetRadioInputs
 * RESETS ALL THE ELEMENTS OF A RADIO INPUT
 */
function resetRadioInputs(radio_name){
	for(var i=0;i<$('input[name="'+radio_name+'"]').length;i++){
		$('input[name="'+radio_name+'"]')[i].checked = false;
	}
}
/*
 * buildQuery
 * CYCLES THROUGH ALL CLASSES .bls AND BUILDS A QUERY STRING TO PASS TO OUR PHP SCRIPT
 */
function buildQuery(){
	var q_string = "?";
	$(".bls").each( function() {
		//CHECK TO SEE IF THIS FIELD IS A RADIO OR CHECKBOX
			if($(this).attr("title")=="bls_radio" || $(this).attr("title")=="bls_check"){
				//RADIO INPUT
					if($(this).attr("checked")){
						q_string+= $(this).attr("name")+"="+$(this).val()+"&";
					}
			}else{
				//TEXT, SELECT
					if($(this).val().length>0 || $(this).attr("checked")){
						q_string+= $(this).attr("name")+"="+$(this).val()+"&";
					}
			}
	});
	return q_string;
}
/*
 * hideLoading
 */
function hideLoading(){
	$('#bls_loading').css("visibility", "hidden");
}
/*
 * showLoading
 */
function showLoading(){
	if($('#bls_loading').length>0){
		$('#bls_loading').css("visibility", "visible");
	}else{
		//CREATE THE LOADING GRAPHIC
			var loading_div = $("<div>").html("");
			loading_div.attr("id","bls_loading");
			loading_div.attr("class","bls_loading");
			loading_div.css("visibility", "visible");
		//
			loading_div.appendTo("#pet_listing");
	}
}
/*
 * hideCloseButton
 */
function hideCloseButton(field){
	if(field.attr("title")=="bls_radio" || field.attr("title")=="bls_check"){
		var close_name = '#'+field.attr('name')+"_close";
	}else{
		var close_name = '#'+field.attr('id')+"_close";
	}
	$(close_name).css("visibility", "hidden");
}
/*
 * showCloseButton
 */
function showCloseButton(field){
	if(field===undefined || field===null){
	}else{
		//CHECK TO SEE IF WE ARE DEALING WITH A RADIO, CHECK INPUTS
		if(field.attr("title")=="bls_radio" || field.attr("title")=="bls_check"){
			//WE WANT TO TIE THE CLOSE BUTTON TO THE LABEL
				var close_name = field.attr('name')+"_close";
				if($('#'+close_name).length>0){
					//THE CLOSE BUTTON HAS ALREADY BEEN CREATED - JUST SWITCH IT ON SO WE CAN SEE
						$('#'+close_name).css("visibility", "visible");
				}else{
					//CREATE THE CLOSE BUTTON
						var close_div = $("<div>").html("");
						close_div.attr("id",close_name);
						close_div.attr("class","bls_close");
						close_div.css("visibility", "visible");
					//
						var label = $('#'+field.attr('name')+"_label");
						close_div.css("position", "absolute");
						close_div.css("left", label.width()+5);
						var position = label.position();
						close_div.css("top", position.top);
					//
						close_div.appendTo("#bls");
					//ADD THE CLICK EVENT FOR THIS CLOSE BUTTON
						close_div.click( function(event) {
							clearSearch(field);
						});
				}
		}else{
			var close_name = field.attr('id')+"_close";
			if($('#'+close_name).length>0){
				//THE CLOSE BUTTON HAS ALREADY BEEN CREATED - JUST SWITCH IT ON SO WE CAN SEE
				$('#'+close_name).css("visibility", "visible");
			}else{
				//CREATE THE CLOSE BUTTON
					var close_div = $("<div>").html("");
					close_div.attr("id",close_name);
					close_div.attr("class","bls_close");
					close_div.css("visibility", "visible");
				//
					close_div.css("position", "absolute");
					close_div.css("left", field.width()+5);
					var position = field.position();
					close_div.css("top", position.top);
				//
					close_div.appendTo("#bls");
				//ADD THE CLICK EVENT FOR THIS CLOSE BUTTON
					close_div.click( function(event) {
						clearSearch(field);
					});
			}
		}
	}
}
/*
 * loadPets
 */
function loadPets(keyCode, field){
	//UPDATE OUR COOKIES
		setCookies();
	//CHECK TO SEE IF OUR CLOSE BUTTON HAS BEEN CREATED
		showCloseButton(field);
	//
		showLoading();
	//WE DON'T WANT TO UPDATE ON EVERY KEYUP, SO EXCLUDE THESE KEYS (ENTER, SHIFT, CTRL, SPACE)
		if((keyCode >=16 && keyCode <= 20) || keyCode == 9) {
		}else{
			//CALL OUR SCRIPT
			//TODO: update relative address when we get to live
				$.getJSON(
					"http://www.becauseyoucare.org/_face/byc/load_pets.php"+buildQuery(), 
					function(data){
						//
							hideLoading();
						//
							$("#pet_listing_results").empty();
							$("#pet_listing_results").css("visibility", "visible");
							$(".bls_loading").css("visibility", "hidden");
						//
							var result_html = "<table>";
							var toggle = true;
							for(var i=0;i<data.items.length;i++){
								if(toggle){
									result_html+= "<tr class='odd'>";
								}else{
									result_html+= "<tr class='even'>";
								}
								toggle = !toggle;
								result_html+= "<td>";
								result_html+= "<div class='feature'>";
								if(data.items[i].pic.length>0){
									result_html+= "<a href='pet_details/?theid="+data.items[i].id+"'><img src='../../_files/images/pets/thumbs/"+data.items[i].pic+"' alt='"+data.items[i].name+"' /></a>";
								}else{
									result_html+= "<a href='pet_details/?theid="+data.items[i].id+"'><img src='../../_images/nophoto.gif' alt='"+data.items[i].name+"' /></a>";
								}
								result_html+= "</div>";
								result_html+= "</td>";
								result_html+= "<td>";
								result_html+= "<p><strong>"+data.items[i].name+"</strong><br />";
								result_html+= ""+data.items[i].breed+"<br />";
								if(data.items[i].age.length>0){
									result_html+= ""+data.items[i].age+"<br />";
								}
								result_html+= "Good With Kids? "+data.items[i].kids+"<br />";
								result_html+= "Good With Cats? "+data.items[i].cats+"<br />";
								result_html+= "Good With Dogs? "+data.items[i].dogs+"<br />";
								if(data.items[i].status==3){
									result_html+= "<span style='color:#990000; font-weight: bold; font-style: italic;'>Adoption Pending</span>";
								}
								result_html+= "</p>";
								result_html+= "<p>"+data.items[i].description+"</p>";
								result_html+= "<p class='link_right'><a href='pet_details/?theid="+data.items[i].id+"'>more details &raquo;</a></p>";
								result_html+= "</td>";
								result_html+= "</tr>";
							}
							result_html+= "</table>";
							result_div = $("<div>").html(result_html);
							result_div.attr("class","bls_result");
							result_div.appendTo("#pet_listing_results");
					}
				);
		}
}
/*
 *
 */
function checkDeclawed(){
	//
		if($("#pet_type").val()==2){
			$("#declawed_form").css("display", "block");
		}
	//
		$("#pet_type").change( function(event){
			if($(this).val()==2){
				$("#declawed_form").css("display", "block");
				resetRadioInputs("pet_declawed");
				//showCloseButton($("#pet_declawed_1"));
			}else{
				$("#declawed_form").css("display", "none");
				resetRadioInputs("pet_declawed");
				hideCloseButton($("#pet_declawed_1"));
				setCookies();
			}
		});
}
/*
 *
 */
$(document).ready(function() {
	//LOAD UP OUR COOKIES IT THERE ARE ANY
		loadCookies();
	//CHECK TO SEE IF WE SHOULD LOAD ON STARTUP
		loadPets(0, null);
	//UPDATE LISTINGS ON KEYUPS AND WHEN VALUES CHANGE SPECIFICALLY FOR SELECT, RADIO, CHECK
		$(".bls").bind("change keyup", function(event){
			//CHECK TO SEE IF WE HAVE A VALUE IN OUR FIELD
				if($(this).val().length==0){
					//CLEAR THE SEARCH
						clearSearch($(this));
				}else{
					//LOAD UP OUR PETS
						loadPets(event.keyCode, $(this));
				}											
		});	
	//HIDE/SHOW THE DECLAWED FIELD ONLY WHEN THE CAT TYPE IS CHOSEN FROM THE DROPDOWN
		//checkDeclawed();
});
