﻿var bEvents=true;
var oOwnerships=null;
window.onload=function(){
	bEvents=false;
	installEvents();
	var dToday=new Date();
	oOwnerships=new Ownerships();
	
    oOwnerships.show();
    addRow(0);
 	bEvents=true;
}
function clearResults(){
    if (!bEvents) return;
    var oTab=$("tabData");
    var nRow;
    for (nRow=0; nRow<=oTab.rows.length-2; nRow++){
        $("txtpValue" + nRow.toString()).value="";
    }
}
function cboeOwn_change(){
    var cbo=this;
    var nRow=cbo.nRow;
    clearResults();
    ShowRowTxt(nRow);
}
function ShowRowTxt(nRow){
    var sRow=nRow.toString();
    var cbo=$("cboeOwn"+sRow);
    switch (parseInt(cbo.value)){
    case enOwn.Full:
        $("txtnAgeOwner"+sRow).style.visibility="hidden";
        $("txtnYearsDur"+sRow).style.visibility="hidden";
        break;
    case enOwn.Naked:
        $("txtnAgeOwner"+sRow).style.visibility="hidden";
        $("txtnYearsDur"+sRow).style.visibility="hidden";
        break;
    case enOwn.UsufructLife:
        $("txtnAgeOwner"+sRow).style.visibility="visible";
        $("txtnYearsDur"+sRow).style.visibility="hidden";
        break;
    case enOwn.UsufructFixed:
        $("txtnAgeOwner"+sRow).style.visibility="hidden";
        $("txtnYearsDur"+sRow).style.visibility="visible";
        break;
    }    
}
function addRow(nRow){
    var sRow=nRow.toString();
    var oBtn=$("btnRow"+nRow.toString());
    //debugger;
    if (nRow==0){
        oBtn.style.display="none";
    } else {
        oBtn.value="-";
        oBtn.onclick=function(){removeRow(nRow-1);}
        $("btnRow"+(nRow-1).toString()).style.display="none";
    }
    var oTab=$("tabData");
    var oRow, oCell, oCbo, oTxt;
    //oRow=oTab.childNodes[oTab.childNodes.length-1];
    oRow=oTab.rows[oTab.rows.length-1];
    var nCol=1;
    //oRow.childNodes[nCol].innerHTML="";
    oRow.cells[nCol].innerHTML="";
    //oCell=oRow.childNodes[nCol++];
    oCell=oRow.cells[nCol++];
    //oCell=DOM.addCell(oRow,"");
    oCbo=cbo$("cboeOwn"+sRow,enOwnDsc);
    oCbo.nRow=nRow;
    oCbo.onchange=cboeOwn_change;
    oCell.appendChild(oCbo);

    oInp=c$("input");
    oInp.id="txtpOwn"+sRow;
    oInp.style.textAlign="right";
    oInp.style.width="3em";
    oInp.value="100";
    oInp.onpropertychange=clearResults;
    oInp.change=clearResults;
    //oRow.childNodes[nCol].innerHTML="";
    //oRow.childNodes[nCol++].appendChild(oInp);
    oRow.cells[nCol].innerHTML="";
    oRow.cells[nCol++].appendChild(oInp);

    //oRow.childNodes[nCol++].innerHTML="/";
    oRow.cells[nCol++].innerHTML="/";

    oInp=c$("input");
    oInp.id="txtpOwnDen"+sRow;
    oInp.style.textAlign="right";
    oInp.style.width="3em";
    oInp.value="100";
    oInp.onpropertychange=clearResults;
    //oRow.childNodes[nCol].innerHTML="";
    oRow.cells[nCol].innerHTML="";
    //oRow.childNodes[nCol++].appendChild(oInp);
    oRow.cells[nCol++].appendChild(oInp);

    oInp=c$("input");
    oInp.id="txtnAgeOwner"+sRow;
    oInp.style.textAlign="right";
    oInp.style.width="5em";
    oInp.onpropertychange=clearResults;
    //oRow.childNodes[nCol].innerHTML="";
    oRow.cells[nCol].innerHTML="";
    oRow.cells[nCol++].appendChild(oInp);

    oInp=c$("input");
    oInp.id="txtnYearsDur"+sRow;
    oInp.style.textAlign="right";
    oInp.style.width="5em";
    oInp.onpropertychange=clearResults;
    oRow.cells[nCol].innerHTML="";
    oRow.cells[nCol++].appendChild(oInp);

    oInp=c$("input");
    oInp.id="txtpValue"+sRow;
    oInp.readOnly=true;
    oInp.style.backgroundColor="#ddd";
    oInp.style.textAlign="right";
    oInp.style.width="12em";
    oRow.cells[nCol].innerHTML="";
    oRow.cells[nCol++].appendChild(oInp);
    
    ShowRowTxt(nRow);
    if ((nRow % 2)==0) oRow.className="altRow";

    nRow++;
    sRow=nRow.toString();
    oRow=DOM.addRow(oTab);

    oCell=DOM.addCell(oRow,"");
    var oInp = c$("input","button");
    oInp.id="btnRow"+sRow;
    oInp.value="+";
    oInp.style.width="2em";
    oInp.onclick=function(){addRow(nRow);}
    oCell.appendChild(oInp)
    
    oCell=DOM.addCell(oRow,"");
    oCell=DOM.addCell(oRow,"");
    oCell=DOM.addCell(oRow,"");
    oCell=DOM.addCell(oRow,"");
    oCell=DOM.addCell(oRow,"");
    oCell=DOM.addCell(oRow,"");
    oCell=DOM.addCell(oRow,"");
    
}
function removeRow(nRow){
    var oTab=$("tabData");
    var oRow, oCell, oCbo, oTxt, oBtn;
    //oRow=oTab.childNodes[nRow];
    oRow=oTab.rows[nRow];
    oTab.removeChild(oRow);

    oBtn=$("btnRow"+(nRow+1).toString())
    oBtn.id="btnRow"+nRow.toString();
    oBtn.onclick=function(){addRow(nRow);}
    if (nRow>1){
        oBtn=$("btnRow"+(nRow-1).toString())
        oBtn.style.display="inline";
    }
}
function installEvents(){
	$("btnSend").onclick=btnSend_onclick;
	window.document.body.onkeypress=body_keypress;
}
function btnRow_onclick(nRow){
    addRow(nRow);
}
function body_keypress(evt){
   evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode == 13 || charCode == 3) {
		btnSend_onclick();
        return false;
    }
    return true;
}
function btnSend_onclick(){
	var sAction="calc";
    oOwnerships.upd();
	if (oOwnerships.check()){
	    if (pkario.inProduction()) pageTracker._trackPageview('/CALC/btnOwnerships');	
	    oJd.send(cbf, "sAction="+sAction+"&sVals="+u$(oOwnerships.toString()));
	}
}
function cbf(oResult){
	if((!oResult) || (oResult.status && oResult.status.code != "200")){
		alert("error");
	} else {
	    /* TODO:
		oAbs.nAbsWrkDays=oResult.nAbsWrkDays;
		oAbs.nAbsMaxInYear=oResult.nAbsMaxInYear;
		oAbs.cAbsEpidoma=oResult.cAbsEpidoma;
		oAbs.cAbsPay=oResult.cAbsPay;
		*/
		var oOwnership;
		oOwnerships.clear();
		oOwnerships.parseResult(oResult);
		oOwnerships.show();
	}
}
var enOwn={
    Full:0,
    Naked:1,
    UsufructLife:2,
    UsufructFixed:3
}
var enOwnDsc=[
    [enOwn.Full,         "Πλήρης"],
    [enOwn.Naked,        "Ψιλή κυριότητα"],
    [enOwn.UsufructLife, "Επικαρπία Ισόβια"],
    [enOwn.UsufructFixed,"Επικ.Ορισμ.χρόνου"]
]
    
