var aNrs = Array();
var joinedANrs = Array();

var vorb = (visitenkarten||buecher);

if(buecher){
	var paper = Array();
}

var sum=true;

var kgv;
var mindest;

$(function(){
	var prodID=0;
	if(visitenkarten){
		var as=$("#content table.products tr.table_even:first .table_border_right:last a");
		if(as.length){
			var nrs=as.attr('href').split("?")[1].split("&")[0].split("=")[1];
			aNrs[prodID]=Array(Array("netto",nrs),Array("brutto",nrs));
			joinedANrs[prodID]=nrs.split(",")[0];
		}
	}else{
		$.each($("#content table.products"),function(){
			aNrs[prodID]=Array();
			var prodANrs=Array();
			var anr;
			
			var trcount=0;
			
			$.each($(this).find("tr"),function(){
				var acount=0;
				$.each($(this).find(".table_border_right a"),function(){
					anr=$(this).attr('href').split("?")[1].split("&")[0].split("=")[1];
					if(trcount==0){
						aNrs[prodID].push( Array("netto",anr),Array("brutto",anr));
						prodANrs.push(anr);
					}else{
						if(aNrs[prodID].length>0 && aNrs[prodID][acount][1].indexOf(anr)==-1 && aNrs[prodID][acount+1][1].indexOf(anr)==-1){
							aNrs[prodID][acount][1]+=","+anr;
							aNrs[prodID][acount+1][1]+=","+anr;
							sum=false;
							prodANrs.push(anr);
						}
					}
					acount+=2;
				});
				if($(this).attr('class').indexOf('head')==-1){
					trcount++;
				}
			});
			
			if(buecher){
				paper[prodID]=Array();
				paper[prodID].push();
				$.each($(this).find(".table_head:first th"),function(){
					var h=$(this).html();
					if(h&&h!="&nbsp;"){
						paper[prodID].push($(this).html());	
					}
				});
			}
			
			joinedANrs[prodID]=(vorb?anr.split(",")[0]:prodANrs.join("|"));
			prodID++;
		});
	}
	
	var prodid=0;
	var l=vorb?":last":"";	
	$.each($(".products"+l),function(){
		var $this = $(this);
		if(!vorb){
			$this.attr('id','products'+prodid);
		}
		var colCnt = visitenkarten?4:$this.find("tr.table_even:first td").length;
		
		if(aNrs[prodid] && aNrs[prodid].length){
			$.ajax({
				async: false,
				dataType: "text",
				url: relRootPath+"data/bestellung/getmindestanddivisor.php?anr="+joinedANrs[prodid],
				success: function(inhalt){
					if (mindest == null && kgv==null){
						mindest = parseInt(trim(inhalt).split('|')[0]);
						kgv = parseInt(trim(inhalt).split('|')[1]);
					}else{
						mindest2 = parseInt(trim(inhalt).split('|')[0]);
						kgv2 = parseInt(trim(inhalt).split('|')[1]);
					}	
					
				}
			});
			
			var html='';
			if(vorb){
				html+='<table cellspacing="0" id="products0" cellpadding="0" class="products"><tbody>';
			}
			
//			html+='<tr class="table_head"><th align="left" colspan="'+colCnt+'"></th></tr>';

			if(vorb){ // namen
				var text = visitenkarten?"Namen":"Blatt";
				html+='<tr class="table_head"><th align="left" colspan="'+colCnt+'"><label for="txtinput2'+prodid+'" class="prodlabel">Anzahl '+text+':</label> <input type="text" onkeyup="nurZahlen(this);" id="txtinput2'+prodid+'" class="txtinput"></th></tr>';
			}
			// Fuer Tabellen mit 2 freien Stückzahleingaben
			if(window.mindest2 == undefined){
			  html+='<tr class="table_subhead"><th align="left" colspan="'+colCnt+'"><span class="mind">Untergrenze f&uuml;r freie Eingabe: '+mindest+' | St&uuml;ckelung: '+kgv+'</span><br/>\
				<label for="txtinput'+prodid+'" class="prodlabel">freie St&uuml;ckzahleingabe:</label> <input type="text" onkeyup="nurZahlen(this);" id="txtinput'+prodid+'" class="txtinput">\
				<input type="button" value="Berechnen" onclick="chgZA(\'txtinput\','+prodid+',1);" class="butinput"></th></tr>';
			}else {
			  html+='<tr class="table_subhead"><th align="left" colspan="'+colCnt+'"><span class="mind">Untergrenze f&uuml;r freie Eingabe: '+mindest2+' | St&uuml;ckelung: '+kgv2+'</span><br/>\
				<label for="txtinput'+prodid+'" class="prodlabel">freie St&uuml;ckzahleingabe:</label> <input type="text" onkeyup="nurZahlen(this);" id="txtinput'+prodid+'" class="txtinput">\
				<input type="button" value="Berechnen" onclick="chgZA(\'txtinput\','+prodid+',2);" class="butinput"></th></tr>';
			}
			
			html+='<tr class="error"><td height="18" colspan="'+colCnt+'"><span></span> <img class="loader" src="'+relRootPath+'image/loader.gif" width="16" height="11" alt="loader" /></td></tr>\
			<tr class="result table_even">\
			<td class="table_border_right" width="'+100/colCnt+'%" id="stueckzahl'+prodid+'"></td>';
			for(var i=0;i<aNrs[prodid].length;i++){
				var act=aNrs[prodid][i];
				html+='<td width="'+100/colCnt+'%" class="preise '+act[0]+act[1].replace(/,/g,"")+((i+1)%2==0?' table_border_right':'')+'"></td>';
			}
	
			html+='<td width="'+100/colCnt+'%" class="indLZ"></td>\
			</tr>\
			<tr class="table_odd"><td class="ende" colspan="'+colCnt+'"></td></tr>';
			

			if(mindest==0 || isNaN(kgv)){}
			
			if(vorb){
				html+='</tbody></table>';
				$this.after(html);
			}else{
				$this.append(html);
			}
			prodid++;
		
		}
	});
});

