var cart = new Array(); //ex: cart[0] = [photo_id,size_id,quantity,tone,crop,retouch];
var cart_items = 0;
var pre_cart_num = '';
var pre_val = '';
var pre_item = '';
var max_qty = 151;// 1 greater than actual total
var tones = [['0','As is'],['B','B&W'],['S','Sepia']];
var num_tones = tones.length;
var default_tone = tones[0][0];
var default_quantity = 1;
var default_crop = '';
var default_retouch = '';
var begin_cart = '<form method="post" id="cart_form"><table class="cart_table" id="cart_table" cellspacing="0" cellpadding="0"><tbody id="cart_rows"><tr><th class="filename">Filename</th><th class="size">Size</th><th class="tone">Tone</th><th class="quantity">Quantity</th><th class="actions">Actions</th></tr>';
var end_cart = '</tbody></table></form>';
var curr_ref = '';

function get_size_name(siz) {
	var size_name;
	for (var i=0;i<sizes.length;i++) {
		if (sizes[i].size_id == siz) {
			size_name = sizes[i].display_name;
			
		}
	}
	return size_name;
}

function get_tone_name(ton) {
	var tone_name;
	for (var i=0;i<tones.length;i++) {
		if (tones[i][0] == ton) {
			tone_name = tones[i][1];
		}
	}
	return tone_name;
}

function get_curr_size(siz) {
	var size_index;
	for (var i=0;i<sizes.length;i++) {
		if (sizes[i].size_id == siz) {
			size_index = i;
		}
	}
	return size_index;
}


function show_cart(cart_html) {
	document.getElementById('bulk_order_form').innerHTML = cart_html;
}

function get_cart() {
	return document.getElementById('bulk_order_form').innerHTML;
}

function cart_clear() {
	if (confirm('Are you sure you want to clear all the contents of your cart?')) {
		empty_cart();
		cart_items = 0;
		show_cart(begin_cart + end_cart);
	}
}

function post_cart(url) {
	var tmp_event_id = document.getElementById('order_info_form').event_id.value;
	if (tmp_event_id != '') {
		event_id = tmp_event_id;
		url += '&event=' + event_id;
	}
	var order_id = document.getElementById('order_info_form').order_id.value;
	if (order_id != '' && order_id > 0) {
		url += '&order=' + order_id;
	}
	var post_cart ='';
	for (var i=0;i<cart.length;i++) {
		if (cart[i][0]) { //if cart row is not empty
			post_cart += '|' + cart[i][0] + '~' + cart[i][1] + '~' + cart[i][2] + '~' + cart[i][3] + '~' + cart[i][4] + '~' + cart[i][5];
		}
	}
	var form_el = document.createElement('FORM');
	form_el.setAttribute('id','post_cart_form');
	form_el.setAttribute('action',url);
	form_el.setAttribute('method','post');
	document.body.appendChild(form_el);
	
	var input_el = document.createElement('INPUT');
	input_el.setAttribute('name','cart');
	input_el.setAttribute('type','hidden');
	input_el.setAttribute('value',encodeURIComponent(post_cart.substr(1)));
	form_el.appendChild(input_el);
	
	document.getElementById('post_cart_form').submit();
}

function cart_save() {
	var url = 'bulk_order_new.php?cmd=save';
	post_cart(url);
}

function cart_checkout() {
	var url = 'bulk_order_new.php?cmd=checkout';
	post_cart(url);
}

