Number.prototype.toNearest = function(num) { // num is an exponent of 10
	 return Math.round(this/num)*num;
}

function explode (delimiter, string, limit) {
    // http://kevin.vanzonneveld.net
    // +     original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     improved by: kenneth
    // +     improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     improved by: d3x
    // +     bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: explode(' ', 'Kevin van Zonneveld');
    // *     returns 1: {0: 'Kevin', 1: 'van', 2: 'Zonneveld'}
    // *     example 2: explode('=', 'a=bc=d', 2);
    // *     returns 2: ['a', 'bc=d']
    var emptyArray = {
        0: ''
    };

    // third argument is not required
    if (arguments.length < 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined') {
        return null;
    }

    if (delimiter === '' || delimiter === false || delimiter === null) {
        return false;
    }

    if (typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object') {
        return emptyArray;
    }

    if (delimiter === true) {
        delimiter = '1';
    }

    if (!limit) {
        return string.toString().split(delimiter.toString());
    } else {
        // support for limit argument
        var splitted = string.toString().split(delimiter.toString());
        var partA = splitted.splice(0, limit - 1);
        var partB = splitted.join(delimiter.toString());
        partA.push(partB);
        return partA;
    }
}


function setcurrency(thistxt,symbol) {

	$("#currencysymbol").val(symbol);
	
	old_currency = project.currency;
	
	project.currency = thistxt;
		
	update_budget_range($("#length").val());
	
	check_budget(old_currency);
	
	update_fees(thistxt,symbol);
	
	update_total_cost();

}
	
function update_media_types() {

	var media_types = $('input[name="categories[]"]'); 

	var num_media_selected = 0;
	
	var arr = new Array();

	media_types.each(function() { 

		if($(this).is(':checked')){

			num_media_selected++;
			
			id = $(this).val();
			
			arr.push(cats[id-1]);

		}

	});
	
	var html ="";

	if (num_media_selected > 0) {
	
		for (var i = 0; i < arr.length; i++) {
			html += "<li>"+arr[i]+"</li>";
		}

	}
	
	var other = $("#other").val();
	
	if ($("#OT").is(':checked') && other != ""){
		html += "<li>"+other+"</li>";
	}
	
	if (html == "") html = "<li>None selected</li>";
	
	$('ul.option_list.media_type').html(html);

}	

function set_fee() {
	var e = eval("xe."+project.currency);
	var ex = 1/e;
	var fee = Math.ceil(ex*listing_fee.basic);
	project.listing_fee = fee;
}

function update_fees(thistxt,symbol) {
	
	var e = eval("xe."+project.currency);
	var ex = 1/e;

	/*$("#fee_basic").html(symbol + Math.ceil(ex*listing_fee.basic));
	$("#fee_featured").html(symbol + Math.ceil(ex*listing_fee.featured));
	$("#fee_premium").html(symbol + Math.ceil(ex*listing_fee.premium));
	$("#fee_strikeout").html(symbol + Math.ceil(ex*listing_fee.strikeout));*/
	
	if (typeof($("#info_fee")) != undefined) {
		//var value = $("input[@name='listing']:checked").val();
		var value = $(".listing_fee input[@name='listing']:checked").val();
		if (value == undefined) {
			var fee = Math.ceil(ex*listing_fee.basic);
			$("#info_fee").html(symbol + fee);
			$("#summary_fee").html(symbol + fee);
			project.listing_fee = fee;
		} else {
			var el = eval('"#fee_'+value+'"');
			var html = $(el).html();
			$("#info_fee").html(html);
			$("#summary_fee").html(html);
		}
		//alert(value);
	}
	
	if (typeof($("#info_wooshii_fee")) != undefined) {
		update_wooshii_fee();
	}

}

function update_listing_fee(btn) {
	var value = $(btn).val();
	var el = eval('"#fee_'+value+'"');
	var html = $(el).html();
	$("#info_fee").html(html);
}

