var pgn_split_pgn = function(){

  this.arrayPgn = new Array("");
  this.variantStart = new Array("");
  this.arrayText = new Array("");
  this.arrayKom = new Array("");
  this.samling = new Array("");
  this.oldVariant = new Array();
  this.notationArray = new Array;
  this.notationCounter =0;
  this.startPos = 0;
}

pgn_split_pgn.prototype.textElmCreate = function(txt)
{
	elm.textNode(this.udskiftSprog(" "),settings.notationsElmGame);
  this.span = elm.element("span",settings.notationsElmGame,"className='pgnText'");
  elm.textNode(txt,this.span);
} 
  
pgn_split_pgn.prototype.nrElmCreate = function(txt)
{
	elm.textNode(this.udskiftSprog(" "),settings.notationsElmGame);
	if (this.variant==0) this.className="hovedvariant";
  else this.className="varianter";
  this.span = elm.element("span",settings.notationsElmGame,"className='"+this.className+"'");
  elm.textNode(txt,this.span);
}

pgn_split_pgn.prototype.signElmCreate = function(txt)
{
  this.signNr = parseInt(txt.substr(1));
  if (gameNotation.sign[this.signNr]) txt = gameNotation.sign[this.signNr];
  else if (gameNotation.notation[this.signNr]) txt = " "+gameNotation.notation[this.signNr];
  else txt="";
  elm.textNode(txt,settings.notationsElmGame);
	elm.textNode(this.udskiftSprog(" "),settings.notationsElmGame);
}

pgn_split_pgn.prototype.udskiftSprog=function(data)
{
	data=data.replace("R",settings.ls[0]);
	data=data.replace("N",settings.ls[1]);
	data=data.replace("B",settings.ls[2]);
	data=data.replace("Q",settings.ls[3]);
	data=data.replace("K",settings.ls[4]);
	return data;
}
pgn_split_pgn.prototype.moveElmCreate = function(txt)
{
  elm.textNode(this.udskiftSprog(" "),settings.notationsElmGame);
  this.a = elm.element("a",settings.notationsElmGame,"id='mn"+(this.moveNr+1)+"_"+this.variant+"'","href='JavaScript: moveToPos("+this.variant+","+(this.moveNr+1)+")'","className='"+this.className+"'");
  elm.textNode(this.udskiftSprog(txt),this.a);
}

pgn_split_pgn.prototype.startElmCreate = function()
{
  this.startElm = elm.element("a",settings.notationsElmGame,"id='mn"+settings.realMoveNumber[settings.gameNumber]+"_"+0+"'","href='JavaScript: moveToPos("+0+","+settings.realMoveNumber[settings.gameNumber]+")'","class='"+this.className+"'","className='"+this.className+"'");
	elm.element("img",this.startElm,"title='Start position'","src='"+settings.imageMap+settings.controlMap+"start_braet.gif'","style='border: none;'");
  elm.textNode("",this.startElm);
}

pgn_split_pgn.prototype.init_pgn = function()
{
  this.startElmCreate();
  this.moveNr = settings.realMoveNumber[settings.gameNumber];
  this.variant=0;
  if (!this.arrayPgn[this.variant]) this.arrayPgn[this.variant] = new Array();
	if (!this.arrayText[this.variant]) this.arrayText[this.variant] = new Array();
	if (!this.arrayKom[this.variant]) this.arrayKom[this.variant] = new Array();
  this.subVariant=0;
  this.subVariantNr=0;
  this.gemTekst="";
  this.startTraek=-1;
  this.kommentar="";
  this.pgnVar=settings.pgn[settings.gameNumber].split(".").join(". ").split(". . . ").join("... ").split("(").join("( ").split(")").join(" )").split("{").join("{ ").split("}").join(" }").split("  ").join(" ").split(" ");

  this.pgnTekstCouter++;

  for (n=0; n<this.pgnVar.length; n++)
  {
 // ----------- tekst område ----------
		if (this.pgnVar[n]=="}") {
    	this.tekst_markor = false;
      this.arrayText[this.variant][this.moveNr]=this.gemTekst;
      this.textElmCreate(this.gemTekst)
      this.gemTekst="";
    }
    if (this.tekst_markor)
    {
      this.gemTekst+=this.pgnVar[n]+" ";
    }
		else
		{
	    if (this.pgnVar[n]=="{") this.tekst_markor = true;
// ----------- tekst område ----------

// ----------- træk nr. område ----------
   if (this.pgnVar[n].match(/^\d/)) {
        this.firstText=false;
        if (this.pgnVar[n].match(/\.\.\./)) this.hvid=false;
        else this.hvid=true;
        this.moveNr=parseInt(this.pgnVar[n])*2-2;
        this.nrElmCreate(this.pgnVar[n]);

     }
// ----------- træk nr. område ----------


// -----------  kommentar (skak tegn) område ----------
		if (this.pgnVar[n].charAt(0)=="$")
	 	{
    	(this.arrayKom[this.variant][this.moveNr])?this.arrayKom[this.variant][this.moveNr]+=this.pgnVar[n]:this.arrayKom[this.variant][this.moveNr]=this.pgnVar[n];
    	this.signElmCreate(this.pgnVar[n])
		}
// ----------- kommentar område ----------

// ----------- træk område ----------
		if (this.pgnVar[n].charAt(0).match(/^[a-hKQNBROo]/))
   	{
			if (!this.hvid) this.moveNr++;
      this.arrayPgn[this.variant][this.moveNr]=this.pgnVar[n];
      this.moveElmCreate(this.pgnVar[n]);
      if (this.hvid) this.hvid=false;
    }
// ----------- træk område ----------

// ----------- variant område ----------

    if (this.pgnVar[n]=="(")
    {
    		this.textElmCreate("(")
 		    this.subVariantNr++;
        this.samling[this.subVariantNr]=this.variant;
				this.oldVariant.push(this.variant);
				this.oldVariantValue=this.variant
				this.variant=this.subVariantNr;

				if (!this.arrayPgn[this.variant]) this.arrayPgn[this.variant] = new Array(); 
				this.variantStart[this.variant] = this.oldVariantValue;
				if (!this.arrayText[this.variant]) this.arrayText[this.variant] = new Array();
				if (!this.arrayKom[this.variant]) this.arrayKom[this.variant] = new Array();
    }

    if (this.pgnVar[n]==")" )	{
    		this.textElmCreate(")");
    		this.variant = this.oldVariant.pop();
			}

// ----------- variant område ----------
	  
		}
	}
	settings.pgnArrayGame[settings.gameNumber] = this.arrayPgn;
	settings.variantStart[settings.gameNumber] = this.variantStart;
	settings.pgnArrayText[settings.gameNumber] = this.arrayText;
  settings.pgnArrayComment[settings.gameNumber] = this.arrayKom;
}  
