/* Declare a namespace for the site */
var Site = window.Site || {};

/* Create a closure to maintain scope of the '$'
   and remain compatible with other frameworks.  */
(function($) {
	
	//same as $(document).ready();
	$(function() {
		 $("a[rel^='prettyPhoto']").prettyPhoto();
		
		// Google Event tracking
		$("#frontpage button").click(function() {
			var n = parseInt($("#frontpage #search_value").val().replace(/\w/gi,''));
				n = isNaN(n)? 0:n;
			var s = pageTracker._trackEvent('Calculator', 'Click', 'Frontpage:'+$("#frontpage #search_by").val(), n);
		});
		$("#tax button").click(function() {
			var n = parseInt($("#tax #search_value").val().replace(/\w/gi,''));
				n = isNaN(n)? 0:n;
			var s = pageTracker._trackEvent('Calculator', 'Click', 'Tax:'+$("#tax #search_by").val(), n);
		});
		$("#calculator button").click(function() {
			var n = parseInt($("#calculator #search_value").val().replace(/\w/gi,''));
				n = isNaN(n)? 0:n;
			var s = pageTracker._trackEvent('Calculator', 'Click', 'Result:'+$("#calculator #search_by").val(), n);
		});
		$("#car button").click(function() {
			var n = parseInt($("#car #search_value").val().replace(/\w/gi,''));
				n = isNaN(n)? 0:n;
			var s = pageTracker._trackEvent('Calculator', 'Click', 'Car:'+$("#car #search_by").val(), n);
		});
		$("#block_mail button").click(function() {
			pageTracker._trackEvent('Email sent', 'Click');
		});
		$(".print").click(function() {
			pageTracker._trackEvent('Print', 'Click',$(this).parent().parent().attr("id")+':'+$("body").attr("id"));
		});

		// Make bottom menu prices appear
		$("aside nav ul li a").hover(function() { $(this).find(".price").show(); }, function() { $(this).find(".price").hide(); });
                
		// form validation
		$("form").submit(function() {
			var valid = true;
			$(".iconInvalid").remove();
			$(this).find(":input, :radio, :checkbox").each(function() {
				var v = validate_field($(this));
				var o = (v.obj==undefined)? $(this).get(0) : $(v.obj).get(0);
				var t = (o.nodeName.toLowerCase()=="input")? $(o).attr("type").toLowerCase() : o.nodeName.toLowerCase();
				if (!v.valid) {
					valid = false;
					//var xOffset = (t=="input" && "|text|radio|checkbox".indexOf($(this).attr("type"))!=-1)? ($(this).attr("type")=="text")?-16:-30 : 4;
					var xOffset = -16;
					var yOffset = (String("|textarea|checkbox|").indexOf("|"+t+"|")!=-1)? 4 : (o.offsetHeight-12)/2;
					//if (v.obj!=undefined) yOffset = 0;
					var p = $(o).position();
					var cssProps = {
						'left': p.left + xOffset + 'px',
						'top': p.top + yOffset +'px'
					}
					var oIcon = $("<div class='iconInvalid invalid_"+$(this).attr("name")+"'/>").data("msg",v.msg).appendTo($(o).offsetParent()).css(cssProps).mouseover(function() {
						errorMsg($(this), $(this).data("msg"));
					}).mouseout(function() {
						errorMsg($(this));
					});	
				}
			});
			if (valid && $(this).attr("name")=="mail") {
				if ($("#permission_opt").is(":checked")) {
					$.ajax({
			  		url: "ssi/newsletter.php",
		  			data: { navn: $("#mailname").val(), email:$("#mailemail").val() },
			  		success: function(data) {
                            pageTracker._trackPageview('/newsletter-signup');
						},
						dataType: "json"
					});
				}
				$.ajax({
				  url: "send_mail.php?" + $("#extras form").serialize(),
				  data: { car:$("#curcar").val(), fullname: $("#mailname").val(), email:$("#mailemail").val(), beskatningspris_calc:$("#beskatningspris_calc").text(),mindste_calc:$("#mindste_calc").text() },
				  success: function(data) {
						if(data.done=="yes") {
							$("#block_mail").slideUp(200, function() {
								pageTracker._trackPageview('/email-sent');
								$("#block_mail_thankyou").slideDown(200);
							})
						}
     			},
					dataType: "json"
				});
				return false;
			}
			if (valid && $(this).attr("name")=="newsletter") {
				$.ajax({
				  url: "ssi/newsletter.php",
				  data: { navn: $("#newsnavn").val(), email:$("#newsemail").val() },
				  success: function(data) {
						if(data.done=="yes") {
                            pageTracker._trackPageview('/newsletter-signup');
  						$("#newsletter").slideUp(200, function() {
	  						$("#newsletter-thankyou").slideDown(200);
							});
    				}
     			},
					dataType: "json"
				});
				return false;
			}
   		if (valid && $(this).attr("name")=="contact") {
				//get dealer
   					$.ajax({
       				url: "ssi/create.php",
     					type: "POST",
         			data: {
        				name: $("#navn").val(),
        				company: $("#Firmanavn").val(),
            		email: $("#Email").val(),
     						phone: $("#Telefonnummer").val(),
								leasing: $("#Leasingselskab").val(),
								zip: $("#Postnummer").val(),
								current_car:$("#current_car").val(),
								dealer_guid:$("#dealer_guid").val()
							},
							success: function(data) {
								pageTracker._trackPageview('/contact-sent');
								$("#contact_form").slideToggle();
							}
 						});

				return false;
			}
			return valid;
		});

		$('#site_header nav ul li:last').addClass('last');

		$("#resend").click(function() {
			$("#block_mail_thankyou").slideUp(200, function() {
				$("#block_mail").slideDown(200);
			})
			return false;
		});

		$('#search_form .selector a').css("background-color","#000").css("color","#fff");
		$('#search_form .selector a').click(function() {return false});
		$('#search_form .selector a').mousedown(function() {
            $('#search_form .selector').data("not_blur",true);
			var t = $(this);
			var txt = t.text();
			var name = t.attr("title");
			$('#label_search_value').text(txt);
			$('#search_by').val(name);
			$("#search_value").focus();
			return false;
		})

		$("#search_value").focusout(function(e) {
			$('#search_form .selector').data("tm",setTimeout(function() {
				$('#search_form .selector').animate({height:0,bottom:20,opacity:0},"fast",function() {
					$(this).hide();
				})
				$('#search_form .selector').data("not_blur",false);
			},500));
		});

		$("#search_value").focusin(function(){
			clearTimeout($('#search_form .selector').data("tm"));
			$('#search_form .selector').data("tm",null);
			if(!$('#search_form .selector').data("not_blur")) {
				$('#search_form .selector').animate({height:53,bottom:20,opacity:100},"fast");
			}
		})
		
		/*newsletter*/
		$("#btn_newsletter,#btn_newsletter2").toggle(function() {
			$("#newsletter").slideDown(200);
            pageTracker._trackPageview('/newsletter-show');
			return false;
		},function() {
			$("#newsletter").slideUp(200);
			return false;
		});
		$("#but_luk_link").click(function() {
			$("#newsletter-thankyou").slideUp(200);
		});
		$("#contact_but").click(function(){
			$("#contact_form").slideToggle();
            pageTracker._trackPageview('/contact-show');
			return false;
		})
		
		// print
		$(".print").click(function() {
			window.print();
			return false;
		});
		
		// price calculator
		$("#extras input").click(function() {
			price = $(this).parent().find("label span").text().replace(".", "");
			inp = $(this);
			$("article#car section .car div span.price").each(function() {
				if ($(this).attr("id")=="beskatningspris_calc") {
					if (inp.is(":checked")) {
						calc_price = (parseInt($("#mindste_calc").text().replace(".", "").replace(",-","")) + parseInt(price));
					} else {
						calc_price = (parseInt($("#mindste_calc").text().replace(".", "").replace(",-","")) - parseInt(price));						
					}

					if (calc_price<300000) {
						new_price = calc_price / 48;
					} else {
						new_price = 300000 / 48;
						new_price = new_price + (((calc_price - 300000) * 0.2) / 12);
					}
				} else {
					current_price = 0;
					current_price = $(this).text().replace(".","").replace(",-","");
					if (inp.is(":checked")) {
						new_price = parseInt(current_price) + parseInt(price);					
					} else {
						new_price = parseInt(current_price) - parseInt(price);					
					}					
				}
				$(this).text(number_format(new_price,0,',','.') + ",-");
			});
		});
		
		// placeholder script for support in IE+Firefox
		function placeholder(){
			$("input[type=text]").each(function(){
				var phvalue = $(this).attr("placeholder");
				$(this).val(phvalue);
			});
		}
		placeholder();
		$("input[type=text]").focusin(function(){
			var phvalue = $(this).attr("placeholder");
			if (phvalue == $(this).val()) {
			$(this).val("");
			}
		});
		$("input[type=text]").focusout(function(){
			var phvalue = $(this).attr("placeholder");
			if ($(this).val() == "") {
				$(this).val(phvalue);
			}
		});
	});
				
	$(window).bind("load", function() {
	

	});
	
})(jQuery);