function getStaerke(papier){
	switch(papier){
		case "90g Papier":
			return 0.11;
		case "100g Papier":
			return 0.123;
		case "90g Munken":
			return 0.105;
		case "130g KD":
			return 0.115;
		case "150g KD":
			return 0.135;
	}	
}

function blattFehler(papier,blattzahl){
	var mm=getStaerke(papier);
	var erg = blattzahl * mm;
	erg = parseInt ( erg * 100 );
	erg = parseFloat  ( erg / 100 );
	if ( erg + 1 < 4) {
		return "zu d&uuml;nn";
	} else if ( erg + 1 > 50 ) {
		return "zu dick";
	} else {
		return false;
	}
}

var pool,actErrTR,actResultTR,actLoader,actIndLZ;
function chgZA (inputid,prodid,casestk) {
	inputid=inputid+prodid;
	actErrTR = $("#products"+prodid+" .error");
	actResultTR = actErrTR.next();
	actLoader = actErrTR.find("img");
	actIndLZ = actResultTR.find("td:last");

	showMsg("Preis wird berechnet");
	loader("show");
	var anzahl = $("#"+inputid)[0].value;
	if(vorb){
		var anzahl2 = $("#txtinput2"+prodid)[0].value;
		//alert(namen);
	}
	
	//checken welcher Butten gedrueckt wurde falls 2 freie eingaben vorhanden
	if (casestk == 1){
		mindest_stk = mindest;
		kgv_stk = kgv;
	}else if(casestk == 2){
		mindest_stk = mindest2;
		kgv_stk = kgv2;
	}
  
  //maximale Stueckzahl:
  if ( ( anzahl ) > 10000000 ) {
			showMsg('<span class="red">Auflage zu hoch</span>');
			loader("hide");
	} else {
		if ( ( anzahl2 ) > 300 ) {
			
			showMsg('<span class="red">Buch wird zu dick - max. 300 Seiten</span>');
			loader("hide");
			
		} else {
  
		
	if(anzahl2>0||!vorb){
		actResultTR.find("td").html("&nbsp;");
		if ( isNumeric ( anzahl ) ) {
			if ( parseInt(anzahl) >= mindest_stk ) {
				if (kgv_stk > 0 && !isNaN(kgv_stk)){
					if  (parseInt(anzahl) % kgv_stk == 0 )  {
						var query=new Array('"indLZ":{"method":"getlieferzeit","anr":["'+joinedANrs[prodid].split('|').join('","')+'"],"stk":'+anzahl+'}');
						$("#stueckzahl"+prodid).html(number_format(anzahl, 0, "", "."));
						//pool=new Array(new Array(relRootPath+"data/bestellung/getlieferzeit.php?anr="+joinedANrs[prodid]+"&stk="+anzahl,"indLZ" ));
						for(var i=0;i<aNrs[prodid].length;i++){
							var stk;
							
							if(visitenkarten) stk=anzahl2*anzahl+","+(anzahl2-1);
							else if(buecher) stk=anzahl+","+anzahl*Math.ceil(anzahl2)+","+anzahl;
							else stk=anzahl;
							if(buecher){
								var actpaper=paper[prodid][Math.floor(i/2)];
								var err=blattFehler(actpaper,Math.ceil(anzahl2/2));
							}else var err=false;	
							if(!err){
								//pool.push( new Array(relRootPath+"data/bestellung/getprice.php?"+(sum?"sum=1&":"")+"anr="+aNrs[prodid][i][1]+"&stk="+stk+"&type="+aNrs[prodid][i][0]+"&linked=1&value=0",aNrs[prodid][i][0]+aNrs[prodid][i][1].replace(/,/g,'')) );
								query.push('"'+aNrs[prodid][i][0]+aNrs[prodid][i][1].replace(/,/g,'')+'":{"method":"getprice",'+(sum?'"sum":1':'')+',"anr":["'+aNrs[prodid][i][1].split(',').join('","')+'"],"stk":['+stk+'],"type":"'+aNrs[prodid][i][0]+'","linked":1,"value":0}');
							}else{
								//pool.push(new Array("error",err,"f&uuml;r "+actpaper,aNrs[prodid][i][0]+aNrs[prodid][i][1].replace(/,/g,''),aNrs[prodid][i+1][0]+aNrs[prodid][i+1][1].replace(/,/g,'')));
								actResultTR.find("."+aNrs[prodid][i][0]+aNrs[prodid][i][1].replace(/,/g,'')).html('<span class="red">'+err+'&nbsp;</span>');
								actResultTR.find("."+aNrs[prodid][i+1][0]+aNrs[prodid][i+1][1].replace(/,/g,'')).html('<span class="red">'+"f&uuml;r "+actpaper+'&nbsp;</span>');								
								i++;
							}
						}
						if(query.length>1){
							//startAjax(pool);
							
							
							var ajquery = '{'+query.join(',')+'}';							
							$.ajax({
								async: true,
								dataType: "text",
								url: relRootPath+"data/bestellung/getprice_neu.php",
								data: escape(ajquery),
								success: function(inhalt){
									//inhalt=inhalt.split("|"); id=inhalt[0]; inhalt=inhalt[1];
									//actResultTR.find("."+id).html((trim(inhalt)!="")?trim(inhalt).replace(/href="/,'href="'+relRootPath):"&nbsp;");
									var parts = inhalt.split("#");
									for(var i=0;i<parts.length;i++){
										inhalt = parts[i];
										inhalt=inhalt.split("|"); id=inhalt[0]; inhalt=inhalt[1];
										actResultTR.find("."+id).html((trim(inhalt)!="")?trim(inhalt).replace(/href="/,'href="'+relRootPath):"&nbsp;");										
									}												
									resetMsg();
									loader("hide");
								}
							});
							
							
							
						}else{
							loader("hide");
							resetMsg();
						}
					} else {
						showMsg('<span class="red">W&auml;hlen Sie ein Vielfaches von ' + kgv_stk + '</span>');
						loader("hide");
					}
				} else {
					showMsg('<span class="red">Interner Fehler! St&uuml;ckelung konnte nicht gefunden werden.</span>');
					loader("hide");				
				}
			} else {
				showMsg('<span class="red">Geben Sie eine Untergrenze für freie Eingabe von ' + mindest_stk + ' St&uuml;ck ein!</span>');
				loader("hide");
			}
		} else {
			showMsg('<span class="red">Bitte geben Sie nur Zahlen ein</span>');
			loader("hide");
		}
	} else {
		showMsg('<span class="red">Anzahl der Namen muss mindestens 1 betragen</span>');
		loader("hide");
	}
  
  //maximale Stueckzahl Ende else:
  } }  
  
}

var finished=0;
function startAjax(){
	finished=0;
	for(var i=0;i<pool.length;i++){
		if(pool[i][0]=="error"){
			/*actResultTR.find("."+pool[i][3]).html('<span class="red">'+pool[i][1]+'&nbsp;</span>');
			actResultTR.find("."+pool[i][4]).html('<span class="red">'+pool[i][2]+'&nbsp;</span>');
			finished++;
			if(finished==pool.length){
				loader("hide");
				resetMsg();
			}*/
		}else{
			$.ajax({
				async: true,dataType: "text",url: pool[i][0],data: "id="+pool[i][1],
				success: function(inhalt){
					inhalt=inhalt.split("|"); id=inhalt[0]; inhalt=inhalt[1];
					actResultTR.find("."+id).html((trim(inhalt)!="")?trim(inhalt).replace(/href="/,'href="'+relRootPath):"&nbsp;");
					if(++finished==pool.length){
						resetMsg();
						loader("hide");
					}
				}
			});
		}
	}
}
function number_format (number, decimals, dec_point, thousands_sep) {
	var exponent = "";
	var numberstr = number.toString ();
	var eindex = numberstr.indexOf ("e");
	if (eindex > -1) {
		exponent = numberstr.substring (eindex);
		number = parseFloat (numberstr.substring (0, eindex));
	}
	if (decimals != null) {
		var temp = Math.pow (10, decimals);
		number = Math.round (number * temp) / temp;
	}
	var sign = number < 0 ? "-" : "";
	var integer = (number > 0 ? Math.floor (number) : Math.abs (Math.ceil (number))).toString ();
	var fractional = number.toString ().substring (integer.length + sign.length);
	dec_point = dec_point != null ? dec_point : ".";
	fractional = decimals != null && decimals > 0 || fractional.length > 1 ? (dec_point + fractional.substring (1)) : "";
	if (decimals != null && decimals > 0) for (i = fractional.length - 1, z = decimals; i < z; ++i) fractional += "0";
	thousands_sep = (thousands_sep != dec_point || fractional.length == 0) ? thousands_sep : null;
	if (thousands_sep != null && thousands_sep != "") for (i = integer.length - 3; i > 0; i -= 3) integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
	return sign + integer + fractional + exponent;
}


function showMsg(txt){
	actErrTR.hide().show().find("span").html(txt);
	actResultTR.hide();
}
function resetMsg(){
	actErrTR.hide().find("span").empty();
	if($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="7.0")){ actResultTR.show(); }
	else{ actResultTR.fadeIn(); }
}
function loader(what){
	if(what=="show"){
		actLoader.show();			
	}else if(what=="hide"){
		actLoader.hide();
	}			
}
