/*
Leonardo Service Provider S.p.A.
Tutti i diritti registrati e riservati,(R)(C) 2009.
La riproduzione parziale o totale del presente software
delle pagine generate nonchè della strutturazione dei dati,
delle tabelle e di quant'altro è ad esso inerente  è illegale 
ed è punibile secondo tutte le Leggi vigenti sulla violazione del Diritto D'Autore.
L'utilizzo del presente software senza regolare licenza d'uso
è illegale e sarà perseguito secondo tutte le Leggi vigenti applicabili
*/

//
var GLOBALSTValue = '2';
var GLOBALSTNavig = GLOBALSTValue;

var menuScommesse;

var GLOBALcorsaObj;

var GLOBALlabel;

var tipoScommArray = new Array();
	tipoScommArray['X1'] = '1';
	tipoScommArray['X12'] = '2';
	tipoScommArray['X13'] = '3';
	tipoScommArray['DUE'] = '7';
	tipoScommArray['DUO'] = '8';
	tipoScommArray['TRE'] = '9';
	tipoScommArray['TRO'] = '10';
	tipoScommArray['QUA'] = '11';
	tipoScommArray['QUO'] = '12';
	tipoScommArray['CIN'] = '13';
	tipoScommArray['CIO'] = '14';
	tipoScommArray['ACP'] = '17';
	
var tipoSistemaArray = new Array();
	tipoSistemaArray['X1'] = '0';
	tipoSistemaArray['X12'] = '1';
	tipoSistemaArray['X13'] = '2';
	tipoSistemaArray['NX'] = '6';
	tipoSistemaArray['P1'] = '7';
	tipoSistemaArray['P2'] = '8';
	tipoSistemaArray['P3'] = '9';
	tipoSistemaArray['P4'] = '10';
	tipoSistemaArray['G1'] = '12';
	tipoSistemaArray['G2'] = '13';
	tipoSistemaArray['G3'] = '14';
	tipoSistemaArray['G4'] = '15';
	tipoSistemaArray['T2'] = '17';
	tipoSistemaArray['T3'] = '18';
	tipoSistemaArray['T4'] = '19';
	tipoSistemaArray['T5'] = '20';


$(document).ready(function(){
	
	var TD = new Date();
	var TS = TD.getTime();
	// Chiuso per problema tecnico - 05/08/2010 11:00:00
	//alert('Per un problema tecnico le scommesse ippiche non sono disponibili. Ci scusiamo per il disagio');
	zReq('ippica/PSIP_client/xmlriunioni.aspx', 'xsl=rxriu&t='+TS, '#menuRiu', fCode);
	
	/// Controllo che ci siano soltanto numeri nel campo impBase
	$("#impBase").keypress(function(e){
		if( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) {
			return false;
		}
	});
	$("#impBase").keyup(function(){
		calCombi()
	});
	
});
$(document).focus(function(){
	if (window.diretta) {window.diretta.close()}
})
function vediDiretta() {
	var TD = new Date();
	var TS = TD.getTime();
	var url = "LoginCheck.aspx";
	var opt = "txtUser=&txtPwd=&t=" + TS;
	var fun = function(xml){
		var xmlMessage = $(xml).find('Message').text();
		if (xmlMessage == '0') {
			var xmlPlayer = $(xml).find('Login_Data').attr('UserId');
			if (String(xmlPlayer) == 'undefined') {
				loginAlert();
			} else {
				window.open('Diretta.aspx', 'diretta', "status=0,toolbar=0,location=0,address=0,directories=0,menubar=0,resizable=0,width=310,height=300");
			}
		}
	}
	zReq(url, opt, '#nonesisto', fun)
}


function zReq(url, opt, div, fun) {
	$.ajax({
		url: url,	
		type: "GET",
		data: opt,
		success: function(html){
			$(div).html(html);	
			if (fun != null) {
				fun(html)
			}
		}
	});
}

