/*
	jquery extensions
*/
(function($)
{	
	$.extend({
		modals:{
			/*
				variables
			*/
			//path:"http://www.bottledrive.cgidev.ca/wp-content/themes/twentyten/assets/",
			path:"/wp-content/themes/twentyten/assets/",
			//path:"",
			options:{
				search:{
					title:"BEER STORE FINDER",
					icon:"images/bottles-modal.jpg",
					ie:"images/bottles-modal.gif",
					width:310, /* ruiyang 290 */
					height:170,
					validate:{
						//address:/^(?!.*[DFIOQU])[A-VXY][0-9][A-Z][ -.]*[0-9][A-Z][0-9]$/i  // postcode only
						address:/\w+/
					}
				},
				result:{
					url:"/locator/",
					title:"BEER STORE LOCATIONS",
					icon:"images/bottles-modal.jpg",
					ie:"images/bottles-modal.gif",
					width:560, /* ruiyang 486px - 420px */
					height:520
				},
				volunteer:{
					title:"VOLUNTEER",
					icon:"images/hands-modal.jpg",
					ie:"images/hands-modal.gif",
					width:340,
					height:250, 
					validate:{
						name:/\w+/,
						email:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
					},
					extra:{
						GUESTS:"select"
					}
				},
				volunteer_phase_2:{
					title:"VOLUNTEER",
					icon:"images/hands-modal.jpg",
					ie:"images/hands-modal.gif",
					width:310,	/* ruiyang 290 */
					height:400, /* ruiyang 380 */
					validate:{
						name:/\w+/,
						email:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
					},
					extra:{
						GUESTS:"select"
					}
				},				
				signup:{
					validate:{
						name:/\w+/,
						email:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
					},
					extra:{
						GUESTS:"text",
						SAT_FROM:"select",
						SAT_TO:"select",
						SAT_ALL:"checkbox",
						SUN_FROM:"select",
						SUN_TO:"select",
						SUN_ALL:"checkbox",
						STORE:"text",
						STORE_ID:"text"					
					}
				},
				addfriends:{
					title:"TELL A FRIEND",
					icon:"images/tell-a-friend-modal.jpg",
					ie:"images/tell-a-friend-modal.gif",
					width:514,
					height:450,
					validate:{
						name:/\w+/,
						email:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
					}										
				},
				mp3:{
					title:"LISTEN!",
					icon:"images/hands-modal.jpg",
					ie:"images/hands-modal.gif",
					width:300,
					height:100				
				},
				thanks:{
					title:"PLEASE WAIT!",
					icon:"images/thank-you-modal.jpg", /* ruiyang */
					ie:"images/thank-you-modal.gif",
					width:310, /* ruiyang 290 */
					height:170
				}												
			},
			
			friends:1,
			success:{
				name:false,
				email:false
			},
			object:".ui-dialog.ui-widget.ui-widget-content.ui-corner-all",
			
			/*
				methods
			*/
			init:function()
			{
				// links to generate modals
				$("a[data='modal'], button[data='modal'][href]").live('click', function(){$.modals.prepare(this);return false});
				//$("a[href='#search']").trigger('click');
				
				// buttons in modals
				$(".ui-dialog button[data='modal']").live('click', function(){$.modals.submit(this);return false;});
				
				// x
				$("#modal-icon .close, .ui-dialog button[action='close'], button:contains('Cancel')").live('click', function(){
					//$("#modal").remove();
					
					if(!$.browser.msie){if(document.getElementById('audioplayer')){document.getElementById('audioplayer').pause();}}
					
					$("#modal-icon").hide();
					$(".ui-dialog-titlebar-close").trigger('click');
					$("form").each(function(){this.reset();});
					
					return false;
				});
				
				$("#addbutton").live('click', function(){$.modals.addfriend(this);return false;});
			
				$("a:contains('Listen to the radio spot')").live('click', function(){$.modals.prepare(this);return false;})
				
				$("button:contains('Clear')").live('click', function(){
					var modal = "addfriends";
					var file = $.modals.path + "modals/" + modal + ".modal.php";
					var options = $.modals.options[modal];					
				
					/* ruiyang */
					//$.modals.load(file, options, modal);
					$("#name").val("");
					$("#email").val("");
					$("#name1").val("");
					$("#email1").val("");
					$("#message").val($("#message").text());
					$("#friendslist > div.half").remove();
					$("#addfriends div.half > input").css({"border-color":"#CCCCCC","background":"#FFFFFF"});
				});

				$("#volunteer .yes, #signup .yes").live('click', function(){
					$("#volunteer .how-many").css("display", "inline");
				});
				$("#volunteer .no, #signup .no").live('click', function(){
					$("#volunteer .how-many").css("display", "none");
				});
				
				//$(window).resize(function(){$.modals.resize();})
				$(window).bind('resize scroll', function(){
					$.modals.resize();
				});
				
				if($.browser.msie && $.browser.version < 8) 
				{
					$("form").live('keypress', function(e){
						var code = (e.keyCode ? e.keyCode : e.which);
						if(code == 13) { //Enter keycode	
							$("form#volunteer button.result").trigger('click');
							$("form#search button").trigger('click');
							$("form#signup button").trigger('click');
						}
					});
				}
			},
	
			/*
				modal methods
			*/
			prepare:function(obj)
			{	
				var obj = $(obj);
				var modal = obj.attr("href").slice(1);
				var file = $.modals.path + "modals/" + modal + ".modal.php";
				var options = $.modals.options[modal];
				if($.locator.phase == 2 && modal == "volunteer")
				{
					modal += "_phase_2";
					var file = $.modals.path + "modals/" + modal + ".modal.php";					
					var options = $.modals.options[modal];
				}
				
				$.modals.load(file, options, modal)
			},
			
			submit:function(obj)
			{
				obj = $(obj);
				var form = obj.parents("form");
				var id = $(form).attr("id");			
				var modal = obj.attr("action");
				var file = $.modals.path + "modals/" + modal + ".modal.php";
				var options = $.modals.options[modal];
				var extras = "";
			
				/*
					test for phase 2 + find location
				*/
				if(id == "volunteer")
				{
					if(obj.attr("action") == "result")
						$.modals.options[id].validate["address"] = /\w/;
					else
						delete $.modals.options[id].validate.address;
				}
				
				if($.modals.options[id].extra)
				{
					var extra = $.modals.options[id].extra
					for(var prop in extra)
					{
						switch(extra[prop])
						{
							case "checkbox":
								var val = $("#" + id + " #" + prop).attr("checked");
							break;
							case "radio":
								$(":radio[name='" + id + "']").each(function(){
									if($(this).attr("checked")){
										var val = $(this).val();
									}
								});
							break;
							default:
								var val = $("#" + id + " #" + prop).val();
							break;
						}
						extras += prop + "=" + escape(val) + "&";
					}					
					
					extras = "&" + extras.slice(0, -1);
				}
				
				//check for validation
				if($.modals.options[id].validate)
				{
					var error = false;
					var validate = $.modals.options[id].validate;
					var query = "?";
					for(var prop in validate)
					{
						var val = $("#" + id + " #" + prop).val();
						var regex = validate[prop];
						if(!regex.test(val))
						{
							$("#" + id + " #" + prop).css({"border-color":"#e31836","background":"#FFFFCC"});
							error = true;
						}
						else{
							$("#" + id + " #" + prop).css({"border-color":"#CCCCCC","background":"#FFFFFF"});
							query += prop + "=" + escape(val) + "&";
						}
					}
					
					if(id == "addfriends")
					{
						// check last
						
						if($.modals.friends > 1)
						{
							var name = $("#" + id + " #name" + $.modals.friends).val();
							var email = $("#" + id + " #email" + $.modals.friends).val();
							
							if(name.length == 0 && email.length == 0)
							{
								$("#" + id + " #name" + $.modals.friends).css({"border-color":"#CCCCCC","background":"#FFFFFF"});
								$("#" + id + " #email" + $.modals.friends).css({"border-color":"#CCCCCC","background":"#FFFFFF"});
								
								$("#" + id + " #friendslist > .half").last().remove();
								$("#" + id + " #friendslist > .half").last().remove();
								
								$.modals.friends--;
							}
						}
						
						for(n = 1; n <= $.modals.friends; n++)
						{
							for(var prop in validate)
							{
								var val = $("#" + id + " #" + prop + n).val();
								var regex = validate[prop];
								if(!regex.test(val))
								{
									$("#" + id + " #" + prop + n).css({"border-color":"#e31836","background":"#FFFFCC"});
									$("#addbutton").attr({"class":"plus disabled"}); /* ruiyang */
									error = true;
								}
								else{
									$("#" + id + " #" + prop + n).css({"border-color":"#CCCCCC","background":"#FFFFFF"});
									query += prop + n + "=" + escape(val) + "&";
									$("#addbutton").attr({"class":"plus"}); /* ruiyang */
								}
							}							
						}
						
										
					}
					
					/* ruiyang */
					if(id == "signup") {
						$("#SAT_FROM, #SAT_TO, #SUN_FROM, #SUN_TO").css({"color":"#000","background":"#FFFFFF"});
						var sat_from = parseInt($("#SAT_FROM").attr('selectedIndex'));
						var sat_to = parseInt($("#SAT_TO").attr('selectedIndex'));
						var sun_from = parseInt($("#SUN_FROM").attr('selectedIndex'));
						var sun_to = parseInt($("#SUN_TO").attr('selectedIndex'));
						
						if (((sat_from > 0) && (sat_to > 0) && (sun_to == 0) && (sun_from == 0)) || 
							((sun_to > 0) && (sun_from > 0) && (sat_from == 0) && (sat_to == 0)) ||
							((sun_to > 0) && (sun_from > 0) && (sat_from > 0) && (sat_to > 0))) {						
							if ((sat_from > sat_to) && (sat_from > 0) && (sat_to > 0)) {
								$("#SAT_FROM, #SAT_TO").css({"color":"#e31836","background":"#FFFFCC"});
								error = true;
							}
							if ((sun_from > sun_to) && (sun_from > 0) && (sun_to > 0)) {
								$("#SUN_FROM, #SUN_TO").css({"color":"#e31836","background":"#FFFFCC"});
								error = true;
							}
						} else{
							error = true;
							if ((sat_from == 0) && (sat_to > 0)) {$("#SAT_FROM").css({"color":"#e31836","background":"#FFFFCC"});}
							if ((sat_from > 0) && (sat_to == 0)) {$("#SAT_TO").css({"color":"#e31836","background":"#FFFFCC"});}
							if ((sun_from == 0) && (sun_to > 0)) {$("#SUN_FROM").css({"color":"#e31836","background":"#FFFFCC"});}
							if ((sun_from > 0) && (sun_to == 0)) {$("#SUN_TO").css({"color":"#e31836","background":"#FFFFCC"});}
							if ((sat_from == 0) && (sat_to == 0) && (sun_from == 0) && (sun_to == 0)) {
								$("#SAT_FROM, #SAT_TO, #SUN_FROM, #SUN_TO").css({"color":"#e31836","background":"#FFFFCC"});
							}
						}
					}
					
					
					query = query.slice(0, -1) + extras;
					if(!error)
					{
						switch(id)
						{
							case "search":
								file += query;
								$.modals.load(file, options, modal)
							break;
							case "volunteer":
							 	file += query;
								file += "&action=volunteer";
								$.modals.load(file, options, modal)
							break;
							case "addfriends":
							 	file += query;
								file += "&message=" + escape($("#message").val());
								file += "&action=friends";
								$.modals.load(file, options, modal)
							break;
							case "signup":
								file += query;
								file += "&action=signup";
								$.modals.load(file, options, modal)
							break;
						}
					}
				}
			},
			
			load:function(file, options, modal)
			{
				$("#modal").remove();
								
				var dialog = $("<div id=\"modal\" title=\"" + options.title + "\"></div>").appendTo('body')
				.load(file)
				.dialog({
					resize:"auto",
					modal: true,
					title:options.title,
					width:options.width,
					height:options.height,

					close: function(ev, ui) {
						$('#modal').html("");
					}		
				});

				switch(modal)
				{
					case "result":
						//var query = unescape(file.slice(file.indexOf("?") + 1).split("=")[1]).toString();
						var post = {};
						var query = file.slice(file.indexOf("?") + 1).split("&");
						for(var q = 0; q < query.length; q++)
						{
							var prop = query[q].split("=")[0];
							var value = query[q].split("=")[1];							
							post[prop] = value;
						}
						post.address = unescape(post.address).toString();
												
						var map = setInterval(function(){
							if($("#modal-map").length > 0)
							{
								clearInterval(map);
								$.locator.init(post.address);								
							}
						},1);	
					break;
					case "addfriends":
						$.modals.friends = 1;
						var friends = setInterval(function(){
							if($("#friendslist").length > 0)
							{
								clearInterval(friends);
								$.modals.listen($.modals.friends);
							}
						},1);					
					break;
				}
				
				// check for modal
				var loading = setInterval(function(){
					if($($.modals.object).length > 0)
					{
						clearInterval(loading);
						$.modals.icon(options);
						$("input").placeholder();
						setTimeout(function(){$("input").placeholder();},100);
					}
				},1);	
				
				$("input").placeholder();			
			},
			
			icon:function(options)
			{
				$("#modal-icon").show();
				if($.browser.msie)
				{
					$("#modal-icon img").remove();
					$("#modal-icon").prepend("<img src=\"" + $.modals.path + options.ie + "\">");
					setTimeout(function(){$.modals.resize(true);}, 1);
				}
				else
				{
					$("#modal-icon").css({
						"background-image":"url(" + $.modals.path + options.icon + ")"
					});					
				}
				
				$.modals.resize(true);
				
		
			},
			
			addfriend:function(obj)
			{
				obj = $(obj);
				var form = obj.parents("form");
				var id = $(form).attr("id");
				if(obj.attr("class") === "plus")
				{
					var friend = $("#friendslist .friend").html();
					$.modals.friends++;

					/* friend = friend.replace(/\d+/g, $.modals.friends); */
					friend = friend.replace(/name\d+/g, "name"+$.modals.friends)
					friend = friend.replace(/<span>\d+/g, "<span>"+$.modals.friends)
					friend = friend.replace(/<SPAN>\d+/g, "<SPAN>"+$.modals.friends)
					friend = friend.replace(/email\d+/g, "email"+$.modals.friends)
					
					$("#friendslist").append(friend);
					
					//$("#friendslist :input['maxength]").attr({"maxlength":"100"});
					$("#name"+$.modals.friends).val('');
					$("#email"+$.modals.friends).val('');
					
					$.modals.listen($.modals.friends);
					obj.attr({"class":"plus disabled"});
					
					$("#friendslist :input").attr({"style":""});
				}
			},
			
			listen:function(i)
			{
				$.modals.success.name = false;
				$.modals.success.email = false;				
				// remove from all
				$("#friendslist :input").unbind('keyup, blur');
				$("#friendslist :input[id$='" + i + "']").bind('keyup, blur',function(){
					var val = $(this).val();
					var input_id = $(this).attr('id').substr(0, 4);

					switch(input_id)
					{
						case "name":
							regex = $.modals.options.addfriends.validate["name"];
							$.modals.success.name = !regex.test(val) ? false : true ;
						break;
						case "emai":
							regex = $.modals.options.addfriends.validate["email"];							
							$.modals.success.email = !regex.test(val) ? false : true ;
						break;
					}
					
					$.modals.success.name && $.modals.success.email ? $("#addbutton").attr({"class":"plus"}) : $("#addbutton").attr({"class":"plus disabled"});
				});
				
			},
			
			/* ruiyang */
			validate_name:function(obj) {
				var id = "addfriends";
				var validate = $.modals.options[id].validate;
				for(var prop in validate)
				{
					var val = $("#" + id + " #" + prop).val();
					var regex = validate[prop];
					if(!regex.test(val))
					{
						$("#" + id + " #" + prop).css({"border-color":"#e31836","background":"#FFFFCC"});
						//$("#addbutton").attr({"class":"plus disabled"});
					}
					else{
						$("#" + id + " #" + prop).css({"border-color":"#CCCCCC","background":"#FFFFFF"});
						//$("#addbutton").attr({"class":"plus"}) ;
					}
				}
			},
			show_guest:function(obj) {
				var value = $(obj).val();
				if (value == "yes") {
					$('#signup div.how-many').css("display", "inline"); 
					$("#signup input[name=GUESTS]").val(parseInt($("#signup div.how-many p select").attr("selectedIndex"))); 
				}
				if (value == "no") { 
					$('#signup div.how-many').css("display", "none"); 
					$("#signup input[name=GUESTS]").val(0); 
				}
			},
			
			set_guest:function(obj) {
				$("#signup input[name=GUESTS]").val(parseInt($(obj).attr("selectedIndex")));
			},
			
			all_day:function(obj, day)
			{
				// auto select and disable dropdown list when checkbox is checked
				var from = "#" + day + "_FROM";
				var to = "#" + day + "_TO";
				var check_box = "#" + day + "_ALL";
				$(from).attr('selectedIndex', 1);
				$(to).attr('selectedIndex', $(to + " option").length - 1);
				if ($(check_box).is(':checked')) {
			        $(from).attr('disabled', true);
			        $(to).attr('disabled', true);
			    } else {
			        $(from).removeAttr('disabled');
			        $(to).removeAttr('disabled');
			    }   			
			},
			
			/* ruiyang */
			change_hour:function(obj)
			{
				obj = $(obj);
				var id = obj.attr("id");
				var day = id.substring(0, id.indexOf("_") + 1);
				var range = id.substring(id.indexOf("_") + 1, id.length);
				var curr = parseInt(obj.attr('selectedIndex'));
				var from = parseInt($("#" + day + "FROM").attr('selectedIndex'));
				var to =  parseInt($("#" + day + "TO").attr('selectedIndex'));
				// Start time is earlier than end time
				if (range == "FROM") 
				{
					if ((curr > to) && (to > 0) && (curr > 0)) {
						obj.css({"color":"#e31836","background":"#FFFFCC"});	
					} else {
						obj.css({"color":"#000","background":"#FFFFFF"});
						$("#" + day + "TO").css({"color":"#000","background":"#FFFFFF"});
					}
				}
				// End time is later than start time
				if (range == "TO")
				{
					if ((curr < from) && (from > 0) && (curr > 0)) {
						obj.css({"color":"#e31836","background":"#FFFFCC"});					
					} else {
						obj.css({"color":"#000","background":"#FFFFFF"});
						$("#" + day + "FROM").css({"color":"#000","background":"#FFFFFF"});
					}
				}
			},

			resize:function(resize){
				var display = {
					width:$(window).width(),
					height:$(window).height()
				}
				
				var modal = {
					width:$($.modals.object).width(),
					height:$($.modals.object).height()
				}
				
				/*
					resenter modal
				*/		
				if(!resize)
				{
					$($.modals.object).css({
						top:((display.height/2) - (modal.height/2)),
						left:((display.width/2) - (modal.width/2))
					});					
				}	
				
				var icon = {
					top:(parseInt($($.modals.object).css("top")) - 20) + "px",					
					left:(modal.width + parseInt($($.modals.object).css("left")) - 35) + "px"
				}
				
				$("#modal-icon").css({
					top:icon.top,					
					left:icon.left
				});
				
				if($.browser.msie && $.browser.version < 7)
				{
					$("#modal-icon").hide();
				}
				/*
				if($.browser.msie)
				{
					$("#modal-icon").hide();
				}
				*/
			}
		}
	})
})(jQuery);

$(document).ready(function(){
	$.modals.init();
});