function check_budget(old_currency) {
	var budget = $("#budget").val();
	var ex = eval("xe."+project.currency);
	var budget_gbp = budget*ex;
	$("#budget_gbp").val(budget_gbp);
	var dx = (budget_range.tolerance/100)*budget_range.ok;
	$("#dx").val(dx);
	var range;
	if (budget_gbp <= budget_range.low){
		$("#budget_meter").text("low");
		$("#budget_meter").attr('class', 'low');
		range = "low";
	} else if (budget_gbp > budget_range.ok + dx && budget_gbp < budget_range.high){
		$("#budget_meter").text("good");
		$("#budget_meter").attr('class', 'good');
		range = "good";
	} else if (budget_gbp >= budget_range.high){
		$("#budget_meter").text("best");
		$("#budget_meter").attr('class', 'best');
		range = "best";
	} else {
		$("#budget_meter").text("ok");
		$("#budget_meter").attr('class', 'ok');
		range = "ok";
	}
	var el1 = $("span#info_num_pitches");
	var el2 = $("span#summary_num_pitches");
	var el3 = $("span#summary_budget");
	if (el1 != undefined) {
		switch(range) {
			case "low":
			  num_pitches = "4-6";
			  break;
			case "ok":
			  num_pitches = "6-8";
			  break;
			case "good":
			  num_pitches = "8-10";
			  break;
			case "best":
			  num_pitches = "10-12";
			  break;
			default:
			  num_pitches = "8-10";
		}
		$(el1).html(num_pitches);
		if (el2 != undefined) $(el2).html(num_pitches);
		if (el3 != undefined) $(el3).html($("#currencysymbol").val() + budget);
	}
	project.budget = budget;
	update_wooshii_fee();
	update_total_cost();
	/*if (budget < budget_range.ok*ex - dx){
		$("#budget_meter").text("low");
		$("#budget_meter").attr('class', 'low');
	} else if (budget > budget_range.ok*ex + dx && budget < budget_range.ok*ex + (2*dx)){
		$("#budget_meter").text("good");
		$("#budget_meter").attr('class', 'good');
	} else if (budget >= budget_range.ok*ex + (2*dx)){
		$("#budget_meter").text("best");
		$("#budget_meter").attr('class', 'best');
	} else {
		$("#budget_meter").text("ok");
		$("#budget_meter").attr('class', 'ok');
	}*/
}

function update_total_cost() {
	var is_creative = $("#is_creative").val();
	if (is_creative!=1) {
		var total = parseFloat(project.budget) + parseFloat(project.wooshii_fee) + parseFloat(project.listing_fee);
	} else {
		var total = parseFloat(project.budget) + parseFloat(project.listing_fee);	
	}
	var final_total = $("span#summary_total");
	final_total.html($("#currencysymbol").val() + total);
}

function update_wooshii_fee() {
	var budget = $("#budget").val();
	var wooshii_fee = (buyer_commission/100) * budget;
	wooshii_fee = wooshii_fee.toFixed(2);
	var symbol = $("#currencysymbol").val();
	$("#info_wooshii_fee").html(symbol + wooshii_fee);
	if (typeof($("#summary_wooshii_fee")) != undefined) {
		$("#summary_wooshii_fee").html(symbol + wooshii_fee);
	}
	project.wooshii_fee = wooshii_fee;
}

function update_budget_range(val) {
	if (val <= 30) {
		budget_range.low = 400;
		budget_range.ok = 500;
		budget_range.high = 800;
	} else if (val <= 60) {
		budget_range.low = 500;
		budget_range.ok = 600;
		budget_range.high = 1000;
	} else if (val <= 90) {
		budget_range.low = 600;
		budget_range.ok = 700;
		budget_range.high = 1100;
	} else if (val <= 120) {
		budget_range.low = 700;
		budget_range.ok = 900;
		budget_range.high = 1200;
	} else {
		budget_range.ok = 1000 + (val / 30 - 5) * 200;
		budget_range.low = budget_range.ok - ((val / 30 ) * 30);
		budget_range.high = (budget_range.ok) * 2 + ((val / 30 - 5) * 50);
	}
	
	//convert currency
	
	var ex = 1/eval("xe."+project.currency);
	var range_lower = (budget_range.ok * ex).toNearest(50);
	var range_upper = (budget_range.high * ex).toNearest(50);
	range_upper *= 1.5;
	
	$("#ok").val(budget_range.ok);
	$("#low").val(budget_range.low);
	$("#high").val(budget_range.high);
	var currencysymbol = $("#currencysymbol").val();
	$("#suggested_budget").html(currencysymbol + range_lower + "-" + range_upper);
	
	// only on form page
	
	var static_budget_text = $('.option_list.budget');
	
	if (typeof(static_budget_text) != undefined) {
		$(static_budget_text).html(currencysymbol+$("#budget").val());
	}
	/*if (val < 30) {
		budget_range.low = 100;
		budget_range.ok = 500;
		budget_range.high = 1000;
	} else {
		budget_range.ok = 500 + (val / 30 - 1) * 250;
		budget_range.low = budget_range.ok - 500;
		budget_range.high = budget_range.ok + 500;
	}*/
}

