var sClassName;
var elements;
var position;
var current;
var distance;
var duration;

function rewindInit(lsClassName, lsDistance, lsDuration) {
	sClassName = lsClassName;
	elements = getElementsByClassName(document, "div", sClassName);
	position = 0;
	current = elements[position].id;
	distance = lsDistance;
	duration = lsDuration;
}

function removeReminder(id) {
	var doc = document;
	doc.getElementById('ids').value = id;
	doc.getElementById('remindersRemove').submit();
}
function removeReminders() {
	var sequence = generateObjectsSequence('reminders', ',');
	document.getElementById('ids').value = sequence;
	document.getElementById('remindersRemove').submit();
}
function useCommonDate(date,name) {
	var doc = document;
	doc.getElementById('dateOfReminder').value = date;
	doc.getElementById('name').value = name;
}
function rewind(bDirection) {
	var direction = bDirection == true ? 1 : -1;
	
	new Effect.Parallel([
	                     new Effect.Move(current, { sync: true, x: -direction * distance, y: 0, mode: 'relative' }),
	                     new Effect.Fade(current, { sync: true })
	                     ], {
		duration: duration,
		queue: 'end'
	});
	
	new Effect.Move(current, { x: direction * distance, y: 0, mode: 'relative', duration: 0.0, queue: 'end' });

	position = (position + elements.length + direction) % elements.length;
	current = elements[position].id;

	new Effect.Move(current, { x: direction * distance, y: 0, mode: 'relative', duration: 0.0, queue: 'end' });
	new Effect.Parallel([
	                     new Effect.Move(current, { sync: true, x: -direction * distance, y: 0, mode: 'relative' }),
	                     new Effect.Appear(current, { sync: true })
	                     ], {
		duration: duration,
		queue: 'end'
	});
	
}

var swapFirst;
var swapSecond;
var swapCurrent;

function swapInit(sFirst, sSecond) {
	swapFirst = sFirst;
	swapSecond = sSecond;
	swapCurrent = true;
}

function swap() {
	new Effect.Parallel([
	                     new Effect.Fade(swapCurrent ? swapFirst : swapSecond, { sync: true }),
	                     new Effect.Appear(swapCurrent ? swapSecond : swapFirst, { sync: true })
	                     ], {
		duration: 1.0,
		queue: 'end'
	});
	swapCurrent = !swapCurrent;
}

function initDeliveryDate(sDate) {
	var value = document.getElementById("prop(delivery_date)").value;
	
	if (value == null || value.length == 0)
		updateDeliveryDateSelects(sDate);
	else
		updateDeliveryDateSelects(value);
}


function initDeliveryHours(sDate) {
	var oDeliveryDate = document.getElementById("prop(delivery_date)");
	if (oDeliveryDate && oDeliveryDate.value.length > 0)
		sDate = oDeliveryDate.value;	

	if (sDate == null)
		sDate = document.getElementById("DDTemp").value;

	setSelectedIndex("DDDay", sDate.substring(0, 2));
	
	// set month
	setSelectedIndex("DDMonth", sDate.substring(3, 5));
	
	// set year
	setSelectedIndex("DDYear", sDate.substring(6, 10));

	setSelectedIndex("DDHoursH", sDate.substring(11, 13));
	setSelectedIndex("DDHoursM", sDate.substring(14, 16));
	
	
	updateDeliveryDate();
}

function updateDeliveryDate() {
	var sDay = getOptionValue("DDDay"); 
	var sMonth = getOptionValue("DDMonth");
	var sYear = getOptionValue("DDYear");
	var sHours = false;
	var bHoursExists = exists("DDHours");
	if (bHoursExists)
		sHours = getOptionValue("DDHours");
	var oDeliveryDate = document.getElementById("prop(delivery_date)");
	
	if (!bHoursExists) {
		if (exists("DDHoursH") && exists("DDHoursM"))
			sHours = getOptionValue("DDHoursH") + ":" + getOptionValue("DDHoursM");
	}
	if (oDeliveryDate)
		oDeliveryDate.value = sDay + "." + sMonth + "." + sYear + " " + sHours;
	else
		alert("No DeliveryDate element found");
}

function exists(elementId) {
	if (document.getElementById(elementId) != null)
		return true;
	else
		return false;
}

// returns selected value from given option element or its first element if none was selected
function getOptionValue(sId) {
	var select = document.getElementById(sId);
	
	if (select.selectedIndex == null)
		return select[0].value;

	return select[select.selectedIndex].value; 
}

function updateDeliveryDateSelects(sDate) {
	
	if (sDate == null)
		sDate = document.getElementById("DDTemp").value;
	
	// set day
	setSelectedIndex("DDDay", sDate.substring(0, 2));
	
	// set month
	setSelectedIndex("DDMonth", sDate.substring(3, 5));
	
	// set year
	setSelectedIndex("DDYear", sDate.substring(6, 10));
	
	// set hours
	setSelectedIndex("DDHours", sDate.substring(11, sDate.length));
	
	updateDeliveryDate();
}

// set selectedIndex of given select element to the one containing given value
function setSelectedIndex(sId, sValue) {
	var oSelect = document.getElementById(sId);
	
	for (var i = 0; i < oSelect.options.length; i++) {
		if (oSelect.options[i].value == sValue) {
			oSelect.selectedIndex = i;
			return;
		}
	}
}

