var oRowSelected = null; // currently expanded row
var oXsltDoc = null;
var sDbFile = '../db/films.xml';
var oElTarget = null;

function Init(){
    oXsltDoc = Xml.Load("views/list.xsl");
    oElTarget = document.getElementById('content');
    Render(oXsltDoc);
}

function Render(oXsltDoc){
    var oTransformer = new Xml.Transformer(oXsltDoc);
    oTransformer.Transform(sDbFile, oElTarget, null);
    oRowSelected = null;
}

function RowClicked(rowId){
    if (oRowSelected && oRowSelected.Collapse){
        oRowSelected.Collapse();
        if (oRowSelected.id == "row_"+ rowId) {
            oRowSelected = null;
            return;
        }
    }
    oRowSelected = new ListRow(rowId);
    oRowSelected.Expand();
}

function FiltersLstBoxClicked(sFilterExpression){
    var oElement;
    if (!oXsltDoc.getElementsByTagNameNS){
        oElement = oXsltDoc.getElementsByTagName("xsl:key")[0];                  
    }else{        
        oElement = oXsltDoc.getElementsByTagNameNS('http://www.w3.org/1999/XSL/Transform', "key")[0];
    }

    if (oElement){
        oElement.setAttribute('match', sFilterExpression);
    }

    Render(oXsltDoc);
}

var PageController = { // namespacing object

    // some member variables

    "Init" : function (){
        alert("Page init called!");
    }   
}

var ListRow = function (id){
    this.id = "row_"+ id;
}

ListRow.prototype.Collapse = function(){
    var oElDd = document.getElementById(this.id +"_details");
    if(oElDd){
        oElDd.style.display = 'none';
    }
    var oElDt = document.getElementById(this.id);
    if (this.rowOrigClass != '') {
        oElDt.className = this.rowOrigClass;
    } else {
        oElDt.className = 'rowCollapsed';
    }
}
ListRow.prototype.Expand = function(){
    var oElDd = document.getElementById(this.id +"_details");
    var oElDt = document.getElementById(this.id);
    this.rowOrigClass = oElDt.className;
    oElDt.className = 'rowExpanded';
    if(oElDd){
        oElDd.style.display = 'block';
    }

}