function corsaCreator(html, descScomm, codeCorsa) {
	if ($('.spancorsachiusa').html()) {
		$('#listascommesse').html('<h1>' + $('.spancorsachiusa').html() + '</h1>');
	} else {
		zReq("ippica/PSIP_client/xmltiposcommessa.aspx", "cod=" + codeCorsa + "&xsl=rxsco","#listascommesse", null);
	}
	
	//alert(html)
	GLOBALcorsaObj = new Object();
	GLOBALcorsaObj.codeCorsa = codeCorsa;
	GLOBALcorsaObj.descScomm = descScomm;
	GLOBALcorsaObj.nomeCorsa = $('#corsacorrente').children('h1').text();
	//alert(GLOBALcorsaObj.nomeCorsa)
	GLOBALcorsaObj.numCorsa = '';
	GLOBALcorsaObj.labels = new Array();
	GLOBALcorsaObj.disabled = new Array();
	GLOBALcorsaObj.cavalli = new Array();
	GLOBALcorsaObj.chk = new Array()
	GLOBALcorsaObj.chk['A'] = new Array()
	GLOBALcorsaObj.chk['B'] = new Array()
	GLOBALcorsaObj.chk['C'] = new Array()
	//
	
	GLOBALcorsaObj.PaliNum = $('#paliNum').html();
	GLOBALcorsaObj.AvvNum = $('#eveNum').html();
	
	var propNames = new Array();	
	$('#tabellaCorsa thead').find('tr').each(function(i){		
		$(this).find('th').each(function(e) {											
			propNames.push($(this).attr('name'));// alert(propNames[e])
		})
	})		
	
	$('#tabellaCorsa tbody').find('tr').each(function(i){	
		GLOBALcorsaObj.cavalli[i]= new Object();
		//seleziona i td senza input
		$(this).find('td:not(td:has(input))').each(function(e){
			var no = String(propNames[e]); var vo = $(this).text().replace(/^\s*([\s\S]*?)\s*$/,"$1");
			eval('GLOBALcorsaObj.cavalli[' + i + '].'+no+' = "' + vo + '"'); /// Memorizzo i dettagli	
		})
		//seleziona gli input
		
		$(this).find('td input:disabled:eq(0)').each(function(e){
			if ($.inArray(i, GLOBALcorsaObj.disabled) == -1) {
				GLOBALcorsaObj.disabled.push(i)
			}
		})			
	})
	
	
	GLOBALcorsaObj.getChkVal = function(row, col){
		//alert('getChkVal : ' + GLOBALcorsaObj.cavalli[row][col])
		if($.inArray(row, GLOBALcorsaObj.chk[col])==-1) {
			return false;
		} else {
			return true;
		}
	}
	
	GLOBALcorsaObj.setChkVal = function(row, col, val){
		if (val == true) {
			/// Controllo se la scommessa è singola
			var troppeScommesse = false;
			var codiciScomSingole = new Array('X1', 'X12', 'X13')
			if ($.inArray(GLOBALcorsaObj.descScomm, codiciScomSingole) >= 0) {
				if (GLOBALcorsaObj.chk[col].length >= 4) {
					troppeScommesse = true;
					if($('.modalew').length<=0){
						var walert = $().popw({wtype:'info', wwidth:200, wheight:'auto', draggable:true});
						walert.writehtml('Massimo 4 cavalli per questo tipo di scommessa (' + GLOBALcorsaObj.descScomm + ')');
					}
				}
			}
			if($.inArray(row, GLOBALcorsaObj.chk[col])==-1 && $("#"+col+"_"+(row+1)).attr('disabled') == false && !troppeScommesse) {
				GLOBALcorsaObj.chk[col].push(row)
			}
		} else {
			GLOBALcorsaObj.chk[col].splice($.inArray(row, GLOBALcorsaObj.chk[col]), 1)
		}
		// Accendo o spengo la casella in basso
		//alert(GLOBALcorsaObj.cavalli.length)
		//alert(GLOBALcorsaObj.disabled.length)
		$('#allChk_'+col).attr('checked', (GLOBALcorsaObj.chk[col].length == (GLOBALcorsaObj.cavalli.length - GLOBALcorsaObj.disabled.length)));
		
	}
	
	GLOBALcorsaObj.getChkValues = function(col) {
		for (var i = 0; i < GLOBALcorsaObj.cavalli.length; i++) {
			$('#'+col + '_'+(i+1)).attr('checked', GLOBALcorsaObj.getChkVal(i, col));
		}
	}
	
	
	/// Stile per le righe
	//$('#tabellaCorsa tbody tr:even').addClass("altern"); /// Alternate
	$('#tabellaCorsa tbody tr').mouseover(function() {
		$(this).addClass("hilight");
	})
	$('#tabellaCorsa tbody tr').mouseout(function() {
		$(this).removeClass("hilight");
	})
	
	$('#nome').html($('#paliNum').html() + " N&deg;" + $('#eveNum').html());
	GLOBALcorsaObj.numCorsa = $('.spannumerocorsa').html();
	$('#dataora').html($('#spanorariocorsa').html());
	
	calCombi()
}

function cReq(siglaScomm, codCorsa){
	
	var TD = new Date();
	var TS = TD.getTime();
	var url = "ippica/PSIP_client/xmlcorse.aspx";
	
	if(!codCorsa  || String(codCorsa) == "undefined" || codCorsa == 0){//arrivo dal menu TipoPuntata
		var opt = "cod=" + GLOBALcorsaObj.codeCorsa + "&sigla=" + siglaScomm + "&xsl=rxcor&type=0&t="+TS;
		$('#scommessacorrente').html(siglaScomm);
		codCorsa = GLOBALcorsaObj.codeCorsa;
	} else {
		var opt = "cod=" + codCorsa + "&sigla=" + siglaScomm + "&xsl=rxcor&type=0&t="+TS;
		$('#scommessacorrente').html('X1');
	}
	//alert(codCorsa)
	zReq(url, opt, '#corsacorrente', function(){var html = arguments[0];corsaCreator(html, siglaScomm, codCorsa)})
}