function is_eu(countrycode) {
	if ($.inArray(countrycode, eu_countries)!=-1){
		return true;
	}
	return false;
}

function submit_form() {
	$("#error_message").hide();
	if (typeof(tinyMCE) !== "undefined") {
		tinyMCE.triggerSave();
	}
	$("#project_form").submit();
}

function show_addons() {
	
	// was only loading once - ie if you closed it, it wouldn't open again
	// added this bodge code to make it load more than once
	
	if ($("#addons").data("triggered")) {
		
		$("#addons").overlay().load();
		
	} else {
							 
		$("#addons").data("triggered",true);

	  // select the overlay element - and "make it an overlay"

	
		$("#addons").overlay({    
	
	
			// custom top position
			top: 20,
			
			fixed: false,
		
			// some mask tweaks
			mask: {
		
				// you might also consider a "transparent" color for the mask
				color: '#fff',
		
				// load mask a little faster
				loadSpeed: 200,
		
				// very transparent
				opacity: 0.5
			},
		
			// disable this for modal dialog-type of overlays
			closeOnClick: false,
			
			oneInstance: false,
		
			// load it immediately after the construction
			load: true
		
		});
		
	}

}
	
$(function() {
		   
	$('a.choose_option').click( function(){
	  //alert(add_ons);
	  $('.listing_type').removeAttr('checked');
	  var listing_type = $(this).attr('id');
	  var id = listing_type.substring(13);
	  $('.listing_type[value="'+id+'"]').attr('checked', 'checked');
	  submit_form();
	  return false;
	});
		   
	$('a.submit_form').click( function(){
	  submit_form();
	  /*$("#error_message").hide();
	  tinyMCE.triggerSave();
	  $("#project_form").submit();*/
	  return false;
	});

	$(function() {
		$("a.overlay[rel]").overlay();
	});

    var validator = $("#project_form").validate({ 

        onfocusout: false,

		rules: { 

            project_title: { 

                required: true 

            },

            project_brief: { 

                required: true 

            }, 

            budget: { 

                required: true, 

                digits: true,

				minlength: 3

            }, 

            project_length: { 

                required: true,  

                digits: true,

				min: 3,

				max: 28

            }

        }, 

        messages: { 

            project_title: { 

                required: "No title = no can do"

            },

            project_brief: { 

                required: "Please give the creatives a description of what you want" 

            }, 

            budget: { 

                required: "Yep, we checked, you didn't enter your budget", 

				digits: "Just numbers will do fine",

                minlength: jQuery.format("We really need at least {0} characters") 

            }, 

            project_deadline: { 

                required: "When do you need the media by?", 

				digits: "Just numbers (3-28) will do fine",

				min: "3 days minimum please",

				max: "28 days max please"

            }

        }, 

        // the errorPlacement has to take the table layout into account 

        errorPlacement: function(error, element) { 

            if ( element.is(":radio") ) 

                error.appendTo( element.parent().next() ); 

            else if ( element.is(":checkbox") ) 

                error.appendTo ( element.next() ); 

            else if ( element.is("#budget") ) 
 
				error.insertAfter("#edit_budget").addClass("error_message");

            else 

                error.appendTo( element.parent() ); 

				//alert(element.parent().next().attr("id"));

				//element.parent().after(error);

        }, 

        submitHandler: function(form) { 

			if (!isMediaSelected()) {

				//$('.cboxes').after('<label class="error" for="IM" generated="true">Please select at least one media type</label>');

				$('#edit_media_types').after('<label class="error error_message" for="IM" generated="true">Please select at least one media type</label>');

				return false;

			} else if ($("#OT").is(':checked') && $("#other").val()=="") {

				$('#other').parent().append('<label class="error" for="other" generated="true">Please indicate which other media type</label>');

				return false;

			} else {

				if ($("#addons").is(':visible')) {
					$("#addons").hide();
					show_modal();
					form.submit();
				} else {
					show_addons();
				}

			}

        },
		
		invalidHandler: function() {
			
			$("#error_message").show();
			
		}
		/*, 

        // set this class to error-labels to indicate valid fields 

        success: function(label) { 

            // set   as text for IE 

            label.html(" ").addClass("checked"); 

        } */

    }); 

	

	function isMediaSelected(){

		var media_types = $('input[name="categories[]"]'); 

		var num_media_selected = 0;

		media_types.each(function() { 

			if($(this).is(':checked')){

				num_media_selected++;

			}

		});
		
		if($('#OT').is(':checked') && $('#OT').val != ""){

			num_media_selected++;

		}

		if (num_media_selected > 0) {

			return true;

		} else {

			return false;

		}

	}	
	

	$("select#countrycode").change(function () {

          var countrycode = $(this).val();
		  
		  var $div = $('#eu_vat_div');
		  var height = $div.height();
		  
		  /*if (is_eu(countrycode)){
			  
			  $('#eu_vat_div').show();
			  
		  } else {
			  
			  $('#eu_vat_div').hide();
			  
		  }*/
		  
		  if (is_eu(countrycode) || countrycode == 'GB'){
			  
			  $('#vat_div').show();
			  
		  } else {
			  
			  $('#vat_div').hide();
			  
		  }

        })

        .change();
		
		

	$("select#media_length").change(function () {
		var media_length = $(this).val();
		var secs = convert_media_length(media_length);
		update_budget_range(secs);
		check_budget(project.currency);
	
		// only on form page
		
		var static_media_length = $('.option_list.media_length');
		
		if (typeof(static_media_length) != undefined) {
			$(static_media_length).html(friendly_media_length(media_length));
		}
	});
	
	function convert_media_length(val) {
		if (val == '15secs') return 15;
		if (val == '30secs') return 30;
		if (val == 'gt10') return 600;
		secs = val * 60;
		return secs;
	}
	
	function friendly_media_length(val) {
		switch (val) {
			case "15secs":
				return "&lt 15 Seconds";
			case "30secs":
				return "&lt 30 Seconds";
			case "1":
				return "1 minute";
			case "1.5":
				return "1 and a half minutes";
			case "2":
				return "2 minutes";
			case "2.5":
				return "2 and a half minutes";
			case "3":
				return "3 minutes";
			case "3.5":
				return "3 and a half minutes";
			case "4":
				return "4 minutes";
			case "4.5":
				return "4 and a half minutes";
			case "5":
				return "5 minutes";
			case "5.5":
				return "5 and a half minutes";
			case "6":
				return "6 minutes";
			case "6.5":
				return "6 and a half minutes";
			case "7":
				return "7 minutes";
			case "7.5":
				return "7 and a half minutes";
			case "8":
				return "8 minutes";
			case "8.5":
				return "8 and a half minutes";
			case "9":
				return "9 minutes";
			case "9.5":
				return "9 and a half minutes";
			case "10":
				return "10 minutes";
			case "gt10":
				return "&gt; 10 minutes";

		}

	}
	

	$("#budget").keyup(function () {
		update_budget_range($("#length").val());
		check_budget(project.currency);
	});



	// tooltips

	// select all desired input fields and attach tooltips to them

	//$("#project_form :input[title], #project_form .help").tooltip({

	$("#project_form .help").tooltip({



		// place tooltip on the right edge

		position: "center right",

	

		// a little tweaking of the position

		offset: [-8, 40],

	

		// use the build-in fadeIn/fadeOut effect

		effect: "fade",

		

		// custom opacity setting

		opacity: 0.9,

		

		// use this single tooltip element

		tip: '.tooltip'

		

	});

	

	// .parent().after('<div class="help"><a href="#">wtf?</a></div>')

	

	/*$("#project_form div.help a").tooltip({



		// place tooltip on the right edge

		position: "center left",

	

		// a little tweaking of the position

		offset: [-2, -20],

	

		// use the build-in fadeIn/fadeOut effect

		effect: "fade",

		

		// custom opacity setting

		opacity: 0.7,

		

		// use this single tooltip element

		tip: '.tooltip'

		

	}).bind("click", function () {

		return false;

	});*/

	

            





 });