function create_cart_row(filename,cart_num,items) {
	var siz,ton,qty,new_row,size_index;
	if (items) {
		siz = items[0];
		ton = items[1];
		qty = items[2];
	} else {	
		siz = (default_list_size > 0) ? default_list_size : sizes[0].size_id;
		ton = default_tone;
		qty = default_quantity;
	}
	
	size_index = get_curr_size(siz);
	
	new_row = '<tr id="row_' + cart_num + '"><td id="photo_name_' + cart_num + '">' + filename + '</td>';
	new_row += '<td id="cel_siz_' + cart_num + '"><a href="#" onmouseover="' + "javascript:cart_mod2('siz','" + cart_num + "'," + siz + ");" + '">' + sizes[size_index].display_name + '</a></td>';
	new_row += '<td id="cel_ton_' + cart_num + '"><a href="#" onmouseover="' + "javascript:cart_mod2('ton','" + cart_num + "','" + ton + "');" + '">' + get_tone_name(ton) + '</a></td>';
	new_row += '<td id="cel_qty_' + cart_num + '"><a href="#" onmouseover="' + "javascript:cart_mod2('qty','" + cart_num + "'," + qty + ");" + '">' + qty + '</a></td>';
	new_row += '<td><ul class="actions"><li class="retouch first"><a href="javascript:cart_mod(' + "'retouch','" + filename + "'," + cart_num + ');" title="retouch instructions">retouch</a></li>';
	new_row += '<li class="dupe"><a href="javascript:cart_mod(' + "'dupe','" + filename + "'," + cart_num + ');" title="duplicate item">dupe</a></li>';
	
	// check if size is croppable
	if (sizes[size_index].croppable == 'y') {
		new_row += '<li class="crop" id="crop_link_' + cart_num + '"><a href="javascript:cart_mod(' + "'crop','" + filename + "'," + cart_num + ');" title="crop photo">crop</a></li>';
	} else {
		new_row += '<li class="nocrop" id="crop_link_' + cart_num + '"><a href="javascript:void(0);" title="size chosen cannot be copped.">crop</a></li>';
	}
	
	new_row += '<li class="view"><a href="javascript:cart_mod(' + "'view','" + filename + "'," + cart_num + ');" title="view photo">view</a></li>';
	new_row += '<li class="delete"><a href="javascript:cart_mod(' + "'delete','" + filename + "'," + cart_num + ');" title="delete item">delete</a></li>';
	new_row += '</ul></td></tr>';
	return new_row;
}

function cart_display(new_rows) {
	var new_html = '';
	var curr_html = get_cart();
	if (curr_html != '') {
		var reg_exp = new RegExp("</TH></TR>","i");
		var tmp = curr_html.split(reg_exp);
		var reg_exp = new RegExp("</TBODY>","i");
		var tmp2 = tmp[1].split(reg_exp);
		new_html = tmp2[0];		
	}
	var cart_html = begin_cart + new_rows + new_html + end_cart;
	show_cart(cart_html);
}

function update_ref(order_id) {
	var f = document.getElementById('order_ref_form');
	if (f.ref.value == '' || f.ref.value == ' ') {
		alert('Please add a reference!');
	} else {
		var order_ref = f.ref.value;
		curr_ref = order_ref;
		document.getElementById('order_ref').innerHTML = '<h2><span>Reference:</span>' + order_ref + '<a href="javascript:edit_ref(' + order_id + ');">edit</h2>';
		
		var ajax_params = 'id=' + order_id + '&ref=' + order_ref;
		var ajax_url = 'http://www.myeventorder.com/client/inc/update_order_ref.php';
		var ajax_method = 'POST';
		if (ajax_available()) {
			ajax_action = function() {
				var order_ref = ajax_response_txt;
			}
			ajax_send(ajax_method,ajax_url,ajax_params);
		}
	}
	hide_message();
}

function edit_ref(order_id) {
	document.getElementById('order_ref').innerHTML = '<h2><form id="order_ref_form">edit reference to this order: <input type="text" name="ref" value="' + curr_ref + '" /><a href="javascript:update_ref(' + order_id + ');">update</a></form></h2>';
}


function hide_message() {
	document.getElementById('message').style.display='none';
}

function bulk_add_multi() {
	var loop = 0;
	var photos = [];
	var new_rows = '';
	var form_ref = document.getElementById('photo_list_form');
	var form_len = form_ref.length;
	
	var num_checked = 0;
	for(var i=0;i<form_len;i++) {
		if (form_ref[i].checked) {num_checked++;}
	}
	var next_cart = (cart_items + num_checked)-1;
	
	for(var i=0;i<form_len;i++) {
		if (form_ref[i].checked) {
			var photo_info = form_ref[i].value.split('-');
			photos[num_checked-1] = photo_info[0]; //photos[loop] = photo_info[0];
			new_rows += create_cart_row(photo_info[1],next_cart);
			form_ref[i].checked = false;
			loop++;
			next_cart--;
			num_checked--;
		}
	}
	if (photos.length > 0) {
		insert_carts(photos);
		cart_display(new_rows);
	} else {
		alert('No photos are checked!');
	}
	hide_message();
}