function fCode(html) {
	codCorsa = 0;
	if (html.indexOf("zak z") < 0) {
		$("#menuRiu").html("<strong>Non ci sono corse</strong>")
		$("#listascommesse").html("Non ci sono corse")
		$("#corsacorrente").html("Non ci sono corse")
		var walert = $().popw({wtype:'info', wwidth:200, wheight:'auto', draggable:true});
		walert.writehtml('Le corse di oggi non sono ancora disponibili.');
		/// Problema tecnico 17/11/2009
		//walert.writehtml('<strong>Ippica in manutenzione.</strong><br />Il servizio &egrave; temporaneamente inattivo.');
	} else if (html.indexOf("zak z2") >= 0) {
		codCorsa = $('li.zak').attr('id').split('_')[1];
		codCorsa = $('li.z2').attr('id').split('_')[1];
		$('.riunione ul').each(function () {
			$(this).kwicks();
		});
		$('#listascommesse').html('');
	} else if(html.indexOf("zak z3") >= 0) {
		codCorsa = $('li.zak').attr('id').split('_')[1];
		codCorsa = $('li.z3').attr('id').split('_')[1];
		$('.riunione ul').each(function () {
			$(this).kwicks();
		});
		$('#listascommesse').html('');
	
	} else {
		/*
		Mercoledì 7 Ottobre 2009
		Non visualizziamo alcun avviso nel caso in cui tutte le corse siano chiuse.
			var walert = $().popw({wtype:'info', wwidth:200, wheight:'auto', draggable:true});
			walert.writehtml('Tutte le Corse sono chiuse');
		Invece carichiamo direttamente la Corsa numero 1 e ne mostrando i risultati.
		*/
		codCorsa = '1';
		$('.riunione ul').each(function () {
			$(this).kwicks();
		});
		$('#listascommesse').html('');
	}
		
	if (codCorsa != 0) {
		var TD = new Date();
		var TS = TD.getTime();
		zReq("ippica/PSIP_client/xmltiposcommessa.aspx", "cod=" + codCorsa + "&xsl=rxsco&t="+TS,"#listascommesse", cReq('X1',codCorsa));
	}
	
}

function selChecked(chk) { /// Qualcosa è cambiato, rileggere la schedina
	var myCheck = Boolean($(chk).attr("checked"));
	
	var myRow = Number($(chk).attr('id').split("_")[1]); /// Indice+1	
	var myCol = String($(chk).attr('id').split("_")[0]); /// A, B o C	
	GLOBALcorsaObj.setChkVal(myRow-1, myCol, myCheck)
	
	GLOBALcorsaObj.getChkValues(myCol);
	calCombi();
}


function allChecked(chk) {
	var myCheck = Boolean($(chk).attr("checked"));
	var myCol = $(chk).attr("id").split('_')[1]
	
	
	for (var i=0; i<GLOBALcorsaObj.cavalli.length; i++) {
		GLOBALcorsaObj.setChkVal(i, myCol, myCheck)
	}
	GLOBALcorsaObj.getChkValues(myCol);
	calCombi()
}