$(function() {

		$("#datepicker").datepicker({

			showAnim: 'fadeIn',

			duration: 'fast',

			dateFormat: 'dd/mm/yy',

			minDate:+3,

			maxDate:+28,

			showOn: 'button',

			buttonImage: 'http://wooshii.com/images/calendar.gif',

			buttonImageOnly: true,

			onClose: function(date) {

				updateDay();

			}

        });

		function updateDay(){

			if($('#datepicker').val() != ''){

				var date = $('#datepicker').val().split('/');

				var nowDate = new Date();

				var endDate = new Date(date[2], (date[1] - 1), date[0], nowDate.getHours(), nowDate.getMinutes(), nowDate.getSeconds());

				var diff = endDate - nowDate;

				diff = Math.round(diff/1000/60/60/24);

				$('#project_length').val(diff);

				//this.updatePicker();

			}

		}

		function updatePicker(){

			if ($('#project_length').val()!=""){

				var project_length = Number($('#project_length').val());

				var endDate=new Date();

				endDate.setDate(endDate.getDate()+project_length);

				var dd = endDate.getDate();

				var mm = endDate.getMonth();

				mm++;

				var yyyy = endDate.getFullYear();

				if ( dd < 10 ) {

					dd = "0" + dd;

				}

				if ( mm < 10 ) {

					mm = "0" + mm;

				}

				endDate = dd + "/" + mm + "/" + yyyy;

				$('#datepicker').val(endDate);

			}

		}

		$('#project_length').change(function () {

				updatePicker();

    	});

		

		updatePicker();
		
		update_budget_range($("#length").val());
		
		set_fee();
		
		check_budget(project.currency);

		if (project.currency == 'USD') update_fees('USD','$');
			else if (project.currency == 'EUR') update_fees('EUR','&euro;');
});



