var Table = Class.create();

Table.prototype = {
	initialize: function(name, secondHeader, withEdition, rarity, anzahl, isWarenkorb){
		this.name = name;
		this.secondHeader = secondHeader;
		this.withEdition = withEdition;		
		this.isWarenkorb = isWarenkorb;	
		this.kartenArray = new Array();
		this.rarity = rarity;
		this.farbe = "alle";	
		this.zustand = "alle";	
		this.foil = "alle";	
		this.anzahl = anzahl;		
	},	
	setKartenArray: function(kartenArray){		
		this.kartenArray = eval(kartenArray);
	},	
	createHeadTable: function(){	
		var buffer = new Array();
		buffer[buffer.length] = "<table class='tablekarten tablekartenhead' id='headtable'><tbody><tr><td class='image'></td><td align='middle' class='kartenname'>Kartenname Englisch<img id='sortKartenname' onclick='"+this.name+".sortKarten(this,0,0);' src='images/sortup.gif'></td>";
		buffer[buffer.length] = "<td align='middle' class='kartenname'>Kartenname Deutsch<img id='sortKartennameDe' onclick='"+this.name+".sortKarten(this,10,0);' src='images/sort.gif'></td>";
		if(this.withEdition){
			buffer[buffer.length] = "<td align='middle' class='edition'>Edition<img id='sortEdition' onclick='"+this.name+".sortKarten(this,9,0);' src='images/sort.gif'></td>";
		}
		buffer[buffer.length] =  "<td align='middle' class='rarity'>Rarity<img id='sortRarity' onclick='"+this.name+".sortKarten(this,1,0);' src='images/sort.gif'></td>";
		buffer[buffer.length] =  "<td align='middle' class='farbe'>Farbe<img id='sortFarbe' onclick='"+this.name+".sortKarten(this,2,0);' src='images/sort.gif'></td>";
		buffer[buffer.length] =  "<td align='middle' class='zustand'>Zustand<img id='sortZustand' onclick='"+this.name+".sortKarten(this,3,0);' src='images/sort.gif'></td>";
		buffer[buffer.length] =  "<td align='middle' class='foil'>Foil<img id='sortFoil' onclick='"+this.name+".sortKarten(this,4,1);' src='images/sort.gif'></td>";
		buffer[buffer.length] =  "<td align='middle' class='preis'>Preis<img id='sortPreis' onclick='"+this.name+".sortKarten(this,6,1);' src='images/sort.gif'></td>";
		
		if(!this.isWarenkorb){
			buffer[buffer.length] = "<td colspan='2' align='middle' class='kaufen'>nur vorrätige Karten anzeigen <input class='checkbox' id='cbAnzahl' onclick='"+this.name+".createBodyTable();' type='checkbox'></td>";
			
		} else {
			buffer[buffer.length] =  "<td class='kaufen'>englisch</td>";
		}
		
		if(!this.isWarenkorb){
		
		} else {
			buffer[buffer.length] =  "<td class='kaufen'>deutsch</td>";
		}		
		if(this.isWarenkorb){
			buffer[buffer.length] =  "<td align='middle' class='preis'>Total</td>";	
		} 			
		buffer[buffer.length] =  "</tr>";	
		
		if(this.secondHeader){
			buffer[buffer.length] = "<tr><td class='image'></td><td class='kartenname'></td><td class='kartenname'></td>";
			if(this.withEdition){
				buffer[buffer.length] = "<td class='edition'></td>";
			}
			buffer[buffer.length] = "<td class='rarity'><div><div id='cbRarity' class='selectboxrarity' style='background: white url(images/cbOpen.gif) center right no-repeat;' onclick='comboBox.openOptions([\"alle\",\"Mystic\",\"Rare\",\"Uncommon\",\"Common\",\"Timeshifted\",\"Basic Land\",\"Promo\",\"Token\"],this,\"filter\",";
			buffer[buffer.length] = this.name;
			buffer[buffer.length] = ",\"selectinnerdivhead\");'></div></div></td>";
			buffer[buffer.length] = "<td class='farbe'><div><div id='cbFarbe' class='selectboxfarbe' style='background: white url(images/cbOpen.gif) center right no-repeat;' onclick='comboBox.openOptions([\"alle\",\"White\",\"Blue\",\"Black\",\"Red\",\"Green\",\"Multicolor\",\"Colorless\",\"Land\"],this,\"filter\",";
			buffer[buffer.length] = this.name;
			buffer[buffer.length] = ",\"selectinnerdivhead\");'></div></div></td>";
			buffer[buffer.length] = "<td class='zustand'><div><div id='cbZustand' class='selectboxzustand' style='background: white url(images/cbOpen.gif) center right no-repeat;' onclick='comboBox.openOptions([\"alle\",\"m-nm\",\"ex\",\"vf\",\"fine\",\"good\"],this,\"filter\",";
			buffer[buffer.length] = this.name;
			buffer[buffer.length] = ",\"selectinnerdivhead\");'></div></div></td>";
			buffer[buffer.length] = "<td class='foil'><div><div id='cbFoil' class='selectboxfoil' style='background: white url(images/cbOpen.gif) center right no-repeat;' onclick='comboBox.openOptions([\"alle\",\"nein\",\"ja\"],this,\"filter\",";
			buffer[buffer.length] = this.name;
			buffer[buffer.length] = ",\"selectinnerdivhead\");'></div></div></td><td></td>";					
			buffer[buffer.length] =  "<td align='middle' class='deeng'>englische Karten</td>";
			buffer[buffer.length] =  "<td align='middle' class='deeng'>deutsche Karten</td>";
			buffer[buffer.length] = "</tr>";	
		}		
		buffer[buffer.length] = "</tbody></table>";
		var div = $('mainHead');	
			
		div.innerHTML = buffer.join("");
		
		if(this.secondHeader){
			$('cbRarity').innerHTML = "<div class='selectinnerdivhead'>"+this.rarity+"</div>";
			$('cbFarbe').innerHTML = "<div class='selectinnerdivhead'>"+this.farbe+"</div>";
			$('cbZustand').innerHTML = "<div class='selectinnerdivhead'>"+this.zustand+"</div>";			
			$('cbFoil').innerHTML = "<div class='selectinnerdivhead'>"+this.foil+"</div>";
			$('cbAnzahl').checked = this.anzahl;			
		}
		
	},
	createBodyTable: function(){
	
		var treffer = false;
		var buffer = new Array();		
		
		buffer[buffer.length] = "<table class='tablekarten tablekartenbody'><tbody>";	
		
		if(this.secondHeader){			
			var valueRarity = $('cbRarity').innerHTML.replace(/<.*?>/g,"");					
			var valueFarbe = $('cbFarbe').innerHTML.replace(/<.*?>/g,"");	
			var valueZustand = $('cbZustand').innerHTML.replace(/<.*?>/g,"");	
			var valueFoil = $('cbFoil').innerHTML.replace(/<.*?>/g,"");
			if(valueFoil == "nein"){
				valueFoilFilter = 0;
			}
			if(valueFoil == "ja"){
				valueFoilFilter = 1;
			}				
			
			if(!this.withEdition){//werte behalten bei den editionen
				this.farbe= valueFarbe;	
				this.anzahl= $('cbAnzahl').checked;	
				this.rarity	= valueRarity;	
				this.zustand= valueZustand;	
				this.foil= valueFoil;			
			}							
        }
		var oddRow = 0;		
		for (var i = 0, len = this.kartenArray.length; i < len; ++i) {				
			if(!this.secondHeader || ( ($('cbAnzahl').checked ? parseInt(this.kartenArray[i][5])+parseInt(this.kartenArray[i][11])>0 : true) && (valueFoil == 'alle' || this.kartenArray[i][4] == valueFoilFilter) && (valueZustand == 'alle' || this.kartenArray[i][3] == valueZustand) && (valueFarbe == 'alle' || this.kartenArray[i][2] == valueFarbe) && (valueRarity == 'alle' || this.kartenArray[i][1] == valueRarity))){
				treffer = true;
				buffer[buffer.length] = "<tr onmouseover=\"this.style.backgroundColor = '#c1c1c1';\" onmouseout=\"this.style.backgroundColor = '';\" ";
				if(oddRow%2 != 0){
					buffer[buffer.length] = "class='oddRow'" 
				} 
				oddRow++;				
				buffer[buffer.length] = "><td onmouseout='unsetTooltip();' onmouseover='setTooltipKarte(this,\"";
				buffer[buffer.length] = this.kartenArray[i][8];
				buffer[buffer.length] = ".jpg\");' class='image'><img src='images/info.gif'></td><td class='kartenname'>";				
				buffer[buffer.length] = this.kartenArray[i][0];
				buffer[buffer.length] = "</td>";
				buffer[buffer.length] = "<td class='kartenname'>";				
				buffer[buffer.length] = this.kartenArray[i][10];
				buffer[buffer.length] = "</td>";
				if(this.withEdition){
					buffer[buffer.length] = "<td class='edition'>";		
					buffer[buffer.length] = this.kartenArray[i][9];
					buffer[buffer.length] = "</td>";
				}
				buffer[buffer.length] = "<td class='rarity' align='middle'>";		
				buffer[buffer.length] = this.kartenArray[i][1];
				buffer[buffer.length] = "</td><td class='farbe' align='middle'>";	
				buffer[buffer.length] = this.kartenArray[i][2];
				buffer[buffer.length] = "</td><td class='zustand' align='middle'>";	
				buffer[buffer.length] = this.kartenArray[i][3];
				buffer[buffer.length] = "</td><td class='foil' align='middle'>";	
				if(this.kartenArray[i][4] == 1){
					buffer[buffer.length] = "<img src='images/foil.gif'>";
				}
				buffer[buffer.length] = "</td>";
				buffer[buffer.length] = "<td class='preis' align='right'>";	
				buffer[buffer.length] = this.kartenArray[i][6].replace(/\./g,",");
				buffer[buffer.length] = "&euro;</td>";
				if(!this.isWarenkorb){
					buffer[buffer.length] = "<td class='anzahl' align='right'>";	
					buffer[buffer.length] = this.kartenArray[i][5];
					buffer[buffer.length] = "</td>";	
				}			
				buffer[buffer.length] = "<td class='kaufen' valign='top'>";
				buffer[buffer.length] = "<div><div id='eng";
				buffer[buffer.length] = this.kartenArray[i][7];
				buffer[buffer.length] = "' class='selectboxkaufen' style='background: white url(images/cbOpen.gif) center right no-repeat;' onclick='comboBox.openOptions(";
				buffer[buffer.length] = this.createOptions(i,5); 
				if(this.isWarenkorb){
					buffer[buffer.length] = ",this,\"change\","+this.name+",\"selectinnerdivbody\","+i+");'><div class='selectinnerdivbody'>";				
				} else {
					buffer[buffer.length] = ",this,\"\",\"\",\"selectinnerdivbody\");'><div class='selectinnerdivbody'>";				
				}
				if(this.isWarenkorb){
					buffer[buffer.length] = this.kartenArray[i][12];
				} else {
					if(this.kartenArray[i][5]=='0'){
						buffer[buffer.length] = "0";
					} else {
						buffer[buffer.length] = "1";
					}					
				}				
				buffer[buffer.length] = "</div></div></div>";				
				buffer[buffer.length] = "</td>";
				if(!this.isWarenkorb){	
					buffer[buffer.length] = "<td onmouseout='unsetTooltip();' class='image' align='right'><img onmouseover=\"this.style.cursor='pointer';\" onclick='";
					buffer[buffer.length] = this.name;	
					buffer[buffer.length] = ".addKarte(";					
					buffer[buffer.length] = i;
					buffer[buffer.length] = ",this,\"eng\");' src='images/warenkorb.gif'></td>";
				}
				if(!this.isWarenkorb){
					buffer[buffer.length] = "<td class='anzahl' align='right'>";	
					buffer[buffer.length] = this.kartenArray[i][11];
					buffer[buffer.length] = "</td>";	
				}
				buffer[buffer.length] = "<td class='kaufen' valign='top'>";							
				buffer[buffer.length] = "<div><div id='de";
				buffer[buffer.length] = this.kartenArray[i][7];
				buffer[buffer.length] = "' class='selectboxkaufen' style='background: white url(images/cbOpen.gif) center right no-repeat;' onclick='comboBox.openOptions(";
				buffer[buffer.length] = this.createOptions(i,11); 
				if(this.isWarenkorb){
					buffer[buffer.length] = ",this,\"change\","+this.name+",\"selectinnerdivbody\","+i+");'><div class='selectinnerdivbody'>";				
				} else {
					buffer[buffer.length] = ",this,\"\",\"\",\"selectinnerdivbody\");'><div class='selectinnerdivbody'>";				
				}
				if(this.isWarenkorb){
					buffer[buffer.length] = this.kartenArray[i][13];
				} else {	
					if(this.kartenArray[i][11]=='0'){
						buffer[buffer.length] = "0";
					} else {
						buffer[buffer.length] = "1";
					}						
				}				
				buffer[buffer.length] = "</div></div></div>";				
				buffer[buffer.length] = "</td>";
				
				if(this.isWarenkorb){
					buffer[buffer.length] = "<td class='preis' align='right'>";	
					buffer[buffer.length] = this.kartenArray[i][14];
					buffer[buffer.length] = "&euro;</td>";
				}
				if(!this.isWarenkorb){	
					buffer[buffer.length] = "<td onmouseout='unsetTooltip();' class='image' align='right'><img onmouseover=\"this.style.cursor='pointer';\" onclick='";
					buffer[buffer.length] = this.name;	
					buffer[buffer.length] = ".addKarte(";					
					buffer[buffer.length] = i;
					buffer[buffer.length] = ",this,\"deu\");' src='images/warenkorb.gif'></td></tr>";
				}
			}			
		}
		buffer[buffer.length] = "</tbody></table>";		
		var div = $('mainBody');		
		if(treffer){		
			div.innerHTML = buffer.join("");
		} else {
			var breite = $('headtable').offsetWidth-6;  
			if(this.isWarenkorb){
				div.innerHTML = "<table class='tablekarten tablekartenbody'><tbody><tr><td style='width: "+breite+"px;' height='50' valign='center' align='middle'>Der Warenkorb ist leer.</td></tr></tbody></table>";
	
			} else {
				div.innerHTML = "<table class='tablekarten tablekartenbody'><tbody><tr><td style='width: "+breite+"px;' height='50' valign='center' align='middle'>Es ist keine Karte vorhanden, die dieser Suche entspricht.</td></tr></tbody></table>";
			}
		}				
	},
	//ele: Element welches angeklickt wurde(Element); arrayID: Index im Array (int); sortMethod: 0 -> String, 1 -> Zahl
	sortKarten: function(ele,arrayID,sortMethod){
		var foundString = (ele.src).toString().indexOf('images/sortup.gif');
		$('sortKartenname').src = 'images/sort.gif';
		$('sortKartennameDe').src = 'images/sort.gif';
		if(this.withEdition){
			$('sortEdition').src = 'images/sort.gif';
		}
		$('sortRarity').src = 'images/sort.gif';
		$('sortZustand').src = 'images/sort.gif';
		$('sortFarbe').src = 'images/sort.gif';
		$('sortFoil').src = 'images/sort.gif';	
		$('sortPreis').src = 'images/sort.gif';
		if(foundString > 0){		
			ele.src = 'images/sortdown.gif';
			if(sortMethod == 0){
				this.kartenArray.sort(function(a,b){
					var vergleich = ((b)[arrayID]).localeCompare((a)[arrayID]);
					if(vergleich == 0){
						var vergleich2 = ((a)[0]).localeCompare((b)[0]);
						if(vergleich2 == 0){
							return ((a)[6]).localeCompare((b)[6]);
						}
						return vergleich2;
					}
					return vergleich;
				});
			} else {
				this.kartenArray.sort(function(a,b){
					var vergleich = (b)[arrayID] - (a)[arrayID];
					if(vergleich == 0){
						return ((a)[0]).localeCompare((b)[0]);
					}
					return vergleich;
				});
			}			
		} else {			
			ele.src = 'images/sortup.gif';
			if(sortMethod == 0){			
				this.kartenArray.sort(function(a,b){					
					var vergleich = ((a)[arrayID]).localeCompare((b)[arrayID]);
					if(vergleich == 0){
						var vergleich2 = ((a)[0]).localeCompare((b)[0]);
						if(vergleich2 == 0){
							return ((a)[6]).localeCompare((b)[6]);
						}
						return vergleich2;
					}
					return vergleich;
				});
			} else {
				this.kartenArray.sort(function(a,b){
					var vergleich = (a)[arrayID] - (b)[arrayID];
					if(vergleich == 0){
						return ((a)[0]).localeCompare((b)[0]);
					}
					return vergleich;
				});
			}
		}
		this.createBodyTable();
	},
	
	changeKarte: function(arrayId,element){
		var id = this.kartenArray[arrayId][7];
		var kartenname = this.kartenArray[arrayId][0];
		ideng = "eng"+id;
		idde = "de"+id;
		val = $(ideng).innerHTML.replace(/<.*?>/g,"");
		valDe = $(idde).innerHTML.replace(/<.*?>/g,"");
		gesval = parseInt(valDe)+parseInt(val);
		setTooltipChangeKarte(element,gesval,kartenname);	
		new Ajax.Request('php/changeKarte.php', 
						{
						method:'get',
						onSuccess: function(transport){
							$('preisWarenkorb').innerHTML = transport.responseText+'&euro;';							
							openWarenkorb();							
						},
						parameters: {id: id, anzahl: val, anzahlDe: valDe}
					  });	
	},
	addKarte: function(arrayId,element, sprache){	
		var id = this.kartenArray[arrayId][7];
		var gesval = 0;
		var val = 0;
		var valDe = 0;
		if(sprache == "eng"){
			kartenname = this.kartenArray[arrayId][0];
			ideng = "eng"+id;
			val = $(ideng).innerHTML.replace(/<.*?>/g,"");
			valDe = 0;
			gesval = parseInt(valDe)+parseInt(val);
			setTooltipKarteBestellen(element,gesval,kartenname);			
		} else {
			kartenname = this.kartenArray[arrayId][10];			
			idde = "de"+id;
			val = 0;
			valDe = $(idde).innerHTML.replace(/<.*?>/g,"");
			gesval = parseInt(valDe)+parseInt(val);
			setTooltipKarteBestellen(element,gesval,kartenname);			
		}		
		if(gesval > 0){
			new Ajax.Request('php/addKarte.php', 
							{
							method:'get',
							onSuccess: function(transport){
								$('preisWarenkorb').innerHTML = transport.responseText+'&euro;';						
							},
							parameters: {id: id, anzahl: val, anzahlDe: valDe}
						  });	
		}
	},
	setRarity: function(value){
		this.rarity	= value;	
	},
	createOptions: function(index, sprache){
		var num = parseInt(this.kartenArray[index][sprache]);
		if(num == 0){
			return "[\"0\"]";
		}
		var options = new Array();
		options[options.length] = "[";
		var isFirst = true;
		if(this.isWarenkorb){
			if(!isFirst){
				options[options.length] = ",";
			}
			isFirst = false;
			options[options.length] = "\"0\"";
			
		} 		
		for(i = 1; i <= num; ++i){
			if(!isFirst){
				options[options.length] = ",";
			}
			isFirst = false;
			options[options.length] = "\"";			
			options[options.length] = i;
			options[options.length] = "\"";
		}		
		options[options.length] = "]";
		return options.join("");
	}
};