function number_format(number, decimals, dec_point, thousands_sep) {
    number = (number+'').replace(',', '').replace(' ', '');
    var n = !isFinite(+number) ? 0 : +number, 
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

function validate_field(o) {
	var v = {valid:false, msg:""};
	var form = o.parents("div[id]:first").attr("id");
	
	
	switch($(o).attr("name")) {
		// generic
		case "fullname":
		case "name":
		case "navn":
			v.valid = ($(o).val().match(pattern.fullname))? true:false;
			v.msg = "Du skal indtaste både for- og efternavn";
		break;
        case "zip":
			v.valid = ($(o).val().match(pattern.dkzip))? true:false;
			v.msg = "Du skal indtaste en gyldig postnummer";
		break;
		
		case "email":
			v.valid = ($(o).val().match(pattern.email))? true:false;
			v.msg = "Du skal indtaste en gyldig e-mail-adresse";
		break;

		case "permission":
			v.valid = ($(o).is(":checked"));
			v.msg = "Du skal acceptere at vi sender nyhedsbreve til dig";
		break;

		default:
			v.valid = true;
			break;
	}
	return v;
}



function errorMsg(o,msg) {
	var e = ($(".errorMsg").size()>0)? $(".errorMsg") : $("<div class='errorMsg'></div>").appendTo("body");
	if (msg) {
		var cssParams = {
			left: o.offset().left+o.width()+4+'px',
			top: o.offset().top+'px'
		}
		e.html(msg).css(cssParams).show();
		//alert(parseInt(cssParams.left)+e.width());
		if (parseInt(cssParams.left)+e.width()>=$(window).width()-20) e.css("left",o.offset().left-e.width()-20+"px");
		if ($.browser.msie && parseInt($.browser.version.substr(0,1))<=6) $("body").addClass("showValidation");
	} else {
		e.hide();
		$("body").removeClass("showValidation");
	};
}

var pattern = {
	"email":			/^([\w\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|(([\w\-]+\.)+)([a-zA-Z]{2,4}))$/, // any email address
	"letters":			/^([a-zA-Z\u0080-\u00FF]+)$/, // only letters
	"lettersnumbers": 	/^([a-zA-Z\u0080-\u00FF0-9]+)$/, // will validate letters and/or numbers
	"lettersspace":		/^([a-zA-Z\u0080-\u00FF- ]+)$/, // only letters and spaces
	"numbers":			/^\d+$/, // only numbers
	"float":			/^\d+(,|\.)?(\d+)?$/, // only numbers
	"dkphone":			/^(\d{8})(.*)/,
	"dkzip":			/^(\d{4})$/, 
	"sezip":			/^(\d{3}[ ]{0,1}\d{2})$/, 
	"date": 			/^([0-2]?[1-9]|[3][0,1]{1})(\/(([1]{1}[0-2]|[0]?[1-9]))\/|\.(([1]{1}[0-2]|[0]?[1-9]))\.| (([1]{1}[0-2]|[0]?[1-9])) |-(([1]{1}[0-2]|[0]?[1-9]))-)(\d{4}|\d{2})$/, // DD[/. ]MM[/. ]YY(YY)
	"varchar":			/.+/, // At least one character
	"fullname":			/([a-zA-Z\u0080-\u00FF]{2,}) ([a-zA-Z\u0080-\u00FF]{2,})/ // First- and lastname
}

function getFlashMovie(movieName) {
		var isIE = navigator.appName.indexOf("Microsoft") != -1;
		return (isIE) ? window[movieName] : document[movieName];
	}

function draw(caller, salesColor, salesValue, marketingColor, marketingValue, serviceColor, serviceValue) {
	getFlashMovie(caller).drawChart(salesColor, salesValue, marketingColor, marketingValue, serviceColor, serviceValue);
}