function bulk_add_single(photo_id,filename) {
	var new_row = create_cart_row(filename,cart_items);
	var photo = [photo_id];
	insert_carts(photo);
	cart_display(new_row);
	hide_message();
}

var new_multiple = 0;
function multiple_of(init_val,multi_val,max_val) {
	var init_val = parseFloat(init_val);
	var multi_val = parseFloat(multi_val);
	var max_val = parseFloat(max_val);
	if (init_val % multi_val > 0) {
		init_val = init_val + 1;
		multiple_of(init_val,multi_val,max_val);
	} else {
		if (init_val > max_val) {
			init_val = init_val - multi_val;
		}
		new_multiple = init_val;
	}
}

function cart_val_mod(cart_num,item) {
	var new_val = document.getElementById('select_cel_'+item+'_'+cart_num).value;
	//========= if the current selected product is 'photopetit 8up' (id 37) then the quantiy has to be a multiple of 5
	if (item == 'qty' && cart[cart_num][1] == 37) {
		multiple_of(new_val,5,max_qty);
		new_val = new_multiple;
	}
	if (item == 'siz' && new_val == 37) {
		multiple_of(cart[cart_num][2],5,max_qty);
		cart[cart_num][2] = new_multiple;
		var mouse_over = "javascript:cart_mod2('qty','" + cart_num + "','" + new_multiple + "');";
		document.getElementById('cel_qty_'+cart_num).innerHTML = '<a href="#" onmouseover="' + mouse_over + '">' + new_multiple + '</a>';
	}
	//========= 
	var new_name = new_val.toString();

	switch (item) {
	case 'siz' :
		//new_name = get_size_name(new_val);
		var curr_size_index = get_curr_size(new_val);
		new_name = sizes[curr_size_index].display_name;
		
		//clear crop info and check if new size is croppable
		cart[cart_num][4] = '';
		if (sizes[curr_size_index].croppable == 'y') {
			var filename = document.getElementById('photo_name_'+cart_num).innerHTML;
			document.getElementById('crop_link_'+cart_num).innerHTML = '<a href="javascript:cart_mod(' + "'crop','" + filename + "'," + cart_num + ');" title="crop photo">crop</a>';
			document.getElementById('crop_link_'+cart_num).className = 'crop';
		} else {
			document.getElementById('crop_link_'+cart_num).innerHTML = '<a href="javascript:void(0);" title="size chosen cannot be copped.">crop</a>';
			document.getElementById('crop_link_'+cart_num).className = 'nocrop';
		}
		
		break;
	case 'ton' :
		new_name = get_tone_name(new_val);
		break;
	}
	var mouse_over = "javascript:cart_mod2('" + item + "','" + cart_num + "','" + new_val + "');";
	document.getElementById('cel_'+item+'_'+cart_num).innerHTML = '<a href="#" onmouseover="' + mouse_over + '">' + new_name + '</a>';
	
	pre_cart_num='';
	update_cart(cart_num,item,new_val);
}

