var DataMgr = {
	arrLastIssues : null,
    arrCategoryList : null,			
    arrCategoryManagers : null,		
    arrCategoryData : null,			
    noticeCallback : null,
	arrIssues : null,
	XHRTool : null,
	arrIssueMatrix : [1,0,4,3,2],
}

DataMgr.onReceiveData = function (bSuccess) 
{
	if (bSuccess) {
		var responseXML = this.XHRTool.getResponseXML();
		var responseDoc = responseXML.documentElement;
		this.arrIssues = new Array();
		var arrSubIssues = new Array();
		
		if (responseDoc) {
			alert(responseDoc);
			var itemElements = responseDoc.getElementsByTagName("issue");			
			if (itemElements && itemElements.length > 0) { 
				for (var i = 0; i < itemElements.length; i++) {
					arrSubIssues = new Array();
					var issueTitle = itemElements[i].getElementsByTagName("issueName")[0].firstChild.data;
					var issueData = itemElements[i].getElementsByTagName("issueDate")[0].firstChild.data;
					var subIssues = itemElements[i].getElementsByTagName("subIssue")
					for (j=0;j<subIssues.length;j++){
						var subIssueCover = subIssues[j].attributes.getNamedItem("subIssueCoverId").value;
						var subIssueTitle = subIssues[j].attributes.getNamedItem("subIssueName").value;
						var subIssueURL = "http://panorama.infor.pl/edgp_soap/get.php?act=getArticles&id=" + subIssues[j].attributes.getNamedItem("subIssueId").value;
						arrSubIssues[arrSubIssues.length] = new Category(subIssueCover, subIssueURL, subIssueTitle);					
					}							
					this.arrIssues[i] = new Array();
					this.arrIssues[i] = new Issue(issueData, issueTitle, arrSubIssues);
				}
			}			
		}
	}
	alert('done');	
}
	
DataMgr.create = function() 
{
	this.XHRTool = new XHRToolKit("http://panorama.infor.pl/edgp_soap/get.php?act=listIssues&y=0", function (bSuccess) {
		DataMgr.onReceiveData(bSuccess);		
		DataMgr.drawIssueSelector();
	});
	this.XHRTool.sendXHRRequest();
}

DataMgr.loadIssue = function( ID )
{
    this.arrCategoryList = new Array();
	ISSUE_NAME = DataMgr.arrIssues[ID].name;
    this.arrCategoryList = DataMgr.arrIssues[ID].subIssues;
    this.arrCategoryManagers = new Array();
    this.arrCategoryData = new Array();
    
    for (var i=0; i < this.arrCategoryList.length; i++) {        		
		var cat =  new CategoryMgr({
            ID : i,
            title : this.arrCategoryList[i].title,
            URL : this.arrCategoryList[i].URL,
			cover : this.arrCategoryList[i].cover,
            callback : function (categoryID) {
                DataMgr.receiveHandler(categoryID);
            }						
        });
		this.arrCategoryManagers[this.arrCategoryManagers.length] = cat;
    }	
}

DataMgr.drawIssueSelector = function()
{
	document.getElementById('UISelector').style.display = 'block';
	var container = document.getElementById('UISelector');
	var resArr = new Array('175', '240', '371', '240', '175');
	var html = '';
	for (i=0;i<DataMgr.arrIssues.length;i++){
		var coverId = DataMgr.arrIssues[DataMgr.arrIssueMatrix[i]].subIssues[0].cover
		html += '<img id="cover'+(i+1)+'" src="http://edgp.gazetaprawna.pl/index.php?act=img&amp;id='+coverId+'&amp;sub=main_thumb&amp;type='+resArr[i]+'" />';
	}
	html += '<img src="Resource/image/cover_shadow_1.png" id="coverShadow1" />';
	html += '<img src="Resource/image/cover_shadow_2.png" id="coverShadow2" />';
	html += '<div id="selIssueName">Dziennik Gazeta Prawna<br /><span>'+DataMgr.arrIssues[DataMgr.arrIssueMatrix[2]].name+'<span></div>';
	container.innerHTML = html;		
	DataMgr.loadIssue( DataMgr.arrIssueMatrix[2] );
	NewsController.start( 0 );	
}

DataMgr.issueLeft = function(){
	var elem = DataMgr.arrIssueMatrix.pop();
	DataMgr.arrIssueMatrix.unshift( elem );
	DataMgr.drawIssueSelector();
}

DataMgr.issueRight = function(){
	var l = DataMgr.arrIssueMatrix.length;
	var elem = DataMgr.arrIssueMatrix.shift();
	DataMgr.arrIssueMatrix[l-1] = elem;
	DataMgr.drawIssueSelector();
}

DataMgr.enterIssue = function(){
	document.getElementById('UISelector').style.display = 'none';
}

DataMgr.sendRequest = function (categoryID, callback) {
	//alert ('Loading...');
	NewsController.showLoader();
    this.arrCategoryManagers[categoryID].sendXHRRequest();
    this.noticeCallback = callback;
}

DataMgr.receiveHandler = function (categoryID) {
    if (this.arrCategoryData[categoryID] == null) {
        this.arrCategoryData[categoryID] = [];
    }
    this.arrCategoryData[categoryID].title = this.arrCategoryManagers[categoryID].getTitle();
    this.arrCategoryData[categoryID].bReady = this.arrCategoryManagers[categoryID].isReady();
    this.arrCategoryData[categoryID].arrArticles = this.arrCategoryManagers[categoryID].getArticles();
    if (this.noticeCallback)
        this.noticeCallback(categoryID);
}

DataMgr.getCategoryData = function(categoryID) {
    return this.arrCategoryData[categoryID];
}

DataMgr.getCategories = function() {
    return this.arrCategoryList;
}

DataMgr.getListData = function (categoryID, articleIdx) {
    var listDataObj = {};
    listDataObj.categoryTitle = this.arrCategoryData[categoryID].title;
    listDataObj.bReady = this.arrCategoryData[categoryID].bReady;
    if (listDataObj.bReady) {
        var arrArticles = this.arrCategoryData[categoryID].arrArticles;
        var from = this.getFirstArticleIdx(UIList.TITLE_MAX_NUM, articleIdx);
        var to = parseInt(from) + parseInt(UIList.TITLE_MAX_NUM);
        listDataObj.arrArticles = arrArticles.slice(from, to);
    }
    else {
        listDataObj.arrArticles = [];
    }
    return listDataObj;
}

DataMgr.getPageNum = function (MAX_LIST_NUM, articleIdx) {
    var retValue = Math.floor(articleIdx / MAX_LIST_NUM);
    return retValue;
}

DataMgr.getFirstArticleIdx = function (MAX_LIST_NUM, articleIdx) {
    var retValue = MAX_LIST_NUM * this.getPageNum(MAX_LIST_NUM, articleIdx);
    return retValue;
}

DataMgr.getContentsData = function (categoryID, articleIdx) {
    var contentsDataObj = {};
    contentsDataObj.categoryTitle = this.arrCategoryData[categoryID].title;
    contentsDataObj.article = this.arrCategoryData[categoryID].arrArticles[articleIdx];
    return contentsDataObj;
}

DataMgr.getCategoryList = function () {
    var retValue = this.arrCategoryList;
    return retValue;
}

