// All pages
var responseMessage;
var responseMessageType;


$(document).ready(function() {
	// Apply onsubmit to marked forms; ajax form
	$('form.instant').submit(function() { form_presubmit(this); return false; });
	
	if (responseMessage) { displayReponseBar(responseMessage, responseMessageType); }
});	



// Utility functions
	function form_presubmit(formObj) {
		var submitButton      = $(formObj).find("input[type=submit]");
		var s_callbackFunc    = $(formObj).find("input[name$='form_callback']").val();
		var s_confirmUrl      = $(formObj).find("input[name$='form_confirm']").val();
		var method            = $(formObj).attr("method");		
		var b_missingRequired = false;
		
		$(formObj).find("input.required").each(function() {
			if (!$(this).val()) {
				b_missingRequired = true;
				$(this).addClass("missing");
				return;
			} else {
				$(this).removeClass("missing");
			}
		});
		
		if (b_missingRequired) {
			displayReponseBar("Highlighted fields are required.", "fail");
		} else {
		
			$.ajax({  
			   type: method,  
			   url: "response.php",  
			   data: $(formObj).serialize()+"&"+submitButton.attr("name")+"="+submitButton.attr("value"),
			   dataType: "json", 
			   success: function(rsp) { 
				if (!s_callbackFunc) {
					if (rsp.success) { 
				     	if (s_confirmUrl) {
				    		document.location = s_confirmUrl;
				    	} else {
				    		displayReponseBar(rsp.message,"ok");
				    	}
				    } else {
				    	displayReponseBar(rsp.message,"fail");	
				    }
			     } else {
					eval(s_callbackFunc+'(rsp)');
			     }
			   }  
			 }); 		
	
		} // END required check
			 
		 return false;
		
	}
	
	function isValidMail(email) {
	   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	   if(reg.test(email) == false) {
		  return false;
	   } else {
		  return true;
	   }
	}	
	
	function displayReponseBar(msg, className) {
		$("#responsemessage").remove();
     	$('h1').after('<div id="responsemessage"><div class="'+className+'">'+msg+'</div></div>');
     	$("#responsemessage").slideDown().click(function() { $(this).slideUp(); });		
	}


// Game functions
	function toggleHeart(imgObj) {
		var id_car = $(imgObj).next().val();
		$.getJSON("response.php?favorite="+id_car, function(data){
		     if (data.added) {
		     	imgObj.src = "images/heart_on.png";
		     	$(imgObj).parent().parent().addClass("heart");
		     } else {
		     	imgObj.src = "images/heart_off.png";
		     	$(imgObj).parent().parent().removeClass("heart").addClass("nonheart");
		    }
		    
		    if (!data.success) {
		    	displayReponseBar(data.message, "fail");
		    }
		});		
	}
	
	function addCarToGarage(carId, obj) {
		var r = $.getJSON("response.php?favorite="+carId, function(data){
		    if (!data.success) { displayReponseBar(data.message, "fail"); } else { 
				if (data.added) {
					$(obj).html("Remove this car from your garage");
				} else {
					$(obj).html("Add this car to your garage");					
				}
			}
		});	
		
		return(r);
	}

	
	// Infinite scrolling for car shopper
	function setupInfiniteScroll(containerId, windowId, getUrl) {
		var counter         = 2;
		var ajax            = null;
		
		$(containerId).scroll(function(){
			if (ajax && ajax.readyState < 4 && ajax.readyState > 0) { return; }
									   
			var scrollpos = $(containerId).scrollTop();
			if  (scrollpos == $(windowId).height() - $(containerId).height()){
					$(".shopperwait").show();
					ajax = $.get(getUrl, 'p='+counter, function(data) {
						if (data.length > 2) {
							$(".shopperwait").hide();
							$(windowId).append(data);
							counter     += 1;
						} else {
							$(".shopperwait").hide();
							getData = false;
						}
					}, 'html');
			}
		}); 		
	}


		function joinRequest(teamId) {
			$.ajax({  
			   type: "POST",  
			   url: "response.php?jointeam="+teamId,  
			   dataType: "json", 
			   success: function(rsp) { 
					if (rsp.success) { 
			    		displayReponseBar(rsp.message,"ok");
				    } else {
				    	displayReponseBar(rsp.message,"fail");	
				    }
			   }  
			 });	
			 
			 return false;		
		}
		
// FACEBOOK
	function fbpost(getparam) {
		$.ajax({
			url: "response.php?"+getparam,
			success: function(data){ fb_publish(data); }
		}); // END ajax		
	
	}
	
function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\0/g,'\0');
	str=str.replace(/\\\\/g,'\\');
	return str;
}	

	function fb_publish(json) {
		json = eval("(" + json + ")");
		$.getScript('http://connect.facebook.net/en_US/all.js', function() {
			FB.init({appId: '109305549134720', status: true, cookie: true,xfbml: true});
			FB.ui({
				method: 'stream.publish',
				message: json.message,
				attachment: {
					name: json.name,
					caption: json.caption,
					description: json.description,
					href: json.href,
					media: [
						{
							type: 'image',
							href: json.imagehref,
							src: json.image
						}
					]
				},
			},
			function(response) {
				if (response && response.post_id) {
				   alert('Post was published to your Facebook wall.');
				}
			});	// END fb.ui	
		  
		}); // END getscript	
	}
		
