// JavaScript Document

function sprintf() {
 if( sprintf.arguments.length < 2 ) {
  return;
 }
 
 var data = sprintf.arguments[ 0 ];
 
 for( var k=1; k<sprintf.arguments.length; ++k ) {
 
  switch( typeof( sprintf.arguments[ k ] ) )
  {
   case 'string':
    data = data.replace( /%s/, sprintf.arguments[ k ] );
    break;
   case 'number':
    data = data.replace( /%d/, sprintf.arguments[ k ] );
    break;
   case 'boolean':
    data = data.replace( /%b/, sprintf.arguments[ k ] ? 'true' : 'false' );
    break;
   default:
    /// function | object | undefined
    break;
  }
 }
 return( data );
}


function writeCookie(Bezeichner,Wert,Dauer){
      jetzt=new Date();
      Auszeit=new Date(jetzt.getTime()+Dauer*86400000);
      document.cookie=Bezeichner+"="+Wert+";expires="+Auszeit.toGMTString()+";";
  }
   


function readCookie(n){
 a = document.cookie;
 res = '';
 while(a != '')
 {
  cookiename = a.substring(0,a.search('='));
  cookiewert = a.substring(a.search('=')+1,a.search(';'));
  if(cookiewert == '')
  {cookiewert = a.substring(a.search('=')+1,a.length);}

  if(n == cookiename){res = cookiewert;}

  i = a.search(';')+1;
  if(i == 0){i = a.length}
  a = a.substring(i,a.length);
 }
 return(res)
}

function append(erg){
	if(my_div = document.getElementById("timelineerg")){
		my_div.innerHTML = erg;
	}else{	
	var Ausrichtung = document.createAttribute("align");
	Ausrichtung.nodeValue = "center";
	var ID = document.createAttribute("id");
	ID.nodeValue = "timelineerg";
	newDiv = document.createElement("div");
    newDiv.setAttributeNode(Ausrichtung);
	newDiv.setAttributeNode(ID);
	newDiv.innerHTML = erg;

    my_div = document.getElementById("timeline");
	my_div.appendChild(newDiv);
	}
}

function changestatus(astatus){
	my_divs = document.getElementById("cstatus");
    my_divs.lastChild.replaceData(0,1000,astatus);
}


function pcalculate(rate,p2,p3,p5){
	
	
	if(rate.value > 1500 ) {
		p2.value = Math.floor(0.76*(1511.26/(1+1639.28*Math.pow(2.71828, (-0.00412*rate.value)))));
		p3.value = Math.floor(0.88*(1511.26/(1+1639.28*Math.pow(2.71828, (-0.00412*rate.value)))));
		p5.value = Math.floor(1511.26/(1+1639.28*Math.pow(2.71828, (-0.00412*rate.value))));
	}else{
		p2.value = 261;  //Math.round((0.22*rate.value+14)*0.76);
		p3.value = 303; //Math.round((0.22*rate.value+14)*0.88);
		p5.value = 344; //Math.round(0.22*rate.value+14);
	}
	//changestatus('Calculated points for an rating of '+rate.value+'.');
	changestatus(sprintf(T_RCALCULATED,rate.value));
}

function rcalculate(team,points,rate){
	changestatus('bl');	
	if(team == 2){
		if(points.value<262){
			rate.value = Math.floor(((points.value / 0.76) - 14) / 0.22) ;
			
		}else{
			//rate.value = Math.ceil(Math.log((1511.26/(points.value/0.76)-1)/1639.28)/-0.00412);
			rate.value = Math.ceil(25000*Math.log(points.value)/103 - 25000*Math.log((75563*0.76 - 50*points.value)/81964)/103);

		}
		//changestatus('Calculated rating needed for '+points.value+' points in a 2vs2 team.');
		changestatus(sprintf(T_RNCALCULATED,points.value,T_V2));
	}else if(team == 3){
		if(points.value<303){
			rate.value = Math.floor(((points.value / 0.88) - 14) / 0.22);
		}else{
			// rate.value = Math.ceil(Math.log((1511.26/(points.value/0.88)-1)/1639.28)/-0.00412);
			rate.value = Math.ceil(25000*Math.log(points.value)/103 - 25000*Math.log((75563*0.88 - 50*points.value)/81964)/103);

	
		}
		changestatus(sprintf(T_RNCALCULATED,points.value,T_V3));
	}else{
		if(points.value<345){
			rate.value = Math.floor(((points.value) - 14) / 0.22 );
		}else{
			rate.value = Math.ceil(25000*Math.log(points.value)/103 - 25000*Math.log((75563 - 50*points.value)/81964)/103);

		}
		changestatus(sprintf(T_RNCALCULATED,points.value,T_V5));
	}
}