function companiesSection(sClassName) {
	var checkbox = document.getElementById("vat");
	var list = getElementsByClassName(document, "tr", sClassName);
	for (var i = 0; i < list.length; i++)
		checkbox.checked ? $(list[i].id).show() : $(list[i].id).hide(); 
}

// Tickets for items (in delivery data)
function updatePreTicket(sSymbol) {
	var ptt = document.getElementById(sSymbol + ".textarea");
	var pts = document.getElementsByName("preTicket");

	for (var i = 0; i < pts.length; i++)
		if (pts[i].checked)
			ptt.value = pts[i].value;
}

function verifyLength(oObj, iMax, sMsg) {
	if (oObj.value.length > iMax) {
		oObj.value = oObj.value.substring(0, iMax);
		alert(sMsg);
	}
}

function showTicketCategory(sDivId) {
	var divs = getElementsByClassName(document, "div", "singleTicketCategory");
	for (var i = 0; i < divs.length; i++) {
		if (divs[i].id == "d" + sDivId) {
			divs[i].style.display = "block";
		} else {
			divs[i].style.display = "none";
		}
	}
}
// end of tickets

//order payments
/*
function checkIsPaymentSelected(oObject, sPayment, sMessage) {
	if (oObject.form.entryId)
		oObject.form.action = "do/addressBook/orderCheck";
	
	switch (sPayment) {
	case "company":
			$("payment.4").checked = true;
			return true;
		break;
	case "card":
			$("payment.1").checked = true;
			return true;
		break;
	case "payPal":
			$("payment.7").checked = true;
			return true;
		break;	
	case "moneyBookers": 
			$("payment.8").checked = true;
			return true;
		break;
	case "bankTranfer":
			
			var i = 0;
			var len = aBankTransfer.length;
			while (i < len) {	
				if ($(aBankTransfer[i]) && $(aBankTransfer[i]).checked == true) {
					return true;
				}
				i++;
			}
			alert(sMessage);
			return false;
		break;
	default:
		return false;
		break;
	}
}*/
var aBankTransfer = Array();
function checkIsPaymentSelected(oObject, sPayment, sMessage, sOtherId) {

	if (oObject.form.entryId)
		oObject.form.action = "do/addressBook/orderCheck";
	
	switch (sPayment) {
	case "company":
			$(companyPaymentId).checked = true;
			return true;
		break;
	case "card":
			$(cardsPaymentId).checked = true;
			return true;
		break;
	case "payPal":
			$(paypalPaymentId).checked = true;
			return true;
		break;	
	case "moneyBookers": 
			$(moneybookersPaymentId).checked = true;
			return true;
		break;
	case "bankTranfer":
			var i = 0;
			var len = aBankTransfer.length;
			while (i < len) {	
				if ($(aBankTransfer[i]) && $(aBankTransfer[i]).checked == true) {
					return true;
				}
				i++;
			}
			alert(sMessage);
			return false;
		break;
	case "other":
			$(sOtherId).checked = true;
			return true;
		break;
	default:
		return false;
		break;
	}
}


/**
 * Ryszard
 */

function $RF(el, radioGroup) {
	var aRadios = $(el).elements[radioGroup];
	var length1 = aRadios.length;
	for (var i = 0; i < length1; i++) {
		if (aRadios[i].checked) {
			return aRadios[i].value;
			
		}
	}
	return false;
}
function bouquetPriceCount() {
	
	var color = $RF("bouquetForm", "color");
	var quantity = $("quantity").value;
	var length1 = $RF("bouquetForm", "length1");
	var composition = $RF("bouquetForm", "composition"); 
	var decoration = $RF("bouquetForm", "decoration"); 
	if (!isNaN(quantity) && quantity.length > 0 && color != false && length1 != false && composition != false && decoration != false) {
		var url = "/do/bouquetComposerCreate";
		var params = "color=" + color + "&quantity=" + quantity + "&length1=" +  length1 +"&composition=" + composition + "&decoration=" + decoration + "&ajaxMain=true";
		var ajax = new Ajax.Request(url,{
			method:"post",
			parameters: params,
			onLoading: function() {
				$("bouquetPrice").innerHTML = "";
				$("ajaxLoader").style.display="block";
			},
			onSuccess: function(transport){
					$("ajaxLoader").style.display="none";
					var response = transport.responseText || "błąd serwera";
					$("bouquetPrice").update(response);
					/**
					* information about selected values
					*/
					$$("#selected-color span").each(function(obj){
						obj.update($("color-" + color).innerHTML);
					});
					$$("#selected-quantity span").each(function(obj){
						obj.update(quantity);
					});
					
					$$("#selected-length span").each(function(obj){
						obj.update($("length-" + length1).innerHTML);
					});
					
					$$("#selected-composition span").each(function(obj){
						obj.update($("composition-" + composition).innerHTML);
					});
					
					$$("#selected-decoration span").each(function(obj){
						obj.update($("decoration-" + decoration).innerHTML);
					});
			},
			onFailure: function(){ alert('Nie można nawiązać połączenia') }
		});		
	}
}

function useCoupon(ticket) {
	$('promoCode').value=ticket;
	$('promoCode').up('form').submit();
}

