$(document).ready(function() {
	$("body").append("<div id='solitairediv'></div>");
	$("#solitairediv").css({border: "1px solid black",backgroundColor: "green",width: "622px",height: "600px",position: "absolute",left: "250px",top: "10px"});
	solitaire_loading();
	cartes_init();
	solitaire_init();
	solitaire_loaded();
});

function solitaire_loading() {
	$("body").append("<div id='loading'></div>");
	$("#loading").css({position: "absolute",top: "0",left: "0",width: "100%",height: "100%",opacity: "0.8",backgroundColor: "black",zIndex:"10000"});
	$("body").append("<div id='loadingc'></div>");
	$("#loadingc").css({position: "absolute",left: "50%",marginLeft: "-40px",top: "50%",marginTop: "-10px",width: "80px",height: "20px",backgroundColor: "white",padding: "5px",zIndex:"10001"}).html("Chargement");
	tmpimg = new Image();
	for (i=0; i<52; i++) {tmpimg.src="../cartes/"+i+".jpg";};
	tmpimg.src="../cartes/endos.jpg";
	tmpimg.src="../cartes/asca.jpg";
	tmpimg.src="../cartes/astr.jpg";
	tmpimg.src="../cartes/aspi.jpg";
	tmpimg.src="../cartes/asco.jpg";
	tmpimg.src="../cartes/carte.jpg";
}
function solitaire_loaded() {
	$("#loading, #loadingc").remove();
}

var conteneurs_ca = new Array();
var conteneurs_su = new Array();
var conteneurs_pi = new Array();
var conteneur_pi_index = 0;
var solitaire_ca = new Array("t0", "f1", "f2", "f3", "f4", "f5", "f6", "t1", "f2", "f3", "f4", "f5", "f6", "t2", "f3", "f4", "f5", "f6", "t3", "f4", "f5", "f6", "t4", "f5", "f6", "t5", "f6", "t6");
var tmp_carte = "";
var tmp_cont = "";

function solitaire_init() {
	// conteneurs des cartes courantes
	for (i=0; i<7; i++) {
		conteneurs_ca[i] = new conteneur_ca(i);
		conteneurs_ca[i].display(20+(i*85), 150);
	}
	// conteneurs des suites
	for (i=0; i<4; i++) {
		conteneurs_su[i] = new conteneur_su(i, types[i]+"0");
		conteneurs_su[i].display(275+(i*85), 20);
	}
	
	// placement des cartes
	n = solitaire_ca.length;
	for (i=0; i<n; i++) {
		vis = solitaire_ca[i].substr(0,1)=="t" ? true : false;
		con = solitaire_ca[i].substr(1);
		ca = cartes_nouvelle();
		cartes[ca].visible = vis;
		cartes[ca].display();
		if (vis) carte_draggable(ca);
		$("#conteneur_ca"+con).append($("#carte"+ca));
	}
	conteneurs_refresh();

	// pioche
	$("#solitairediv").append("<div id='conteneur_pi' class='drop'></div>");
	$("#solitairediv").append("<div id='conteneur_pio' class='drop'></div>");
	$("#conteneur_pi").css({position: "absolute",top: "20px",left: "20px",width: "72px",height: "104px",cursor: "pointer",background: "transparent url('cartes/carte.jpg') no-repeat"});
	$("#conteneur_pio").css({position: "absolute",top: "20px",left: "105px",width: "72px",height: "104px",cursor: "pointer",background: "transparent url('cartes/carte.jpg') no-repeat"});
	for (i=0; i<24; i++) {
		conteneurs_pi[i] = cartes_nouvelle();
		cartes[conteneurs_pi[i]].visible = false;
		cartes[conteneurs_pi[i]].display();
		$("#conteneur_pi").append($("#carte"+cartes[conteneurs_pi[i]].numero));
	}
	$("#conteneur_pi").click(function() {
		if ($("#conteneur_pi").children().length==0) {
			for (i=0; i<conteneurs_pi.length; i++) {
				//console.log("#1 "+ cartes[conteneurs_pi[i]].numero);
				$("#conteneur_pi").append($("#carte"+cartes[conteneurs_pi[i]].numero));
				cartes[conteneurs_pi[i]].flashretourne();
				$("#carte"+cartes[conteneurs_pi[i]].numero).css("marginLeft", 0).DraggableDestroy();
			}
			conteneur_pi_index = 0;
		}
		else {
			$("#conteneur_pio > .carte").css("marginLeft", 0);
			ti = conteneur_pi_index;
			//console.log("#2 "+ ti);
			if (ti==conteneurs_pi.length) {
				$("#conteneur_pio").append($("#carte"+cartes[conteneurs_pi[ti-1]].numero));
				cartes[conteneurs_pi[ti-1]].flashretourne();
			}
			else {
				for (i=ti; i<(ti+3); i++) {
					if (conteneurs_pi[i] || conteneurs_pi[i]==0) {
						//console.log("#2 "+ cartes[conteneurs_pi[i]].numero);
						$("#conteneur_pio").append($("#carte"+cartes[conteneurs_pi[i]].numero));
						cartes[conteneurs_pi[i]].flashretourne();
						conteneur_pi_index = i+1;
					}
				}
			}
			conteneurs_refresh();
		}
	});
}

// conteneur des cartes courantes
function conteneur_ca(n) {
	this.zindex = (n+1)*50;
	this.display = function(x,y) {
		txt = "<div id='conteneur_ca"+n+"' class='drop'></div>";
		$("#solitairediv").append(txt);
		//$("#conteneur_ca"+n).css("position", "absolute").css("top", y+"px").css("left", x+"px");
		$("#conteneur_ca"+n).css({position: "absolute",top: y+"px",left: x+"px",width: "72px",height: "104px",background: "transparent url('cartes/carte.jpg') no-repeat"});
	}
}