function cart_mod(mod,filename,cart_num) {
	switch(mod) {
	case 'delete' :
		var table_ref = document.getElementById('cart_rows'); //<tbody>
		var row_ref = document.getElementById('row_'+cart_num);
		table_ref.removeChild(row_ref);
		var cart_array = [cart_num];
		delete_carts(cart_array);
		break;
	case 'crop' :
		var crop_data = encodeURIComponent(cart[cart_num][4]);
		var photo_id = cart[cart_num][0];
		var size_id = cart[cart_num][1];
		var crop_url = 'http://www.myeventorder.com/crop/crop2.php?cmd=crop&event_id=' + event_id + '&photo_id=' + photo_id + '&size_id=' + size_id + '&cart_num=' + cart_num + '&crop_data=' + crop_data;
		open_win(crop_url,'crop','height=650,width=600,resizable,scrollbars');
		break;
	case 'dupe' :
		dupe_carts(cart_num,cart_items,filename);
		break;
	case 'view' :
		var preview_url = 'http://www.myeventorder.com/preview_pict.php?eid=' + event_id + '&file=' + encodeURIComponent(filename);
		var preview_win = window.open(preview_url, 'preview', 'width=480,height=520,top=0,left=0,resizable,scrollbars,statusbar');
		preview_win.focus();
		break;
	case 'retouch' :
		close_retouch();
		open_retouch(cart_num);
		break;
	}
}