function tcalculate(points,wpoints,weeks){
    npoints = wpoints.value-points.value;
	ausgabe = '<table><tr><td width="200px"><b>Time</b></td><td width="200px"><b>'+T_V2+'</b></td><td width="200px"><b>'+T_V3+'</b></td><td width="200px"><b>'+T_V5+'</b></td>';
	for (var i = 1; i <= weeks.value; i++){
		nwpoints = Math.round(npoints / i);
		if(i % 2 == 1){
			ausgabe += '<tr bgcolor="#353535"><td><b>'+i+T_WEEKS+'</b></td>';
		}else{
			ausgabe += '<tr bgcolor="#202020"><td><b>'+i+T_WEEKS+'</b></td>';
		}
		if(nwpoints<262){
			arate2 = Math.floor(((nwpoints / 0.76) - 14) / 0.22);	
		}else{
			arate2 =  Math.ceil(25000*Math.log(nwpoints)/103 - 25000*Math.log((75563*0.76 - 50*nwpoints)/81964)/103);
		}
		if(!isNaN(arate2)){
			ausgabe += '<td>'+arate2+'</td>';		  
		}else{
			ausgabe += '<td>'+T_NA+'</td>';
		}
		if(nwpoints<303){
			arate3 = Math.floor(((nwpoints / 0.88) - 14) / 0.22);	
		}else{
			arate3 = Math.ceil(25000*Math.log(nwpoints)/103 - 25000*Math.log((75563*0.88 - 50*nwpoints)/81964)/103);
		}
		if(!isNaN(arate3)){
			ausgabe += '<td>'+arate3+'</td>';		  
		}else{
			ausgabe += '<td>'+T_NA+'</td>';
		}
		if(nwpoints<345){
			arate5 = Math.floor(((nwpoints) - 14) / 0.22 );	
		}else{
			arate5 =  Math.ceil(25000*Math.log(nwpoints)/103 - 25000*Math.log((75563 - 50*nwpoints)/81964)/103);
		}
		if(!isNaN(arate5)){
			ausgabe += '<td>'+arate5+'</td></tr>';		  
		}else{
			ausgabe += '<td>'+T_NA+'</td></tr>';
		}
	
	}
	ausgabe += '</table>';
	append(ausgabe);
	changestatus(sprintf(T_AVGRATING,npoints,weeks.value));


}

function avcalc(points,wpoints,avrate){
	nwpoints = wpoints.value-points.value;
	if(avrate.value > 1500 ) {
		wp2 = Math.floor(0.76*(1511.26/(1+1639.28*Math.pow(2.71828, (-0.00412*avrate.value)))));
		wp3 = Math.floor(0.88*(1511.26/(1+1639.28*Math.pow(2.71828, (-0.00412*avrate.value)))));
		wp5 = Math.floor(1511.26/(1+1639.28*Math.pow(2.71828, (-0.00412*avrate.value))));
	}else{
		wp2 = 261;//Math.round((0.22*avrate.value+14)*0.76);
		wp3 = 303;//Math.round((0.22*avrate.value+14)*0.88);
		wp5 = 344;//Math.round(0.22*avrate.value+14);
	}
	
	wp2av = Math.ceil(nwpoints/wp2);
    wp3av = Math.ceil(nwpoints/wp3);
	wp5av = Math.ceil(nwpoints/wp5);
	ausgabe = '<table><tr><td  width="200px">&nbsp;</td><td  width="200px"><b>'+T_V2+'</b></td><td  width="200px"><b>'+T_V3+'</b></td><td  width="200px"><b>'+T_V5+'</b></td></tr><tr><td><b>'+T_TIMENEED2+'</b></td><td>';
	ausgabe+= wp2av+' '+T_WEEKS+'</td><td>'+wp3av+' '+T_WEEKS+'</td><td>'+wp5av+' '+T_WEEKS+'</td></tr></table>';
	append(ausgabe);
	
	changestatus(sprintf(T_TIMENEED,nwpoints,avrate.value));
}

function clearhelp(){
	my_divh = document.getElementById("helpbox");
	my_hlink = document.getElementById("helplink");
	my_divh.innerHTML = '';
	my_hlink.innerHTML = T_SHOWHELP;	
}
clearhelp();
function help(cwrite){
	
	helptext = T_HELPTEXT;
	
	

	my_divh = document.getElementById("helpbox");
	my_hlink = document.getElementById("helplink");
	if(my_divh.innerHTML == ''){
		my_divh.innerHTML = helptext;
		my_hlink.innerHTML = T_HIDEHELP;
		writeCookie('showhelp','on',365);
	}else{
		my_divh.innerHTML = '';
		my_hlink.innerHTML = T_SHOWHELP;
		writeCookie('showhelp','off',365);
	}
}
//cookiewert = readCookie();
if(document.cookie)
 {
  showhelp = readCookie('showhelp');
  if(showhelp == 'on')
  {
   help();
  }
 }
 
