var uploader;

$(function(){
	
	/* Блок настроек всех фотографий */
	$('.Upload a').click(function(){
		$(this).parent().find('.Active').removeClass('Active');
		$(this).addClass('Active');
		setAllPhotoItems();
		return false;
	});
	$('.Upload input').click(function(){
		setAllPhotoItems();
	});
	
	/* Индивидуальные настройки */
	$('.PhotoOptions:not(.UploadForm) a').live('click', function(){
		$(this).parent().find('.Active,.UserActive').removeClass();
		$(this).addClass('Active').addClass('UserActive');
		//Цена
		var obj = $(this).parent().parent().parent().parent().parent();
		$(obj).find('.PhotoFinalPrice').text(pricePhotoItem($(obj)));
		showPrice();
		return false;
	});
	
	/* Индивидуальные настройки (чекбоксы) */
	$('.PhotoOptions:not(.UploadForm) input').live('click', function(){
		//Цена
		var obj = $(this).parent().parent().parent().parent().parent();
		$(obj).find('.PhotoFinalPrice').text(pricePhotoItem($(obj)));
		showPrice();
	});
	
	/* Изменение количества */
	$('.PhotoCount').live('keyup', function(){
		var obj = $(this).parent().parent().parent();
		//$(this).val(pricePhotoItem(obj));
		var price = pricePhotoItem(obj);
		$(this).parent().find('.PhotoFinalPrice').text(price);
		showPrice();
	});
	
	/* Убрать */
	$('.PhotoRemove a').live('click', function(){
		//var id = $(this).attr('id');
		var parentObj = $(this).parent().parent();
		var id = parentObj.attr('id');
		var file = uploader.getFile(id);
		if(file.status != plupload.DONE) {
			uploader.removeFile(file);
			parentObj.fadeOut('normal',function(){
				$(this).remove();
				showPrice();
			});
		} else {
			parentObj.fadeOut('normal',function(){
				$(this).remove();
				showPrice();
			});
		}
		
		allprices[id] = 0;
		allcounts[id] = 0;
		
		return false;
	});
	
	
	
	
	
	
	
	function setAllPhotoItems() {
		$('.PhotoItem').each(function(i,item){ setPhotoItem(item); });
		showPrice();
	}
	
	function setPhotoItem(obj) {
		//опции <a...
		$(obj).find('.PhotoOptions a').each(function(i, item){
			var itemName = $(item).attr('rel');
			if($(item).parent().find('.UserActive').length > 0) return;
			if($('#' + itemName).hasClass('Active')) {
				$(item).addClass('Active');
			} else {
				$(item).removeClass('Active');
			}
		});
		//галочки
		$(obj).find('.PhotoOptions input').each(function(i, item){
			var itemName = $(item).attr('class');
			if($(item).attr('disabled') == false && $(item).attr('checked') == true) return;
			if($('#' + itemName).attr('checked')) {
				$(item).attr('checked', true).attr('disabled', true);
			} else {
				$(item).attr('checked', false).attr('disabled', false);
			}
		});
		//Цена
		$(obj).find('.PhotoFinalPrice').text(pricePhotoItem($(obj)));
	}
	
	function getAllPhotoItems() {
		var dump = [];
		$('.PhotoItem').each(function(i,item){
			if($(this).attr('id') == 'PhotoItemTemplate') return;
			dump[i] = getPhotoItem($(this));
		});
		return dump;
	}
	
	function getPhotoItem(obj) {
		//ID
		var id = obj.attr('id');
		//Имя файла
		var name = obj.find('.PhotoFileName').text();
		//Определяем формат
		var format = obj.find('.PhotoFormat a.Active,.PhotoFormat a.UserActive').attr('rel').substr(4);
		//Определяем бумагу
		var paper = obj.find('.PhotoPaper a.Active,.PhotoPaper a.UserActive').attr('rel').substr(5);
		//Определяем поля
		var fields = obj.find('.PhotoFields a.Active,.PhotoFields a.UserActive').attr('rel').substr(6);
		//Красные глаза
		var redeye = obj.find('.addRedEye').attr('checked')?'Y':'N';
		//Цветокоррекция
		var coloradj = obj.find('.addColorAdj').attr('checked')?'Y':'N';
		//Количество
		var count = Math.abs(parseInt(obj.find('.PhotoCount').val()));
		
		var item = {
					"id":		id,
					"name":		name,
					"format":	format,
					"paper":	paper,
					"fields":	fields,
					"redeye":	redeye,
					"coloradj":	coloradj,
					"count":	count	
		};
		
		return item;
	}
	
	
	var allprices = {};
	var allcounts = {};
	function pricePhotoItem(obj) {
		
		if(obj.attr('id') == 'PhotoItemTemplate') return;
		
		var price = 0;
		//Определяем формат
		var format = obj.find('.PhotoFormat a.Active,.PhotoFormat a.UserActive').attr('rel').substr(4);
		//Определяем бумагу		
		var paper = obj.find('.PhotoPaper a.Active,.PhotoPaper a.UserActive').attr('rel').substr(5);
		//Исходная цена
		var iniPrice = prices[format][paper];
		price = iniPrice;
		//Красные глаза
		if(obj.find('.addRedEye').attr('checked')) {
			price += iniPrice;
		}
		//Цветокоррекция
		if(obj.find('.addColorAdj').attr('checked')) {
			price += iniPrice/2;
		}
		//Количество
		var count = Math.abs(parseInt(obj.find('.PhotoCount').val()));
		price = price*count;
		
		if(obj.length == 0) {
			price = 0;
			count = 0;
		}
		
		allprices[obj.attr('id')] = price;
		
		allcounts[obj.attr('id')] = count;
		
		return price;
	}
	
	
	function showPrice() {
		var totalCount = 0;
		$.each(allcounts, function(i, val){
			totalCount += val;
		});
		
		var totalPrice = 0;
		$.each(allprices, function(i, val){
			totalPrice += val;
		});
		
		$('#TotalCount').text(totalCount);
		$('#TotalPrice').text(totalPrice);
	}
	
	
	/* Заказ */
	$('#Order').click(function(){
		var FormName = $('#FormName');
		var FormPhone = $('#FormPhone');
		var FormMail = $('#FormMail');
		var FormAddress = $('#FormAddress');
		var Comment = $('#Comment');
		
		if(FormName.val() == '') {
			alert("Пожалуйста представьтесь");
			FormName.focus();
			return;
		}
		if(FormPhone.val() == '' && FormMail.val() == '') {
			alert("Напишите свой телефон или электронную почту");
			FormPhone.focus();
			return;
		}
		
		var data = getAllPhotoItems();
		
		if(data.length == 0) {
			alert("Загрузите ваши фотографии");
			$('html,body').animate( {
				scrollTop : 0
			}, 500, 'swing');
			return;
		}
		
		var info = {
			"name": FormName.val(),
			"phone": FormPhone.val(),
			"mail": FormMail.val(),
			"address": FormAddress.val(),
			"comment": Comment.val(),
			"star": $('#IWonnaBeAStar').attr('checked')?'Y':'N'
		};
		
		//Лодер
		$(this).hide().parent().html('<img src="/Images/sender.gif" width="103" height="64" alt="Отправка данных" style="margin:3em 0 0 40%" />');
		
		$.ajax({
			type: 'POST',
			data: {"photos":data, "info":info},
			url: '/order',
			dataType: "json",
			success: function(result){
				//console.log(result);
				if(result.status == 'ok') {
					//alert('Спасибо за заказ');
					document.location = '/thank-you';
				}
			}
		});
	});
	
	
	
	
	
	
	
	/* Загрузка фотографий */
	uploader = new plupload.Uploader({
		runtimes : 'gears,browserplus,flash,silverlight,html5,html4',
		browse_button : 'pickfiles',
		max_file_size : '100mb',
		chunk_size : '1mb',
		//unique_names : true,
		url : '/upload',
		flash_swf_url : '/Js/plupload/plupload.flash.swf',
		silverlight_xap_url : '/Js/plupload/plupload.silverlight.xap',
		filters : [
			{title : "Фотки", extensions : "jpg,jpeg,gif,png,JPG,JPEG,GIF,PNG"}
		]
	});
	
	uploader.bind('Init', function(up, params) {
		//$('#filelist').html("<div>Current runtime: " + params.runtime + "</div>");
	});
	
	uploader.bind('FilesAdded', function(up, files) {
		$('#TitleAll').show();
		$.each(files, function(i, file) {
			var item = $('#PhotoItemTemplate').clone();
			$('#PhotoList').append(item);
			//setPhotoItem(item);
			item.show().attr('id', file.id);
			item.find(".PhotoFileName").text(file.name);
			item.find(".PhotoFileSize").text(plupload.formatSize(file.size));
			item.find(".PhotoFileCurrent").text('0 KB');
			item.find(".addRedEye").attr('id', 'addRedEyePhoto'+file.id).next().attr('for', 'addRedEyePhoto'+file.id);
			item.find(".addColorAdj").attr('id', 'addColorAdj'+file.id).next().attr('for', 'addColorAdj'+file.id);
		});
		setAllPhotoItems();
		setTimeout(function(){
			uploader.start();
		},500);
	});
	
	uploader.bind('UploadProgress', function(up, file) {
		if (file.status == plupload.DONE) {
			var  item = $('#' + file.id);
			$(item).find(".PhotoImage").html('<img src="/data/tmp/thumbs/' + file.target_name + '" alt="' + file.name + '" />');
			$(item).find(".PhotoFileStatus").html('<span style="color:green; font-weight:bold">файл загружен</span>');
			
			$('html,body').animate( {
				scrollTop : item.offset().top - 200
			}, 500, 'swing');

		} else {
			$('#' + file.id + " .PhotoFileCurrent").text(plupload.formatSize(file.loaded));
		}
	});
	
	uploader.bind("UploadFile", function(up, file) {
		var namep = file.name.split('.');
		var ext = namep[namep.length - 1];
		
		file.target_name = file.id + '.' + ext;
	});

	uploader.init();
	
	
	
	
	
});