function encode_retouch(el) {
	var r = el.replace(/\n/g," ");
	r = r.replace(/\r/g," ");
	r = r.replace(/~/g," ");
	r = r.replace(/\|/g," ");
	r = r.replace(/"/g,"'");
	return encodeURIComponent(r);
}

function decode_retouch(r_string) {
	return decodeURIComponent(r_string);
}

function open_retouch(cart_num) {
	var type = (!cart[cart_num][5] || cart[cart_num][5] == '') ? 'add' : 'update';
	var r_instructions = (!cart[cart_num][5] || cart[cart_num][5] == '') ? '' : decode_retouch(cart[cart_num][5]);
	var r_html = '';
	var r_box = document.getElementById('retouch_box');
	r_html += '<h1>Retouch Instructions:</h1>';
	r_html += '<textarea id="retouch_instructions">' + r_instructions + '</textarea>';
	r_html += '<div class="menu form_menu"><ul>';
	r_html += '<li class="first"><a href="javascript:add_retouch(' + cart_num + ');"><span>' + type + '</span></a></li>';
	r_html += '<li><a href="javascript:close_retouch();"><span>close</span></a></li>';
	r_html += '</ul></div>';
	r_box.innerHTML = r_html;
	r_box.style.display = 'block';
}

function close_retouch() {
	var r_box = document.getElementById('retouch_box');
	r_box.innerHTML = '';
	r_box.style.display = 'none';
}

function add_retouch(cart_num) {
	var r = document.getElementById('retouch_instructions').value;
	cart[cart_num][5] = encode_retouch(r);
	close_retouch();
}

function cart_mod2(item,cart_num,curr_val) {
	reset_cart(cart_num);
	var select = '';
	var choices = '';
	switch (item) {
	case 'siz' :
		var num_sizes = sizes.length;
		for (var i=0;i<num_sizes;i++) {
			selected = (curr_val == sizes[i].size_id) ? ' selected="selected"' : '';
			choices += '<option value="' + sizes[i].size_id + '"' + selected + '>' + sizes[i].display_name + '</option>';
		}
		break;
	case 'ton' :
		for (var i=0;i<num_tones;i++) {
			var selected='';
			if (curr_val == tones[i][0]) {
				selected=' selected="selected"';
			}
			choices += '<option value="' + tones[i][0] + '"' + selected + '>' + tones[i][1] + '</option>';
		}
		break;
	case 'qty' :
		for (var i=1;i<max_qty;i++) {
			var selected='';
			if (curr_val == i) {
				selected=' selected="selected"';
			}
			choices += '<option value="' + i + '"' + selected + '>' + i + '</option>';
		}
		break;
	}
	var select_id = 'select_cel_' + item + '_' + cart_num;
	select = '<select id="' + select_id + '" onchange="' + "javascript:cart_val_mod('" + cart_num + "','" + item + "');" + '">' + choices + '</select>';
	document.getElementById('cel_'+item+'_'+cart_num).innerHTML = select;
	
	pre_cart_num = cart_num;
	pre_val = curr_val;
	pre_item = item;
}

function reset_cart(cart_num) {
	var display_val = pre_val;
	if (pre_cart_num != '') {
		var mouse_over = "javascript:cart_mod2('" + pre_item + "','" + pre_cart_num + "','" + pre_val + "');";
		switch (pre_item) {
		case 'ton' :
			display_val = get_tone_name(pre_val);
			break;
		case 'siz' :
			display_val = get_size_name(pre_val);
			break;
		}
		document.getElementById('cel_'+pre_item+'_'+pre_cart_num).innerHTML = '<a href="#" onmouseover="' + mouse_over + '">' + display_val + '</a>';
	}
}

var cart_timer = null;
function save_timer() {
	if (cart_timer != null) {
		if (confirm('You have not saved in a while. Would you like to save now?')) {
			cart_save();
		}
		clearInterval(cart_timer);
	}
	cart_timer = setInterval("save_timer();",300000); //every 5min.
}

// ---------------- CART ARRAY FUNCTIONS
function insert_carts(photos) { //photos is an array
	var num_carts = photos.length;
	var default_size = (default_list_size != '') ? default_list_size : sizes[0]['size_id'];
	//alert(default_list_size);
	for (var i=0;i<num_carts;i++) {
		cart[cart_items] = [photos[i],default_size,default_quantity,default_tone,default_crop,default_retouch];
		cart_items++;
	}
}

function update_cart(cart_num,item,new_val) {
	var cart_val,cart_item;
	switch (item) {
	case 'siz' :
		cart_item = 'size';
		cart[cart_num][1] = new_val;
		break;
	case 'ton' :
		cart_item = 'tone';
		for (var i=0;i<num_tones;i++) {
			if (tones[i][1] == new_val) {
				cart_val = tones[i][0];
			}
		}
		cart[cart_num][3] = new_val;
		break;
	case 'qty' :
		cart_item = 'quantity';
		cart_val = new_val;
		cart[cart_num][2] = new_val;
		break;
	}
}

function delete_carts(carts) { //carts is an array
	var num_carts = carts.length;	
	for (var i=0;i<num_carts;i++) {
		cart[carts[i]] = new Array();
	}
}

function dupe_carts(this_cart,next_cart,filename) {
	var items = [cart[this_cart][1],cart[this_cart][3],cart[this_cart][2]];
	cart[next_cart] = [cart[this_cart][0],cart[this_cart][1],cart[this_cart][2],cart[this_cart][3],cart[this_cart][4],cart[this_cart][5]];
	var new_row = create_cart_row(filename,next_cart,items);
	cart_display(new_row);
	cart_items++;
}

function empty_cart() {
	cart = new Array();
}

function update_card(item_id) {
	var card_qty = $('qty_'+item_id).value;
	if (isNaN(card_qty) || card_qty < 25) {
		alert('Minimum order is 25.');
		$('qty_'+item_id).value = 25;
	} else {
		window.location='bulk_order_new.php?cmd=checkout&item_id=' + item_id + '&update_qty=' + card_qty;
	}
}


// ---------------- TESTING FUNCTIONS
function test_cartContents() {
	var cart_contents = 'Cart Contents:' + "\n";
	for (var i=0;i<cart.length;i++) {
		var photo_id = cart[i][0];
		var size = cart[i][1];
		var quantity = cart[i][2];
		var tone = cart[i][3];
		var crop = cart[i][4];
		
		var retouch = decodeURIComponent(cart[i][5]);
			retouch = retouch.replace(/~/," ");
			retouch = retouch.replace(/\|/," ");
			
			
		var cartNum = i+1;
		cart_contents += 'cart ' + cartNum + '= ' + photo_id + ', ' + size + ', ' + tone + ', ' + quantity + ', ' + crop + ', ' + retouch + "\n";
	}
	alert(cart_contents);
}

function test_cartPost() {
	var post_cart ='';
	for (var i=0;i<cart.length;i++) {
		if (cart[i][0]) { //if cart row is not empty
			
			post_cart += '|' + cart[i][0] + '~' + cart[i][1] + '~' + cart[i][2] + '~' + cart[i][3] + '~' + cart[i][4] + '~' + encodeURIComponent(cart[i][5]) + "\n";
		}
	}
	alert(post_cart.substr(1));
}

function test_currCart() {
	alert(cart_items);
}