function calCombi() {
	if (String(GLOBALcorsaObj) == 'undefined') {
		return false;
	}
	//alert('calCombi')
/*
	Calcola le combinazioni possibili
	Aggiunge e rimuove gli stili alla prima colonna
	Scrive e cancella il dettaglio in schedina
	Fa tornare il Coupon allo stato iniziale
*/
	showWait(0)
	
	// Per comodità calcolo all'inizio tutti i numeri che mi servono
	var totA = GLOBALcorsaObj.chk['A'].length; // Totale check nella colonna A
	var totB = GLOBALcorsaObj.chk['B'].length; // Totale check nella colonna B
	var totC = GLOBALcorsaObj.chk['C'].length;; // Totale check nella colonna C
	
	var totS = 0;
	var totD = 0;
	var totT = 0;
	
	var totSA = 0; // Totale A singole
	var totSB = 0; // Totale B singole
	var totSC = 0; // Totale C singole
	
	var totAB = 0;
	var totAC = 0;
	var totBC = 0;
	
	var A = GLOBALcorsaObj.chk['A']
	var B = GLOBALcorsaObj.chk['B']
	var C = GLOBALcorsaObj.chk['C']
	var L = GLOBALcorsaObj.cavalli.length
	
	for(var i = 0; i < L; i++){
		if($.inArray(i, A)!=-1){
			if($.inArray(i, B)!=-1){
				if($.inArray(i, C)!=-1){ // A B C
					totT++;
				}else{ // A B
					totAB++;
				}
			}else if($.inArray(i, C)!=-1){ // A C
				totAC++;
			}else{ // A
				totSA++;
			}
		}else if($.inArray(i, B)!=-1){
			if($.inArray(i, C)!=-1){ // B C
				totBC++;
			}else{ // B
				totSB++;
			}
		}else if($.inArray(i, C)!=-1){ // C
			totSC++;
		}
	}
	
	totS = totSA + totSB + totSC; // Totale pronostici singoli
	totD = totAB + totAC + totBC; // Totale pronostici doppi
	
	var activeRows = 0;
	/// Evidenzio le righe selezionate
	for (var i = 0; i < GLOBALcorsaObj.cavalli.length; i++) {
		$('#td'+(i+1)).parents("tr").removeClass('chosen');
		if($.inArray((i), A)!=-1 || $.inArray((i), B)!=-1 || $.inArray((i), C)!=-1) {
			$('#td'+(i+1)).parents("tr").addClass('chosen');
			activeRows++;
		}
	}
	
	
	
	
	/// Calcolo le combinazioni
	var nCombi = 0;
	var label;
	var sis; var scomcode;
	
	switch(GLOBALcorsaObj.descScomm){
		case "X1": 
			nCombi = totA;
			label = new Array("Vincente"); sis = 0; scomcode= 1;
            break; //OK
		case "X12":
			nCombi = totA;
			label = new Array("Piazzato nei primi due"); sis = 1; scomcode= 2;
            break; //OK
		case "X13":
			nCombi = totA;
			label = new Array("Piazzato nei primi tre"); sis = 2; scomcode= 3;
            break; //OK
        case "DUE-NX":
            for(i = 0; i < activeRows; i++){
                nCombi = nCombi + i;
            }
			label = new Array("A girare in accoppiata"); sis = 6; scomcode= 7;
            break; //OK
        case "DUE-P1":
			var nPrimi = totA;
			var nSecondi = totB;
			var nPrimiSecondi = totAB;
            nCombi = (nPrimi*nSecondi) - nPrimiSecondi;
            label = new Array("Base in accoppiata", "con:"); sis = 7; scomcode= 7;
            break; //OK
        case "DUO-NX":
            for(i = 0; i < activeRows; i++){
                nCombi = nCombi + i;
            }
			label = new Array("A girare in accoppiata"); sis = 6; scomcode= 8;
            nCombi = nCombi * 2;
            break;
        case "DUO-P1":
            var nPrimi = totA;
            var nSecondi = totB;
            var nPrimiSecondi = totAB;
            nCombi = (nPrimi*nSecondi) - nPrimiSecondi;
            nCombi = nCombi*2;
			label = new Array("Base in accoppiata", "con:"); sis = 7; scomcode= 8;
            break;
		case "DUO-G1":
            var nPrimi = totA;
            var nSecondi = totB;
            var nPrimiSecondi = totAB;
            nCombi = (nPrimi*nSecondi) - nPrimiSecondi;
			label = new Array("Primo posto", "Secondo posto"); sis = 12; scomcode= 8;
            break;		
		case "TRO-T3": //trio in ordine
            var nPrimi = totSA + totAB + totAC + totT;
            var nSecondi = totSB + totAB + totBC + totT;
            var nTerzi = totSC + totAC + totBC + totT;
            var nPrimiSecondi = totAB + totT;
            var nSecondiTerzi = totBC + totT;
            var nPrimiTerzi = totAC + totT;
            var nPriSecTer = totT;
            nCombi = (nPrimi*nSecondi*nTerzi) - (nPrimiSecondi*nTerzi) - (nSecondiTerzi*nPrimi) - (nPrimiTerzi*nSecondi) - nPriSecTer + (nPriSecTer*3);
			label = new Array("Primo posto", "Secondo posto", "Terzo posto"); sis = 18; scomcode= 10;
            break; //OK
		case "TRO-NX":
            var selHorse = activeRows;
            if(selHorse == 3) nCombi = 6;
            if(selHorse > 3){
                var diff = selHorse - 3;
                nCombi = fact(selHorse)/fact(diff);
            }
			label = new Array("Trio a girare"); sis = 6; scomcode= 10;
            break; //OK
        case "TRO-G1": //trio con vincente
            var nPrimi = totA;
            var nSecondi = totB;
            var nPrimiSecondi = totAB;
            var combLibere = 0;
            for(i = 0; i < nSecondi; i++){
                combLibere = combLibere + i;
            }
            nCombi = (nPrimi-nPrimiSecondi)*combLibere*2;
            var combVincolate = 0;
            for(i = 0; i < nSecondi-1; i++){
                combVincolate = combVincolate + i;
            }
            nCombi = nCombi + (nPrimiSecondi*combVincolate*2);
			label = new Array("Vincente", "con:"); sis = 12; scomcode= 10;
            break; //OK
        case "TRO-G2": //trio con accoppiata
            var nPrimi = totA;
            var nSecondi = totB;
            var nPrimiSecondi = totAB;
            var combLibere = 0;
            for(i = 0; i < nPrimi; i++){
                combLibere = combLibere + i;
            }
            nCombi = (nSecondi-nPrimiSecondi)*combLibere*2;
            var combVincolate = 0;
            for(i = 0; i < nPrimi-1; i++){
                combVincolate = combVincolate + i;
            }
            nCombi = nCombi + (nPrimiSecondi*combVincolate*2);
			label = new Array("Base in trio", "con:"); sis = 13; scomcode= 10;	
            break; //OK
        case "TRO-P1": //trio con un piazzato
            var nPrimi = totA;
            var nSecondi = totB;
            var nPrimiSecondi = totAB;
            var combLibere = 0;
            for(i = 0; i < nSecondi; i++){
                combLibere = combLibere + i;
            }
            nCombi = (nPrimi-nPrimiSecondi)*combLibere*6;
            var combVincolate = 0;
            for(i = 0; i < nPrimiSecondi; i++){
                for(j = 0; j < nSecondi-i-1; j++){
                    combVincolate = combVincolate + j;
                }
            }
            nCombi = nCombi + (combVincolate*6);
			label = new Array("Piazzato", "con:"); sis = 7; scomcode= 10;
            break;
        case "TRO-P2": //trio con due piazzati
            var nPrimi = totA;
            var nSecondi = totB;
            var nPrimiSecondi = totAB;
            var combLibere = 0;
            for(i = 0; i < nPrimi; i++){
                combLibere = combLibere + i;
            }
            nCombi = (nSecondi-nPrimiSecondi)*combLibere*6;
            var combVincolate = 0;
            for(i = 0; i < nPrimiSecondi; i++){
                for(j = 0; j < nPrimi-i-1; j++){
                    combVincolate = combVincolate + j;
                }
            }
            nCombi = nCombi + (combVincolate*6);
			label = new Array("Piazzati base", "con:"); sis = 8; scomcode= 10;
            break; //OK 
        case "ACP": //Accoppiata Piazzata
            for(i = 0; i < activeRows; i++){
                nCombi = nCombi + i;
            }
		label = new Array("Accoppiata piazzata"); sis = 6; scomcode= 17;
            break; //OK
	GLOBALcorsaObj.descScomm == 'NX' // Dovrebbe arrivare ma non arriva
    }
	GLOBALlabel = label;
	
	GLOBALcorsaObj.labels = new Array();
	GLOBALcorsaObj.labels = label //inserisco le etichette per il biglietto nell'oggetto corsa
	GLOBALcorsaObj.sis = sis; //
	GLOBALcorsaObj.scomcode= scomcode; //stessa cosa per il codice sis e il codice del tipo scommessa
	GLOBALcorsaObj.nCombi = nCombi;
	//////  
	makeTicket();
}

