var Ticket = Class.create();

Ticket.prototype = 
{
    initialize : function(id, isSingle)
    {   
		this.id = id;
		this.isSingle = isSingle;
		
		this.fields;
		this.stars;
		this.fieldHolder;
		this.starsHolder;
		
		this.isFilled = false;
		
		this.selectedNumbers = new Array();
		this.selectedStars = new Array();
		
		this.form = new TicketForm(this);
		
		this.BuildHtml();
    },
	
	BuildHtml : function()
	{
		this.fields = new Array();
		this.stars = new Array();
		this.fieldHolder = Builder.node('div', { className: 'ticket', id: 'ticket' + this.id });
		this.starsHolder = Builder.node('div', { className: 'ticket_stars_holder' });
		
		//$(this.fieldHolder).setOpacity(0.8);
		Event.observe(this.fieldHolder, 'mouseover', this.OnMouseOverFieldHolder.bind(this));
		Event.observe(this.fieldHolder, 'mouseout', this.OnMouseOutFieldHolder.bind(this));
		Event.observe(this.fieldHolder, 'click', this.OnClickFieldHolder.bind(this));
		
		this.CreateFields();
		for(var i = 0; i < this.fields.length; i++)
		{
			this.fieldHolder.appendChild(this.fields[i]);
		}
		
		this.CreateStars();
		for(var i = 0; i < this.stars.length; i++)
		{
			this.starsHolder.appendChild(this.stars[i]);
		}
		this.fieldHolder.appendChild(this.starsHolder);
		
		this.ticketNumber = Builder.node('img', { className: 'ticketnumber', alt: '', src: '../images/bg_ticket_' + this.id + '.gif' });
		this.fieldHolder.appendChild(this.ticketNumber);
	},
	
	CreateFields : function()
	{
		for(var i = 0; i < 50; i++)
		{
			var fieldId = this.fieldHolder.id + '_field' + parseInt(i + 1);
			this.fields.push(Builder.node('div', { className: 'ticket_field', id: fieldId }));
		}
	},
	
	CreateStars : function()
	{
		for(var i = 0; i < 11; i++)
		{
			var starId = this.fieldHolder.id + '_star' + parseInt(i + 1);
			var star = Builder.node('div', { className: 'ticket_star_field', id: starId });

			/*if(i == 0)
			{
				star.style.margin = '10px 1px 0 13px';
			}
			if(i == 1)
			{
				star.style.margin = '10px 1px 0 1px';
			}
			if(i == 2)
			{
				star.style.margin = '10px 1px 0 1px';
			}
			if((i == 3) || (i == 6))
			{
				star.style.margin = '1px 1px 0 13px';
			}*/
			
			this.stars.push(star);
		}
	},
	
	ClearFields : function()
	{
		for(var i = 0; i < this.fields.length; i++)
		{
			this.fields[i].style.backgroundColor = '#ffffff';
		}
		
		for(var i = 0; i < this.stars.length; i++)
		{
			this.stars[i].style.backgroundImage = 'url(../images/bg_ticket_star_field.gif)';
		}
		
		this.isFilled = false;
		this.UpdatePrice();
	},
	
	GetHtml : function()
	{
		return this.fieldHolder;
	},
	
	OnMouseOverFieldHolder : function()
	{
		//$(this.fieldHolder).setOpacity(1.0);
	},
	
	OnMouseOutFieldHolder : function()
	{
		//$(this.fieldHolder).setOpacity(0.8);
	},
	
	OnClickFieldHolder : function()
	{
		this.form.Show();
	},
	
	GetSelectedFields : function()
	{
		if((this.id == null) || (this.id == 0))
		{
			this.id = 1;
		}
		
		var retVal = new Hash();
		retVal.set('T' + this.id + '1', this.selectedNumbers[0]);
		retVal.set('T' + this.id + '2', this.selectedNumbers[1]);
		retVal.set('T' + this.id + '3', this.selectedNumbers[2]);
		retVal.set('T' + this.id + '4', this.selectedNumbers[3]);
		retVal.set('T' + this.id + '5', this.selectedNumbers[4]);
		retVal.set('S' + this.id + '1', this.selectedStars[0]);
		retVal.set('S' + this.id + '2', this.selectedStars[1]);
		
		return retVal;
	},
	
	SubmitCart : function(Evt)
	{
		var form = Builder.node('form', { method:'post', action:'../In2GB.asp' });
		
		if(this.isFilled == false)
		{
			return;
		}

		var firstField = Builder.node('input', { type: 'hidden', name: 'T11', id: 'T11', value: this.selectedNumbers[0] });
		form.appendChild(firstField);
		var secondField = Builder.node('input', { type: 'hidden', name: 'T12', id: 'T12', value: this.selectedNumbers[1] });
		form.appendChild(secondField);
		var thirdField = Builder.node('input', { type: 'hidden', name: 'T13', id: 'T13', value: this.selectedNumbers[2] });
		form.appendChild(thirdField);
		var fourthField = Builder.node('input', { type: 'hidden', name: 'T14', id: 'T14', value: this.selectedNumbers[3] });
		form.appendChild(fourthField);
		var fifthField = Builder.node('input', { type: 'hidden', name: 'T15', id: 'T15', value: this.selectedNumbers[4] });
		form.appendChild(fifthField);
		var firstStar = Builder.node('input', { type: 'hidden', name: 'S11', id: 'S11', value: this.selectedStars[0] });
		form.appendChild(firstStar);
		var secondStar = Builder.node('input', { type: 'hidden', name: 'S12', id: 'S12', value: this.selectedStars[1] });
		form.appendChild(secondStar);
		
		var drawings = 1;
		var subscription = false;

		var inputDrawings = Builder.node('input', { type: 'hidden', name: 'DRAWINGS', id: 'DRAWINGS', value: drawings });
		form.appendChild(inputDrawings);
		var inputSubscription = Builder.node('input', { type: 'hidden', name: 'SUBSCRIPTION', id: 'SUBSCRIPTION', value: subscription });
		form.appendChild(inputSubscription);
		var inputType = Builder.node('input', { type: 'hidden', name: 'TYPE', id: 'TYPE', value: 'INDIVIDUAL' });
		form.appendChild(inputType);
		
		document.body.appendChild(form);
		form.submit();
	},
	
	UpdatePrice : function()
	{
		var func = this.GetPrice.bind(this);
		window.setTimeout(func, 200);
	},
	
	GetPrice : function()
	{
		var numberOfTipps = 0;
		var numberOfDrawings = 1;
		
		for(var i = 0; i < tippModule.tickets.length; i++)
		{
			if(tippModule.tickets[i].isFilled == true)
			{
				numberOfTipps = numberOfTipps + 1;
			}
		}
		
		if($('input_fourdrawings').checked == true)
		{
			numberOfDrawings = 4;
		}
		
		// Create input parameters for the webservice method
        var params=$H( {drawings : numberOfDrawings, tipps: numberOfTipps } ).toQueryString();
        // Create new Ajax request
        new Ajax.Request("../GetPrice.asp", { method : "get", parameters : params, requestHeaders : ['Pragma', 'no-cache', 'Cache-Control', 'no-store, no-cache, max-age=0, must-revalidate'], onSuccess : this.OnUpdatePriceResponse.bind(this) });
	},
	
	OnUpdatePriceResponse : function(transport)
	{
		var labelPrice = $('tipp_module_holder').getElementsByClassName('label_price')[0];
		if(labelPrice == null)
		{
			return;
		}
		
		// Set local variable holding the xml data
        var responseXml = new XmlDocument(transport.responseXML);
        var response = responseXml.SelectSingleNode("root/Price").text;

		labelPrice.innerHTML = GetTranslationValue('price') + ' ' + response +' &#8364;';
	}
}