jQuery.fn.blindToggle = function(speed, easing, callback) {
  var h = this.height() + parseInt(this.css('paddingTop')) + parseInt(this.css('paddingBottom'));
  return this.animate({marginTop: parseInt(this.css('marginTop')) <0 ? 0 : -h}, speed, easing, callback);
};
 

$(function() {
		   
	$('div.more').hide();
	
	$('a.toggle_categories').click( function(){
	  $(this).next().toggle();
	  if ($(this).text()=='More Categories'){
		  $(this).text('Less Categories');
	  } else {
		  $(this).text('More Categories');
	  }
	  return false;
	});
	
	$('.listing_fee_btn').click( function(){
		update_listing_fee($(this));
	});
	
	$('#edit_media_types').toggle(function() {
	  $('.option_list.media_type').hide();
	  $('div#media_type_container').show();
	  $(this).text('Close');
	}, function() {
	  update_media_types();
	  $('div#media_type_container').hide();
	  $('.option_list.media_type').show();
	  $(this).text('Edit');
	});
	
	$('#edit_media_length').toggle(function() {
	  $('.option_list.media_length').hide();
	  $('div#media_length_container').show();
	  $(this).text('Close');
	}, function() {
	  $('div#media_length_container').hide();
	  $('.option_list.media_length').show();
	  $(this).text('Edit');
	});
	
	$('#edit_budget').toggle(function() {
	  $('.option_list.budget').hide();
	  $('div#budget_container').show();
	  $(this).text('Close');
	}, function() {
	  $('div#budget_container').hide();
	  $('.option_list.budget').show();
	  $(this).text('Edit');
	});

});

//function edit_media_types() {
	