function fact(x){
	var i = x - 1;
	while (i > 0){x = x * i; i--;}
	return x;
}

function updateCouponData() {
	calCombi()
}

function makeTicket(){
	$('#prono').html(stringaPronostico());
	$('#comb').html(String(GLOBALcorsaObj.nCombi));
	
	if (parseInt(GLOBALcorsaObj.nCombi) < 1) {
		$('.iconfirm').html('Aggiungi per scommettere.');
		$('#cstep1').hide();
	} else {
		$('.iconfirm').html('Clicca per scommettere.');
		$('#cstep1').show();
	}
	
	$('#impTotale').attr('value', $('#cstake').attr('value') * GLOBALcorsaObj.nCombi);
	$('#importi').html('&euro; ' + $('#impTotale').attr('value'));
	GLOBALcorsaObj.importo = $('#impTotale').attr('value');
	
	if (Number(GLOBALcorsaObj.importo) < 2) {
		$("#ibt_g0").css('display', 'block')
		$("#ibt_g1").css('display', 'none')
	} else {
		$("#ibt_g0").css('display', 'none')
		$("#ibt_g1").css('display', 'block')
	}
	
	//voci cavalli
	$('#rightfooter').empty();
	var indiceLabel = 0;
	var innerFooter = "<div>";
	for (k in GLOBALcorsaObj.chk) {
		if (GLOBALcorsaObj.chk[k].length > 0) {
			GLOBALcorsaObj.chk[k].sort(sortNumber);
			//alert(GLOBALcorsaObj.descScomm)
			innerFooter += '<h2>' + GLOBALcorsaObj.labels[indiceLabel] + '</h2><ol>';
			for (var z = 0; z < GLOBALcorsaObj.chk[k].length; z++) {
				innerFooter += '<li>';
				innerFooter +=  GLOBALcorsaObj.cavalli[GLOBALcorsaObj.chk[k][z]]['id'];
				innerFooter += '. ';
				innerFooter += GLOBALcorsaObj.cavalli[GLOBALcorsaObj.chk[k][z]]['cavallo'];
				innerFooter += '</li>';
			}
			innerFooter += "</ol>";
		}
		indiceLabel++;
	}
	innerFooter += "</div>";
	
	$('#rightfooter').append(innerFooter);
	
}

function stringaPronostico() {
	var cavA = GLOBALcorsaObj.chk['A'];
	var cavB = GLOBALcorsaObj.chk['B'];
	var cavC = GLOBALcorsaObj.chk['C'];
	cavA.sort(sortNumber);
	cavB.sort(sortNumber);
	cavC.sort(sortNumber);
	var opStr = "";
	if (makeString(cavA) != "") {
		opStr += makeString(cavA);
	}
	if (makeString(cavB) != "") {
		opStr += "/" + makeString(cavB);
	}
	if (makeString(cavC) != "") {
		opStr += "/" + makeString(cavC);
	}
	
	return opStr;
	
}
function sortNumber(a,b) {
	return a - b;
}
function makeString(arr) {
	if (arr.length > 0) {
		var opStr = "";
		opStr += GLOBALcorsaObj.cavalli[arr[0]].id;
		for (var i = 1; i <arr.length-1; i++) {
			if (arr[i] == arr[i-1]+1 && arr[i] == arr[i+1]-1) { /// Devo mettere la freccia invece che il numero
				if (opStr.charAt(opStr.length-1) != ">") {
					opStr += "->";
				}
			} else if (arr[i] == arr[i-1]+1) {
				if (opStr.charAt(opStr.length-1) != ">") {
					opStr += ", ";
				}
				opStr += GLOBALcorsaObj.cavalli[arr[i]].id;
			} else {
				opStr += ", ";
				opStr += GLOBALcorsaObj.cavalli[arr[i]].id;
			}
		}
		if (arr.length>1) {
			if (opStr.charAt(opStr.length-1) != ">") {
				opStr += ", ";
			}
			opStr += GLOBALcorsaObj.cavalli[arr[arr.length-1]].id;
		}
		return opStr;
	} else {
		return "";
	}
}

