var pattern = new RegExp(/^(("[\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);

$(document).ready(function(){
	$.extend({
	  getUrlVars: function(){
	    var vars = [], hash;
	    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	    for(var i = 0; i < hashes.length; i++)
	    {
	      hash = hashes[i].split('=');
	      vars.push(hash[0]);
	      vars[hash[0]] = hash[1];
	    }
	    return vars;
	  },
	  getUrlVar: function(name){
	    return $.getUrlVars()[name];
	  }
	});
	
	$('a.external').click(function() {
	    window.open($(this).attr('href'));
	    return false;
	});
	
	$("li a.facebook").click(function(){
		var url = $(this).attr("href");
		var title = $(this).attr("title");
		window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent(url)+"&t="+encodeURIComponent(title));
		return false;
	});
	
	$("li a.twitter").click(function(){
		var url = $(this).attr("href");
		var title = $(this).attr("title");
		window.open("http://twitter.com/home?status=Currently%20reading%20"+encodeURIComponent(url));
		return false;
	});
	
	$("a.project-image").colorbox({slideshow:false, height:"650px", width:"900px", opacity:0.40, onOpen: function(){}});
	$("a.selected-project.pop").colorbox({open:true,slideshow:false, height:"650px", width:"900px", opacity:0.40, onOpen: function(){}});
	
	$("a.share-blog").colorbox({href: ".share-blog-form", inline:true, transition:"elastic", height:"240px", width:"350px",
	 							open:false, speed:500, opacity:0.40, overlayClose:false, close:"Close", onOpen: function(){
		$("#cboxTitle").remove();
	}});
	
	$("input[name=subscribe]").click(function(){
		if($(this).is(":checked")){$("input[name=request[subscribe]]").val(1);}
		else{$("input[name=request[subscribe]]").val(0);}
	});
	
	$(".share-blog-form").submit(function(){
		var form = $(this);
		var send = true;
		request = [];
		$(form).find("input:not(:submit)").each(function(){
			if($(this).val() == ""){
				$(this).addClass("invalid");
				send = false;
			}else{
				$(this).removeClass("invalid");
				request += "&email_to_friend[" + $(this).attr("name") + "]=" + $(this).val();
			}
		});
		
		if(send){
			$.ajax({type: "POST", url: "/email_to_friend", data: request, success: function(){
					$(form).find(".input_text").each(function(){
						$(this).val("");
					});
				}
			});
			window.open('/thank-you-for-sharing', '_blank');
			$.fn.colorbox.close();
		}
		
		return false;
	});
	
	$("form.sign-up").submit(function(){
		var form = $(this);
		var send = true;
		var request = [];
		
		$(form).find(":input:not(:submit)").each(function(){
			if($(this).val() == ""){
				$(this).addClass("invalid");
				send = false;
			}else{
				if($(this).attr("name") == "email"){
					if(!pattern.test($(this).val())){
						$(this).addClass("invalid");
						send = false;
					}else{$(this).removeClass("invalid"); request += "&request[email]=" + $(this).val();}
				}else{
					$(this).removeClass("invalid");
					request += "&request[" + $(this).attr("name") + "]" + "=" + $(this).val();
				}
			}
		});

		if(send){
			$.ajax({type:"POST", url: "/sign-up", data: request,
				success: function(){
					$(form).find("li.error").hide();
					$("form.sign-up :input:not(:submit)").each(function(){
						$(this).val("");
					});
					$(form).find("li.success").show();
				},
				error: function(){
					$(form).find("li.error").show();
					$(form).find("li.success").hide();
				}
			});
		}
		
		return false;
	});
	
	$("form.add-comment").submit(function(){
		var form = $(this);
		var send_comment = true;
		var request=[];
	 	$(form).find(":input:not(:submit)").each(function(){
			if($(this).val()==""){
				$(this).closest(".text-border").addClass("invalid");
				send_comment = false;
			}else{
				if($(this).attr("name") == "page_comment[email]"){
					if(!pattern.test($(this).val())){
						$(this).closest(".text-border").addClass("invalid");
						send_comment = false;
					}else{$(this).closest(".text-border").removeClass("invalid");request += "&" + $(this).attr("name") + "=" + $(this).val();}
				}else{
					$(this).closest(".text-border").removeClass("invalid");
					request += "&" + $(this).attr("name") + "=" + $(this).val();
				}
			}
		});

		if(send_comment){			
			var page = $(form).attr("action").split("/");
			request += "&page_comment[commentable_id]=" + page[page.length-1];
			$.ajax({type: "POST", url: "/admin/comments", data: request, 
				success: function(){
					$(form).find("li.error").hide();
					$("form.add-comment :input:not(:hidden, submit)").each(function(){
						$(this).val("");
					});
					$(form).find("li.success").show();
				},
				error: function(){
					$(form).find("li.error").show();
					$(form).find("li.success").hide();
				}
			});
		}
		return false;
	});

	// Sets selected centre as default
	$("a.set-as-default").live("click", function(){
		var link = $(this);
		var studio = $(link).attr("name");
		$.ajax({type: "POST", url: "/set_default",
				data: "studio=" + studio,
				success: function(){
 					 $(link).replaceWith("Default Studio");
				}
		});
		return false;
	});
		
	$("form.send-a-brief").submit(function(){
		var form = $(this);
		var send_upload = true;

		$(form).find(".required").each(function(){
			if($(this).val() == ""){
				$(this).addClass("invalid");
				send_upload = false;
			}else{
				if($(this).attr("name") == "request[email]"){
					if(!pattern.test($(this).val())){
						$(this).addClass("invalid");
						send_upload = false;
					}else{$(this).removeClass("invalid");}
				}else if($(this).attr("name") == "request[phone]"){
						if(ValidateForm($(this).val())){
							$(this).removeClass("invalid");
						}else{
							$(this).addClass("invalid");	
							send_upload = false;
						}
				}else{
					$(this).removeClass("invalid");
				}
			}
		});
		
		if(!send_upload){// || $(".selected-filename").val() != ""){
			if($(".errors").css("display") == "none"){
				$(".attachment").css({'top': ($(".attachment").css("top").split("px")[0]-98)+"px"});				
			}
			$(".errors").show();
			return false;
		}else{
			var request = "";
			$(":input.remember-me").each(function(){
				request += $(this).attr("name") + "=" +$(this).val() + "&";
			});
			
			// var cookie_name = $("input[name=upload_type]").val() == "consultation" ? "request_consultation "+$("input[name=request[email]]").val() : "send_brief "+$("input[name=request[email]]").val();
			var cookie_name = $("input[name=upload_type]").val() == "consultation" ? "request_consulation" : "send_brief";
			
			$.cookie(cookie_name, request, { path: "/" });
		}
	});
	
	$("form.request-a-consultation").submit(function(){
		var form = $(this);
		var send_request = true;

		$(form).find(".required").each(function(){
			if($(this).val()==""){
				$(this).addClass("invalid");
				send_request = false;
			}else{
				if($(this).attr("name") == "request[email]"){
					if(!pattern.test($(this).val())){
						$(this).addClass("invalid");
						send_request = false;
					}else{$(this).removeClass("invalid");}
				}else if($(this).attr("name") == "request[phone]"){
					if(ValidateForm($(this).val())){
						$(this).removeClass("invalid");
					}else{
						$(this).addClass("invalid");	
						send_request = false;
					}
				}else{$(this).removeClass("invalid");}
			}
		});
		
		if(!send_request){// || $(".selected-filename").val() != ""){
			return false;
		}else{
			var request = "";
			$(":input.remember-me").each(function(){
				request += $(this).attr("name") + "=" +$(this).val() + "&";
			});
			
			// var cookie_name = $("input[name=upload_type]").val() == "consultation" ? "request_consulation "+$("input[name=request[email]]").val() : "send_brief "+$("input[name=request[email]]").val();
			var cookie_name = $("input[name=upload_type]").val() == "consultation" ? "request_consulation" : "send_brief";
			
			$.cookie(cookie_name, request, { path: "/" });
		}
	});
	
	$("form.request-a-consultation #request-email, form.send-a-brief #request-email").one("blur", function(){
		var cookie_type = $("input[name=upload_type]").val() == "quote_request" ? "request_cookie ": "upload_cookie ";
		if($("input[name=request[email]]").val() && $.cookie(cookie_type + $("input[name=request[email]]").val())){
			var remembered = $.cookie(cookie_type + $("input[name=request[email]]").val());
			$.each(remembered.split("&"), function(index, value){
				var p = value.split("=");
				$(":input[name="+ p[0] + "]").val(p[1]);
			});
		}
	});
	
	$("a.upload-file").click(function(){
		if($(".selected-filename").val() != ""){
			var file = $("input[name='file']").val();
			if(file==undefined){
				s3_swf1.upload($(".reference_no").val()+"/");
			}else{
				$.ajax({url: '/s3_uploads/generate_s3_signature', dataType: "json", data: "key="+$(".reference_no").val() + "&file="+encodeURIComponent(file) + "&upload_type="+$("input[name=request[upload_type]]").val(), 
					success:function(response){
						$("input[name='Content-Type']").val(response.content_type);
						$("input[name='signature']").val(response.signature);
						$("input[name='redirect']").val(response.redirect);
						$("input[name='policy']").val(response.policy);
						$("input[name='key']").val(response.key);
						if($(".filename").val()==""){
							$("input[name='request[filename]']").val(file);
						}else{
							$("input[name='request[filename]']").val($("input[name='request[filename]']").val() + "," + file);
						}
						$("form.html_upload").submit();
					}
				});
			}
		}
		return false;
	});
	
	function cleanArray(arr){
		var new_arr = new Array();
		$.each(arr, function(index, ele){
			if(ele != ""){
				new_arr.push(ele);
			}
		});
		return new_arr;
	}
	
	function emptyElement(element) {
		if(element == ''){
			return false;
		}else{return true;}
	}
	
	$(".html_upload").submit(function(){
		//fix filenames
		var filenames = $(".filename").val().split(",");
		// filenames = filenames.filter(emptyElement);
		var arr = new Array();
		filenames = cleanArray(filenames);
		$(".filename").val(filenames.join(","));
		
		var request = "";
		$(".request-a-consultation :input, .html_upload :input, .send-a-brief :input").each(function(){
			request += $(this).attr("name") + "=" +$(this).val() + "&";
		});
		switch ($("input[name=request[upload_type]]").val()){
			case "consultation":
				var cookie_name = "request_consultation";
				break;
			case "brief":
				var cookie_name = "send_brief";
				break;
			default:
				var cookie_name = "send_brief";
		}
		$.cookie(cookie_name, null);
		$.cookie(cookie_name, request, { expires: 1, path: "/" });
	});
	
	$("a.file-delete").live("click", function(){
		var link = $(this);
		$(link).closest(".file-deleting").show();
		
		var IE = /*@cc_on!@*/false;
		if(!($.flash) || !($.flash.available)){
			var filename = decodeURIComponent($(link).attr("href"));
			filename = filename.replace("file:///", "");
			filename = filename.replace(/\//g, "\\");
			$(".filename").val($(".filename").val().replace(filename, ""));
		}else{
			var filename = $(link).attr("href").split("/");
			$(".filename").val($(".filename").val().replace(filename[filename.length-1],""));
		}
		
		var li_height = $(link).closest("li").css("height").replace("px", "");
		$(link).closest("li").remove();
		$(".attachment").css({'top': ($(".attachment").css("top").split("px")[0]*1+li_height*1)+"px"});
		if($(".file-delete").length == 0){$(".b-send-file").css({"visibility" : "hidden"});}
		return false;
	});
	
	/**
	 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
	 */

	var digits = "0123456789";
	var phoneNumberDelimiters = "()- ";
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	var minDigitsInIPhoneNumber = 8;

	function isInteger(s)
	{   var i;
	    for (i = 0; i < s.length; i++)
	    {   
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    return true;
	}
	function trim(s)
	{   var i;
	    var returnString = "";

	    for (i = 0; i < s.length; i++)
	    {   
	        var c = s.charAt(i);
	        if (c != " ") returnString += c;
	    }
	    return returnString;
	}
	function stripCharsInBag(s, bag)
	{   var i;
	    var returnString = "";
	    for (i = 0; i < s.length; i++)
	    {
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}

	function checkInternationalPhone(strPhone){
	var bracket=3;
	strPhone=trim(strPhone);
	if(strPhone.indexOf("+")>1) return false;
	if(strPhone.indexOf("-")!=-1)bracket=bracket+1;
	if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false;
	var brchr=strPhone.indexOf("(");
	if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+3)!=")")return false;
	if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false;
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
	}

	function ValidateForm(number){
		if (checkInternationalPhone(number)==false){
			return false;
		}
		return true;
	 }
});
