/**
 * Javascript code
 * to navigate dynamically
 * between a content's pages
 */
var currentPage = parseInt(1);

function backPage()
{
	if(currentPage == parseInt(1))
	{
		//console.log('min page');
		currentPage = countPage;
		
		// clear currentSelected
		clearSelected();
		// clear currentSelected
		setSelect(currentPage);
		// set currentSelected
		setSelectedPage(currentPage);
		
		return false;
	}
	
	currentPage=(parseInt(currentPage)-1);
	//console.log('page-', currentPage);
	// clear currentSelected
	clearSelected();
	// set current index selected
	setSelect(currentPage);
	
	// set currentSelected
	setSelectedPage(currentPage);
}

function forwardPage()
{
	if(currentPage >= parseInt(countPage))
	{
		//console.log('max page');
		currentPage = 1;
		//console.log('page',currentPage);
		
		// clear currentSelected
		clearSelected();
		// clear currentSelected
		setSelect(currentPage);
		// set currentSelected
		setSelectedPage(currentPage);
		
		return false;
	}
	
	currentPage=(parseInt(currentPage)+1);
	
	//console.log('page+', currentPage);
	// clear currentSelected
	clearSelected();
	// clear currentSelected
	setSelect(currentPage);
	// set currentSelected
	setSelectedPage(currentPage);
}

function setSelect(id)
{
	id = (parseInt(id)-1);
	
	if(dojo.byId('directgoto'))
	{
		dojo.byId('directgoto').selectedIndex = id;
	}
}

function gotoPage(evt)
{
    var id = evt.target.innerHTML;
    dijit.byId(pagesDivId).selectChild('page' + id);
    
    currentPage=parseInt(id);
    
    clearSelected();
 // set current index selected
	setSelect(id);
    setSelectedPage(id);
}

function directgotoPage(evt)
{
    var id = evt.target.options[evt.target.selectedIndex].value;
    dijit.byId(pagesDivId).selectChild('page' + id);
    
    currentPage=parseInt(id);
    
    clearSelected();
    setSelectedPage(id);
}

function setSelectedPage(id)
{
	var loc = document.location.href;
	
	document.location.href = loc.split("#")[0] + "#pages";
	
	
	dojo.addClass(dojo.byId('goto' + id), 'selected');
}

function clearSelected()
{
	var i = 1;
    while(dojo.byId('goto' + i))
    {
        dojo.removeClass(dojo.byId('goto' + i),'selected');
        i++;
    }
}

function insertStep(eNode, bAfter)
{
	insertPage(eNode, bAfter);
    // creates page content textarea
    var eInputFile = document.createElement('input');
    // -1 because iPagesOffset has been incremented in insertPage()
    iLastPageOffset = iPagesOffset - 1;
    eInputFile.type = 'file';
    eInputFile.id = pageFileName + iLastPageOffset;
    eInputFile.name = pageFileName + iLastPageOffset; 
    document.getElementById('page' + iLastPageOffset).insertBefore(eInputFile, document.getElementById('pageContent' + iLastPageOffset));
}

//inserts a new page in the stack container of the record form
function insertPage(eNode, bAfter)
{
    var regex = new RegExp("[0-9]+");
    var page = parseInt(regex.exec(eNode.id)[0]);
    
    if(bAfter == 1)
    {
        page++;
    }
    // creates page container
    var eDl = document.createElement('dl');
    eDl.id = 'page' + iPagesOffset;
    eDl.setAttribute('dojoType', 'dijit.layout.ContentPane');
    
    // creates page header
    var eDt = document.createElement('dt');
    eDt.id = 'pageHeader' + iPagesOffset;
    var regex2 = new RegExp("" + (iPagesOffset - 1) + "", "g");
    eDt.innerHTML = dojo.byId('pageHeader' + (iPagesOffset - 1)).innerHTML.replace(regex2, '' + iPagesOffset);
    eDl.appendChild(eDt);
    
    // creates goto button
    var eSpan = document.createElement('span');
    eSpan.id = 'goto' + iPagesOffset;
    eSpan.innerHTML = iPagesOffset;
    dojo.byId('gotoPages').appendChild(eSpan);
    dojo.connect(eSpan, 'onclick', gotoPage);
    
    // creates page content textarea
    var eDd = document.createElement('dd');
    eDd.id = 'pageContent' + iPagesOffset;
    var eTextarea = document.createElement('textarea');
    eTextarea.id = pageContentName + iPagesOffset;
    eTextarea.name = pageContentName + iPagesOffset;
    eDd.appendChild(eTextarea);
    eDl.appendChild(eDd);
    dojo.byId(pagesDivId).appendChild(eDl);

    // adds the page to the stack container
    var ePages = dijit.byId(pagesDivId);
    var eContentPane = new dijit.layout.ContentPane({}, eDl);
    ePages.addChild(eContentPane, iPagesOffset);

    // transforms the textarea into a dijit editor
    // var eEditor = new dijit.Editor({id:pageContentName + iPagesOffset, extraPlugins:['|', 'createLink', 'insertImage']}, eTextarea);
    var eEditor = new tinymce.Editor(pageContentName + iPagesOffset, oTinyMCE);
    eEditor.render('');
    
    // shifts contents
    for(i = iPagesOffset; i > page; i--)
    {
        dojo.byId(pageContentName + i).value = dojo.byId(pageContentName + (i - 1)).value;
    }

    // erases the data for the inserted page
    dojo.byId(pageContentName + page).value = '';
    
    iPagesOffset++;
    
    if(bAfter == 1)
    {
        ePages.forward();
    }
}

// removes the inputs for the given page and decreases the next pages number by 1
function removePage(eNode)
{
    var regex = new RegExp("[0-9]+");
    var page = parseInt(regex.exec(eNode.id)[0]);
        
    // at least one page is needed
    if(iPagesOffset <= 2)
    {
        alert(recordErrorNoPage);
        return;
    }
    if(!confirm(deletePageConfirm))
    {
        return;
    }
    
    iPagesOffset--;

    if(page == iPagesOffset)
    {
        dijit.byId(pagesDivId).back();
    }
    
    // shifts contents
    for(i = page; i < iPagesOffset; i++)
    {
    	console.log('page', 1);

    	var page1 = dijit.byId(pageContentName + i);
    	var page2 = dijit.byId(pageContentName + (i + 1));
        page1.setValue(page2.getValue(false));
    }
    
    // removes last page
    var eSpan = dojo.byId('goto' + iPagesOffset);
    eSpan.parentNode.removeChild(eSpan);
    dijit.byId('page' + iPagesOffset).destroy();
}

dojo.addOnLoad(function()
{
    var i = 1;
    while(dojo.byId('goto' + i))
    {
        dojo.connect(dojo.byId('goto' + i), 'onclick', gotoPage);
        i++;
    }
    dojo.connect(dojo.byId('directgoto'), 'onchange', directgotoPage);    
    
});