////
var playerOutput = "";
var GLOBALcodicefiscale;
var GLOBALnomecognome;
function bet() {
	// Controllo che il valore della schedina sia nei limiti consentiti
	if (Number($('#impTotale').val())<2 || Number($('#impTotale').val())>999) {
		var walert = $().popw({wtype:'Alert', wwidth:200, wheight:'auto', draggable:true});
		walert.writehtml('Impossibile giocare un coupon di valore inferiore a 2 &euro; o superiore a 999 &euro;.');
		return false;
	}
	// Controllo che l'utente sia valido
	var TD = new Date();
	var TS = TD.getTime();
	var url = "../../LoginCheck.aspx";
	var opt = "txtUser=&txtPwd=&t=" + TS;
	var fun = function(xml){
		var xmlMessage = $(xml).find('Message').text();
		if (xmlMessage == '0') {
			var xmlPlayer = $(xml).find('Login_Data').attr('UserId');
			GLOBALcodicefiscale = $(xml).find('Login_Data').attr('userPersonalID');
			GLOBALnomecognome = $(xml).find('Login_Data').attr('userUid') + ' ' + $(xml).find('Login_Data').attr('userLastName');
			if (String(xmlPlayer) == 'undefined') {
				createLoginPopup();
			} else {
				playerOutput += '<Player ';
				playerOutput += 'UserID="' + $(xml).find('Login_Data').attr('UserId') + '" ';
				playerOutput += 'Balance="' + $(xml).find('Login_Data').attr('balance') + '" ';
				playerOutput += 'Tipo="5" ';
				playerOutput += 'IDContratto="' + $(xml).find('Login_Data').attr('cnId') + '" ';
				playerOutput += 'CashID="' + $(xml).find('Login_Data').attr('userCashId') + '" ';
				playerOutput += 'xmlns="http://www.mediatelbet.it/ws/types" />';
				gotoCouponStep(2)
				showWait(10);
			}
		} else {
			var walert = $().popw({wtype:'Alert', wwidth:200, wheight:'auto', draggable:true});
			walert.writehtml(xmlMessage);
		}
	};
	zReq(url, opt, '#nonesisto', fun);
}

function sendBet() {
	clearInterval(GLOBALWaitTime);
	$('.iconfirm').html('Richiesta in corso...');
	///// Creo l'XML
	var ImportoBase = Math.round(Number($('#cstake').attr('value')));
	var ImportoTotale = ImportoBase * GLOBALcorsaObj.nCombi;
	var codiceScommessa = tipoScommArray[GLOBALcorsaObj.descScomm.split("-")[0]];
	var codiceSistema = tipoSistemaArray[GLOBALcorsaObj.descScomm.split("-")[(GLOBALcorsaObj.descScomm.split("-").length)-1]];
	
	var xmlBet = '';
		xmlBet+= '<Puntata ';
		xmlBet+= 'Tipo="0" '
		xmlBet+= 'Importo="' + ImportoTotale + '" '
		xmlBet+= 'Combinazioni="' + GLOBALcorsaObj.nCombi + '" '
		xmlBet+= 'ImportoTotale="' + ImportoTotale + '" '
		xmlBet+= 'PalCode="' + GLOBALcorsaObj.PaliNum + '" '
		xmlBet+= 'AvvCode="' + GLOBALcorsaObj.AvvNum + '" '
		xmlBet+= 'CN="0" '
		xmlBet+= 'PV="0" '
		xmlBet+= 'xmlns="http://www.mediatelbet.it/ws/types">';
		
		xmlBet+= 	'<Scommessa ';
		xmlBet+=	'cod="' + GLOBALcorsaObj.scomcode + '" ';
		xmlBet+=	'SIS="' + GLOBALcorsaObj.sis + '" ';
		xmlBet+=	'sigla="' + GLOBALcorsaObj.descScomm + '" ';
		xmlBet+=	'pron="" ';
		xmlBet+=	'/>';
		
		xmlBet+=		'<DetailsScomm>';
		
		var A = GLOBALcorsaObj.chk['A'];
		var B = GLOBALcorsaObj.chk['B'];
		var C = GLOBALcorsaObj.chk['C'];
		var L = GLOBALcorsaObj.cavalli.length;
		
		var listaNomiCavalli = new Array()
		var listaDataCavalli = new Array()
		var listaNumsCavalli = new Array()
		
		for (var i = 0; i < L; i++) {
			if($.inArray((i), A)!=-1 || $.inArray((i), B)!=-1 || $.inArray((i), C)!=-1) {
				listaNomiCavalli.push(GLOBALcorsaObj.cavalli[i]['cavallo']);
				listaNumsCavalli.push(i+1)
				var strData = "";
				if($.inArray((i), A)!=-1) {
					strData+='A';
				}
				if($.inArray((i), B)!=-1) {
					strData+='B';
				}
				if($.inArray((i), C)!=-1) {
					strData+='C';
				}
				listaDataCavalli.push(strData);
			}
		}			
		
		
		// La schedina deve essere differenziata
		// Per le scommesse di tipo X1 X12 e X13 si devono mandare i cavalli separati
		// Per tutte le altre scommesse si manda un unico nodo
		var horseName = ''
		if (GLOBALcorsaObj.descScomm == 'X1' || GLOBALcorsaObj.descScomm == 'X12' || GLOBALcorsaObj.descScomm == 'X13') {
			for (var i = 0; i < listaNumsCavalli.length; i++) {
				xmlBet+=			'<CouponDetails ';
				xmlBet+=			'combinazioni="1" ';
				xmlBet+=			'EveCode="1" ';
				xmlBet+=			'IMP="' + ImportoBase + '" ';
				xmlBet+=			'ScomCod="' + GLOBALcorsaObj.scomcode + '" ';
				xmlBet+=			'SIS="' + GLOBALcorsaObj.sis + '" ';
				xmlBet+=			'AvvCode="' + GLOBALcorsaObj.AvvNum + '" ';
				xmlBet+=			'MB="' + ImportoBase +'" ';
				xmlBet+=			'Horse="' + listaNumsCavalli[i] + '" ';
				horseName = 			'HorseName="' + escape(listaNomiCavalli[i]) + '" ';
				xmlBet+=			horseName
				xmlBet+=			'Pos="' + listaDataCavalli[i] + '" ';
				xmlBet+=			'Quota="0" />';
			}
		} else {
			xmlBet+=			'<CouponDetails ';
			xmlBet+=			'combinazioni="' + GLOBALcorsaObj.nCombi + '" ';
			xmlBet+=			'EveCode="1" ';
			xmlBet+=			'IMP="' + (ImportoBase*GLOBALcorsaObj.nCombi) +'" ';
			xmlBet+=			'ScomCod="' + GLOBALcorsaObj.scomcode + '" ';
			xmlBet+=			'SIS="' + GLOBALcorsaObj.sis + '" ';
			xmlBet+=			'AvvCode="' + GLOBALcorsaObj.AvvNum + '" ';
			xmlBet+=			'MB="' + ImportoBase +'" ';
			xmlBet+=			'Horse="' + listaNumsCavalli.join(' ') + '" ';
			horseName = 			'HorseName="' + escape(listaNomiCavalli.join('$$').split('&nbsp;').join('')) + '" ';
			xmlBet+=			horseName			
			xmlBet+=			'Pos="' + listaDataCavalli.join(' ') + '" ';
			xmlBet+=			'Quota="0" />';
		}
		
		xmlBet+=		'</DetailsScomm>';
		
		xmlBet+= '</Puntata>';
		
		xmlBet+= playerOutput;
		
		xmlBet = '<?xml version="1.0" encoding="utf-16"?><Bet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">' + xmlBet + '</Bet>';
		//
		try{console.log(horseName)}catch(e){}
		
		//var addBetUrl = '../../b2000_Test/IPPICA/RispostaHTML.asp'; // Per test
		var addBetUrl = "ippica/PSIP_client/" + 'xmlAddBet.aspx';
		var TD = new Date();
		var TS = TD.getTime();
		
		$.ajax({
			url: addBetUrl + '?t=' + TS + '&xslt=d_psipresult',
			//url: addBetUrl + '?t=' + TS,
			type: 'POST',
			//dataType: "text/xml",
			data: {bet:xmlBet},
			success: elaboraRisposta
		});
}
var GLOBALBarCode
function elaboraRisposta(html){
	gotoCouponStep(1)
	$('.iconfirm').html('&nbsp;');
	$('#betResult').html(html);
	
		/// Sistemo la visualizzazione dei cavalli;
		if ($('.ColonnaScommessa').length > 0) {
			/// Avviso che la giocata è stata eseguita
			var walert = $().popw({wtype:'info', title:'Conferma', wwidth:200, wheight:'auto', draggable:true});
			walert.writehtml('La giocata &egrave; stata registrata.');
			
			var n = 0;
			/// Codice a barre
			var myCode = $('#BarCode').text();
			GLOBALBarCode = myCode.split('*').join('');
			zPrint(true)
		}
}
function closeCoupon() {
	$('#betResult').html('');
}
function printCoupon() {
	window.print();
}

