var order_form_state = 'pre-init';
jQuery(function($){
	function reload_order_summary() {
		num_pages = $('#number_of_pages').val();
		
		$('#num-templates').html(num_pages);
		
		var days_needed = $('#package').val();
		var delivery_date = calculate_delivery_date(days_needed);
		var formated_date = weekdays[delivery_date.getDay()] + 
			", " + months[delivery_date.getMonth()] +
			"/" + zero_padded(delivery_date.getDate());
		$('#deliverydate').html(formated_date);
		
		var turnaround_days = $('#package').val();
		
		var per_template = turnaround_days == 2 ? 138 : 98;
		
		if ($('.addition.campaignmonitor').is(':checked')) {
			per_template += turnaround_days == 2 ? 68 : 48;
		}
		
		if ($('.addition.mailchimp').is(':checked')) {
			per_template += turnaround_days == 2 ? 68 : 48;
		}
		
		var price = per_template * num_pages;
		
		$('#price').html('$' + price);
		
		$('#num-pages').val(num_pages);
	}
	function create_date() {
	    var d = new Date();
	    d.setTime(CURRENT_TIME * 1000);
	    return d;
	}
	function calculate_delivery_date(business_days_needed) {
	    var delivery_date = create_date();
	    for (var i=0; i < business_days_needed; ) {
	    	delivery_date.setTime(delivery_date.getTime() + 86400 * 1000);
	    	if (delivery_date.is_business_day()) {
	    		i++;
	    	}
	    }
	    return delivery_date;
	}
	reload_order_summary();
	$('select.changes-price').change(reload_order_summary);
	$('input.changes-price').click(reload_order_summary);
	
	$('#package').change(function () {
		var integration_price = $(this).val() == 2 ? 68 : 48;
	    $('.integration-price').html(integration_price);
	}).change();
	/* --- */
	$('#contactform').submit(function () {
	    var mail = $(this).find('input[name=mail]');
	    var message = $(this).find('textarea[name=message]');
	    
	    var err = '';
	    if (mail.val()=='') {
	    	err = {field: mail, msg: 'Please, enter your e-mail address'};
	    } else if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(mail.val())==false) {
	    	err = {field: mail, msg: 'Please, enter valid e-mail address'};
	    } else if (message.val()=='') {
	    	err = {field: message, msg: 'Please, enter your message'};
	    }
	    
	    if (err) {
	    	alert(err.msg);
	    	err.field.focus();
	    	return false;
	    }
	});
	function file_queue_error(file, code, message) {
		var error_message = "";
		if (code==SWFUpload.errorCode_QUEUE_LIMIT_EXCEEDED) {
			alert("Please choose single file.");
		} else if (code==SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE) {
			alert("Please choose non-empty file.");
		} else if (code==SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT) {
			alert("You're trying to upload too big file.");
		} else {
			alert(code);
		}
	}
	function file_dialog_complete(num_files_selected, num_files_queued) {
		var num_files = this.getStats().files_queued;
		
		var f = swfu.getFile(num_files - 1);
		$('.uploadfield').val(f.name);
		// cancel previous upload
		if (num_files > 1) {
			swfu.cancelUpload(swfu.getFile(0).id, false);
		}
		order_form_state = 'pending-upload';
	}
	function upload_progress(file, bytesLoaded) {
		var percent = Math.ceil((bytesLoaded / file.size) * 100);
		$('#progressbar-loader').css('width', percent + '%');
		$('#percent-done').html(percent);
	}
	function upload_success(file, files_location) {
		swfu.destroy();
		$('#designs-location').val(files_location);
		$('#progressbar-message').html("Please, wait ... ");
		order_form_state = 'upload-complete';
		$('#orderform').submit();
	}
	function upload_error(file, errorCode, message) {
		alert("upload_error" + message);
	}
	function upload_complete(file, errorCode, message) {
		
	}
	$('#orderform').submit(function () {
	    var name = $(this).find('input[name=uname]');
	    var mail = $(this).find('input[name=mail]');
	    var message = $(this).find('textarea[name=message]');
	    
	    if (name.val()=='') {
	    	alert("Please, enter your name");
	    	name.focus();
	    	return false;
	    }
	    if (mail.val()=='') {
	    	alert("Please, enter your e-mail address");
	    	mail.focus();
	    	return false;
	    }
	    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(mail.val())==false) {
	    	alert("Please, enter valid e-mail address");
	    	mail.focus();
	    	return false;
	    }
	    if (message.val()=='') {
	    	alert("Please, enter comments or instructions");
	    	message.focus();
	    	return false;
	    }

	    if (order_form_state=='pending-upload') {
		    $('#progress').slideDown();
		    swfu.startUpload();
		    return false;	
	    }
	});
	
	if ($('#flash-upload-button').length) {
		swfu = new SWFUpload({
			// Backend Settings
			upload_url: SITE_HOME + "/upload.php",
	
			// File Upload Settings
			file_size_limit: "100 MB",
			file_types: ALLOWED_FORMATS,
			file_types_description : "Design Assets",
	
			file_queue_error_handler: file_queue_error,
			file_dialog_complete_handler: file_dialog_complete,
			upload_progress_handler: upload_progress,
			upload_error_handler: upload_error,
			upload_success_handler: upload_success,
			upload_complete_handler: upload_complete,
	
			// Button Settings
			button_image_url: STYLESHEET_DIRECTORY + "/images/browse.png",
			button_placeholder_id : "flash-upload-button",
			button_width: 76,
			button_height: 36,
			button_text : '',
			button_text_style : '',
			button_text_top_padding: 0,
			button_text_left_padding: 0,
			button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
			button_cursor: SWFUpload.CURSOR.HAND,
			
			// Single file upload allowed
			button_action: SWFUpload.BUTTON_ACTION.SELECT_FILE,
			
			// Flash Settings
			flash_url : STYLESHEET_DIRECTORY + "/js/swfupload/swfupload.swf",
			
			// Debug Settings
			debug: false
		});
		order_form_state = 'init';
	};
	
	$('.summary-order-button').hover(
		function () {$(this).addClass('js_hovered')},
		function () {$(this).removeClass('js_hovered')}
	);
});
SUNDAY = 0, SATURDAY = 6;
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
Date.prototype.is_business_day = function () {
	return !(this.getDay()==SUNDAY || this.getDay()==SATURDAY);
}
function zero_padded(i) {
    return i < 10 ? '0' + i : i;
}