// conteneur des suites
function conteneur_su(n,as) {
	this.zindex = 400+((n+1)*50);
	this.display = function(x,y) {
		txt = "<div id='conteneur_su"+n+"' class='drop'></div>";
		$("#solitairediv").append(txt);
		//$("#conteneur_su"+n).css("position", "absolute").css("top", y+"px").css("left", x+"px");
		$("#conteneur_su"+n).css({position: "absolute",top: y+"px",left: x+"px",width: "72px",height: "104px",background: "transparent url('cartes/as"+types[n]+".jpg') no-repeat"});
	}
}

function conteneurs_refresh() {
	conteneurs_ca_refresh();
	conteneurs_su_refresh();
	conteneur_pio_refresh();
}
function conteneurs_ca_refresh() {
	n = conteneurs_ca.length;
	for (i=0; i<n; i++) {
		var tmpMargin = 0;
		zi = conteneurs_ca[i].zindex;
		nclasse = "roi";
		last = "";
		$("#conteneur_ca"+i).children("div").each(function() {
			$(this).css("marginTop", tmpMargin).css("marginLeft", "0px").css("zIndex", ++zi).css("top", 0).css("left", 0);
			tmpMargin +=20;
			last = cartes[$(this).attr("id").substr(5)];
			nc = last.classe.substr(0,1)=="r" ? "n" : "r";
			nv = parseInt(last.classe.substr(1))-1;
			nclasse = nc+nv;
		});
		if (last!="" && !last.visible) {
			last.retourne();
			carte_draggable(last.numero);
		}
		h = 104 + tmpMargin;
		$("#conteneur_ca"+i).css("height", h+"px");
		$("#conteneur_ca"+i).DroppableDestroy().Droppable({
			accept: nclasse,
			onDrop: function(drag) {
				$(this).append(drag);
				m = $(drag).attr("id").substr(5);
				for (j=0; j<cartes[m].children.length; j++) {
					$(this).append($("#"+cartes[m].children[j]));
				}
				tmp_cont = $(this).attr("id").substr(10);
				conteneur_pio_check(m);
				conteneurs_refresh();
			}
		});
	}
}

function conteneurs_su_refresh() {
	n = conteneurs_su.length;
	for (i=0; i<n; i++) {
		zi = conteneurs_su[i].zindex;
		nclasse = types[i]+"0";
		$("#conteneur_su"+i).children("div").each(function() {
			$(this).css("margin", "0").css("zIndex", ++zi).css("top", 0).css("left", 0);
			last = cartes[$(this).attr("id").substr(5)].carte;
			nclasse = types[i]+(parseInt(last.substr(2))+1);
		});
		$("#conteneur_su"+i).DroppableDestroy().Droppable({
			accept: nclasse,
			onDrop: function(drag) {
				$(this).append(drag);
				m = $(drag).attr("id").substr(5);
				for (j=0; j<cartes[m].children.length; j++) {
					$(this).append($("#"+cartes[m].children[j]));
				}
				tmp_cont = $(this).attr("id").substr(10);
				conteneur_pio_check(m);
				conteneurs_refresh();
			}
		});
	}
}

function conteneur_pio_refresh() {
	$("#conteneur_pio").children().each(function() {
		id = $(this).attr("id").substr(5);
		$("#carte"+id).DraggableDestroy();
		if (conteneurs_pi[conteneur_pi_index-1]==cartes[id].numero) {
			if (conteneur_pi_index>2) $("#carte"+id).css("marginLeft", "40px");
			carte_draggable(id);
		}
		if (conteneurs_pi[conteneur_pi_index-2]==cartes[id].numero) {
			if (conteneur_pi_index>2) $("#carte"+id).css("marginLeft", "20px");
		}
	});
}

function conteneur_pio_check(m) {
	if (conteneurs_pi[conteneur_pi_index-1]==cartes[m].numero) {
		var tmp = new Array();
		tmpi = 0;
		for (i=0; i<conteneurs_pi.length; i++) {
			if (conteneurs_pi[i]!=cartes[m].numero) {
				tmp[tmpi++] = conteneurs_pi[i];
			}
		}
		conteneurs_pi = tmp;
		conteneur_pi_index--;
	}
}

function carte_draggable(ca) {
	$("#carte"+ca).Draggable({
		revert: true,
		zIndex: 1000,
		onDrag: function(x,y) {
			j = cartes[ca].children.length;
			zi = 1000;
			for (i=0; i<j; i++) {
				//$("#"+cartes[ca].children[i]).css("left", x).css("top", y).css("zIndex", ++zi);
				$("#"+cartes[ca].children[i]).css({
					left: x+"px",
					top: y+"px",
					zIndex: ++zi
				});
			}
			tmp_carte = cartes[ca].carte;
		},
		onStop: function() {
			j = cartes[ca].children.length;
			for (i=0; i<j; i++) {
				$("#"+cartes[ca].children[i]).css("left", "0").css("top", "0");
			}
			cartes[ca].children = new Array();
		}
	});
	$("#carte"+ca).mousedown(function(){
		if ($(this).parent().attr("id")!="") {
			var itsme = false;
			$(this).parent().children("div").each(function() {
				if (itsme===true) {
					cartes[ca].children.push($(this).attr("id"));
				}
				else {
					if ($(this).attr("id")=="carte"+ca) {
						itsme = true;
					}
				} 
			});
		}
	});
	$("#carte"+ca).mouseup(function(){
		cartes[ca].children = new Array();
	});
}