function zPrint(print){
		var printValue = print;
	var options = 'menubar=no,status=no,scrollbars=yes,resizable=no,width=500,height=450,toolbar=no,location=no,directories=no';
	var pop = window.open('printcoupon.aspx?barcode='+GLOBALBarCode+'&print='+printValue+'&st=2','Bet',options);
	if(window.focus){pop.focus()};
	return false;
}


///// Utilities
zpopit = new Object({		
	show: function(msg){
		$('#popitmsg').html(msg)			
		$('#zback').css({'opacity':'0.5'});
		var winWidth = $(window).width(); 
		var winHeight  = $(window).height(); 				
		$('#waitpopit').css({'top': (winHeight - 100)/2 , 'left': (winWidth - 250)/2})
		$('#zback').fadeIn('fast'); $('#waitpopit').fadeIn('fast'); $('#popitbtn').focus()
		GLOBALpopitbtnFocus = setTimeout(function(){
			$('#popitbtn').focus()
		},500)
	},
	hide: function(){
		$('#zdock').fadeOut('slow');$('#waitpopit').fadeOut('slow');
	}
});



function manMsgCreate(msgs){			
/*	if(msgs.length > 0){				
				
			$('#zback').css({'opacity':'0.5'})
			$('#zback').fadeIn('slow');		
			
			var dockHtmlDU = '<div id="msgContainer" class="svw"><ul>'
			var dockHtmlLI = ''
			var headmsg = ': la lettura è obbligatoria.<br /> Conferma cliccando sull\'icona a destra.'
			for(var i = 0; i < msgs.length; i++){
				dockHtmlLI +='<li><div class="msgBox"><div class="msgBox-head"><a href="javascript:void(0)" title="Conferma Lettura" onclick="manMsgManage(this, 2, '+msgs[i].getAttribute('ID')+')">LETTO</a><strong>Attenzione</strong>'+headmsg+'</div><div class="msgBox-in" id="msg'+msgs[i].getAttribute('ID')+'"><h3>'+msgs[i].getAttribute('Subj')+'</h3><p>'+msgs[i].getAttribute('Txt')+'</p></div></div></li>'
			}
			var dockHtmlUD = '</ul></div>'	
			dockHtml = 	dockHtmlDU + dockHtmlLI + dockHtmlUD 
			$('#zdock').html(dockHtml)	
								
			var winWidth = $(window).width(); 
			var winHeight  = $(window).height(); 
				
			$('#zdock').css({'z-index':'1000', 'top': (winHeight - 400)/2 , 'left': (winWidth - 500)/2})
			$('#zdock').fadeIn('slow');										
			$('#msgContainer').slideView()							
						
	}*/
}