//---Ownerships------------------------->
function Ownerships(){
    this.cBuildingValue=100000;
    this.Items=[];
}
Ownerships.prototype.add=function(oOwnership){
    this.Items[this.Items.length]=oOwnership;
}
Ownerships.prototype.clear=function(){
    this.Items=[];
}
Ownerships.prototype.toString=function(){
    var sOut="";
    for (var nKey=0;nKey<=this.Items.length-2; nKey++){
        sOut+= this.Items[nKey].toString()+"\r";
    }
    sOut+=this.Items[this.Items.length-1].toString();
    return sOut;
}
//---Ownerships Client------------------>
Ownerships.prototype.parseResult=function(oResOwns){
    var oOwnership;
    this.clear();
    var nOwn;
    for(nOwn=0;nOwn<=oResOwns.length-1;nOwn++){
        oOwnership=new Ownership();
        oOwnership.parseResult(oResOwns[nOwn]);
        this.add(oOwnership);
    }
}
Ownerships.prototype.show=function(){
    $("txtcBuildingValue").value=this.cBuildingValue.pkToString(0,"gr")
    for (var nKey=0;nKey<=this.Items.length-1; nKey++){
        this.Items[nKey].show(nKey);
    }
}
Ownerships.prototype.check=function(){
    var oOwnership;
    var nFullSum=0, nUsufructSum=0, nNakedSum=0;
    for (var nOwn=0;nOwn<=this.Items.length-1; nOwn++){
        oOwnership= this.Items[nOwn];
        if (oOwnership.pOwn<0){
            alert("Ολα τα ποσοστά πρέπει να είναι θετικοί ακέραιοι αριθμοί!");
            return false;
        }
        if (oOwnership.eOwn==enOwn.Full){
            nFullSum+=oOwnership.pOwn/oOwnership.pOwnDen;
            //nNakedSum   += oOwnership.pOwn;
            //nUsufructSum+= oOwnership.pOwn;
        } else if(oOwnership.eOwn==enOwn.Naked){
            nNakedSum   += oOwnership.pOwn/oOwnership.pOwnDen;
        } else if(oOwnership.eOwn==enOwn.UsufructLife){
            if (oOwnership.nAgeOwner<=0) {
                alert("Πρέπει να δώσετε \"Hλικία Eπικαρπωτή\"\n στις ισόβιες επικαρπίες");
                return false;
            }
            nUsufructSum+= oOwnership.pOwn/oOwnership.pOwnDen;
        } else if(oOwnership.eOwn==enOwn.UsufructFixed){
            if (oOwnership.nYearsDur<=0) {
                alert("Πρέπει να δώσετε \"Διάρκεια Επικαρπίας\"\nστις επικαρπίες ορισμένου χρόνου!");
                return false;
            }
            nUsufructSum+= oOwnership.pOwn/oOwnership.pOwnDen;
        }
    }
    var bOK=false;
    var d=.0001
    if (nFullSum+nUsufructSum>1+d){
        alert("Το άθροισμα Πλήρους Κυριότητας και Επικαρπίας\nδεν πρέπει να υπερβαίνει το 100%");
    } else if (nFullSum+nNakedSum>1+d){
        alert("Το άθροισμα Πλήρους και Ψιλής κυριότητας\nδεν πρέπει να υπερβαίνει το 100%");
    } else if (nNakedSum==0) {
        bOK=true;
    } else if (nNakedSum<nUsufructSum-d || nNakedSum>nUsufructSum+d){
        alert("Η επικαρπία πρέπει να είναι ίση με την ψιλή κυριότητα");
    } else {
        bOK=true;
    }
    return bOK;
}
Ownerships.prototype.upd=function(){
    var oTab=$("tabData");
    var oRow, oCell, oCbo, oTxt;
    var nRow,oOwnership;
    this.Items=[];
    this.cBuildingValue=Number.pkParse($("txtcBuildingValue").value,"gr");
    if (isNaN(this.nYearsDur)) this.nYearsDur=0;

    //for (nRow=0; nRow<=oTab.childNodes.length-2; nRow++){
    for (nRow=0; nRow<=oTab.rows.length-2; nRow++){
        oOwnership=new Ownership();
        oOwnership.upd(nRow);
        this.Items[nRow]=oOwnership;
    }
}
//---Ownership-------------------------->
function Ownership(){
    var dToday=new Date();
    this.nOwnSerial=0;
    this.eOwn=enOwn.Full;
    this.pOwn=0;
    this.pOwnDen=100;
    this.nYearsDur=0;
    this.nAgeOwner=0;
    this.pValue=0;
}
Ownership.prototype.toString=function(){
    return this.nOwnSerial.toString()+"\t"+
        this.eOwn.toString()+"\t"+
        this.pOwn.toString()+"/"+ this.pOwnDen.toString()+"\t"+
        this.nYearsDur.toString()+"\t"+
        this.nAgeOwner.toString();        
}
//---Ownership client--------------------
Ownership.prototype.enResult={
    nOwnSerial:0,
    eOwn:1,
    pOwn:2,
    pOwnDen:3,
    nAgeOwner:4,
    nYearsDur:5,
    pValue:6
}
Ownership.prototype.check=function(){
    return true;
}
Ownership.prototype.parseResult=function(oResOwn){
    this.nOwnSerial=oResOwn[this.enResult.nOwnSerial];
    this.eOwn=oResOwn[this.enResult.eOwn];
    this.pOwn=oResOwn[this.enResult.pOwn];
    this.pOwnDen=oResOwn[this.enResult.pOwnDen];
    this.nYearsDur=oResOwn[this.enResult.nYearsDur];
    this.nAgeOwner=oResOwn[this.enResult.nAgeOwner];
    this.pValue=oResOwn[this.enResult.pValue];
}
Ownership.prototype.show=function(nKey){
	bEvents=false;
	var sKey=nKey.toString();
	$("cboeOwn"+sKey).value=this.eOwn;
	$("txtpOwn"+sKey).value=(this.pOwn>0?(this.pOwn).pkToString(0,"gr"):"");
	$("txtpOwnDen"+sKey).value=(this.pOwnDen>0?(this.pOwnDen).pkToString(0,"gr"):"");
	$("txtpValue"+sKey).value=(this.pValue>0?(this.pValue*oOwnerships.cBuildingValue).pkToString(0,"gr"):"");
	
	bEvents=true;
}
Ownership.prototype.upd=function(nRow){
    var sRow = nRow.toString();
    this.nOwnSerial=nRow;
    this.eOwn= $("cboeOwn"+sRow).value;
    this.pOwn= Number.pkParse($("txtpOwn"+sRow).value,"gr");
    this.pOwn=(isNaN(this.pOwn)?0:this.pOwn);

    this.pOwnDen= Number.pkParse($("txtpOwnDen"+sRow).value,"gr");
    this.pOwnDen=(isNaN(this.pOwnDen)?0:this.pOwnDen);

    this.nYearsDur=Number.pkParse($("txtnYearsDur"+sRow).value,"gr");
    if (isNaN(this.nYearsDur)) this.nYearsDur=0;
    this.nAgeOwner=Number.pkParse($("txtnAgeOwner"+sRow).value,"gr");
    if (isNaN(this.nAgeOwner)) this.nAgeOwner=0;
    this.pValue=Number.pkParse($("txtpValue"+sRow).value,"gr");
    if (isNaN(this.pValue)) this.pValue=0;
}
//------------------------------------------------------------
var oJd=new pkario.jd();
if (document.domain=="localhost") {
    oJd.base="http://localhost:50461/BuildingWeb/BLDServer/jd.aspx";
} else if (document.domain=="test") {
    oJd.base="http://test/insServer/BLDServer/jd.aspx";
} else {
    //oJd.base="http://212.70.216.52/insMoney/BLDServer/jd.aspx"; //aegaleo
    oJd.base="http://79.129.44.153/insMoney/BLDServer/jd.aspx";  //ins
    //oJd.base="http://83.235.21.39/insMoney/BLDServer/jd.aspx";  //ins
}