function modificaAvvenimento(codice, stato){
	$('#corsa_'+codice).removeClass('z0')
	$('#corsa_'+codice).removeClass('z1')
	$('#corsa_'+codice).removeClass('z2')
	$('#corsa_'+codice).removeClass('z3')
	$('#corsa_'+codice).removeClass('z4')
	$('#corsa_'+codice).removeClass('z7')
	$('#corsa_'+codice).removeClass('z10')
	$('#corsa_'+codice).addClass('z'+stato)
	if (GLOBALcorsaObj.codeCorsa == codice){ // La corsa da modificare è attualmente mostrata a video
		cReq('X1', codice)
	}
	//alert('Avvenimento: ' + codice + ' | Stato: ' + stato);
}
function modificaCavallo(codice, posizione, stato){
	if (GLOBALcorsaObj.codeCorsa == codice){ // La corsa da modificare è attualmente mostrata a video
		$('#tr'+posizione).removeClass('stato1');
		$('#tr'+posizione).removeClass('stato2');
		$('#tr'+posizione).removeClass('stato3');
		$('#tr'+posizione).removeClass('stato12');
		$('#tr'+posizione).addClass('stato'+stato);
		if (stato == 2) {// Devo riattivare la riga
			$('#A_'+posizione).removeAttr('disabled');
			$('#B_'+posizione).removeAttr('disabled');
			$('#C_'+posizione).removeAttr('disabled');
		} else {// Devo disattivare la riga
			$('#A_'+posizione).removeAttr('checked');
			$('#B_'+posizione).removeAttr('checked');
			$('#C_'+posizione).removeAttr('checked');
			$('#A_'+posizione).attr('disabled', 'disabled');
			$('#B_'+posizione).attr('disabled', 'disabled');
			$('#C_'+posizione).attr('disabled', 'disabled');
		}
		/// Alla fine rileggo la schedina
		calCombi();
	}
}


function createLoginPopup() {
	/* Devo mostrare un errore */
	var loginFormStr = ''; var loginFormStr2 = '';  var descErr = '';
	//if(descErr.indexOf('login') != -1){
		loginFormStr2 += '<div id="login_side"><p>'
		loginFormStr += '</p><p><label for="wlogin_username">Username</label><input type="text" id="wlogin_username" value="username" /></p>'
		loginFormStr += '<p><label for="wlogin_password">Password</label><input type="password" id="wlogin_password" value="password" /></p>'
		loginFormStr += '<p><button>Login</button></p>'
		loginFormStr += '</div>'
		loginFormStr += '<div id="reg_side">'
		loginFormStr += '<p>Se non sei ancora registrato apri un conto oggi stesso. E\' semplice ed immediato.</p>'
		loginFormStr += '<a href="etc.aspx?p=registrazione">Registrati</a>'						
		loginFormStr += '</div>'
		$('#tmpusr').select();
	//}
	var w = $().popw({wtype:'alert', wwidth:200, draggable:true}).writehtml(loginFormStr2 + descErr + loginFormStr);
	$('#modalew').attr('class', 'modale_login');
	if (loginFormStr != '') {
		$('#whtml #wlogin_username').focus(function() {
			if ($(this).val() == 'username') {
				$(this).val('')
			}
		})
		$('#whtml #wlogin_password').focus(function() {
			if ($(this).val() == 'password') {
				$(this).val('')
			}
		})
		$('#whtml input').keydown(function(e) {
			if (e.keyCode == 13) {
				loginLoad('post',$('#whtml #wlogin_username').val(),$('#whtml #wlogin_password').val());
			}
		});
		$('#whtml button').click(function(){
			loginLoad('post',$('#whtml #wlogin_username').val(),$('#whtml #wlogin_password').val());
		})
	}
}

function gotoCouponStep(num) {
	$('#cstep1').css('display', 'none');
	$('#cstep2').css('display', 'none');
	$('#cstep3').css('display', 'none');
	$('#cstep'+num).css('display', 'block');
}
var GLOBALWaitTime
function showWait(time, confirm){
	if(time > 0){
		var x = time-1
		GLOBALWaitTime = setTimeout('showWait('+x+')',1000);
		$('.iconfirm').show();
		$('.iconfirm').html('Hai ancora '+parseInt(time)+' secondi per confermare!')
	}else{
		if(!confirm){			
			if (String($('.iconfirm').html()).indexOf('secondi per confermare')>0){
				$('.iconfirm').html('Scommessa annullata.');
				gotoCouponStep(1);
			}
		}
		GLOBALConfirm = false;
		if(GLOBALWaitTime){clearInterval(GLOBALWaitTime)};
	}	
}