/**
 *To generate xml for a specific column
 *@param child - array of all elements in a specific column
 *@param num - column for which we are generating the xml
 **/
function createChildXml(child, num){
	var xmlchild = "";
	for(iChild=0;iChild<child.length;iChild++)
	{
		childtp = child[iChild].split("_");
		xmlchild = xmlchild+"<elem>";
		xmlchild = xmlchild+"	<id>"+child[iChild]+"</id>";
		xmlchild = xmlchild+"	<type>"+childtp[0]+"</type>";
		xmlchild = xmlchild+"	<num>"+childtp[1]+"</num>";
		xmlchild = xmlchild+"	<col>"+num+"</col>";
		xmlchild = xmlchild+"	<vertPos>"+iChild+"</vertPos>";

		if(childtp[0]==STANDALONEHEADERTEXT){
			xmlchild = xmlchild+"	<collapsed>No</collapsed>";
		}else{
                   if ( document.getElementsByName(childtp[0]+'_collapse'+childtp[1])[0].checked){
			xmlchild = xmlchild+"	<collapsed>Yes</collapsed>";
		   }else{
			xmlchild = xmlchild+"	<collapsed>No</collapsed>";
		   }
		}
		if(childtp[0]=="libAcct"){
		}
		else if(childtp[0]==WEBNOTETEXT){
			xmlchild = xmlchild+"	<title>"+escape(normalizeContent(getElement(childtp[0]+'_title_'+childtp[1]).innerHTML))+"</title>";
			xmlchild = xmlchild+"	<webnote>"+escape(normalizeContent(convertHtmlToText(getElement('visi_note'+childtp[1]).innerHTML)))+"</webnote>";
		}
		else if(childtp[0]==STANDALONEHEADERTEXT){
			xmlchild = xmlchild+"	<title>"+escape(normalizeContent(getElement(childtp[0]+'_title_'+childtp[1]).innerHTML))+"</title>";
			var selLen = getElement(childtp[0]+'_query'+childtp[1]).length;
                        var querytopass = '';
                        for(i=0;i< selLen ; i++){
                            if(getElement(childtp[0]+'_query'+childtp[1]).options[i].selected ){
                                querytopass = getElement(childtp[0]+'_query'+childtp[1]).options[i].value;   
                            }	
                        }
                        xmlchild = xmlchild+"	<style>"+escape(normalizeContent(querytopass))+"</style>"; 
		}
		else if(childtp[0] == LIBDETAILSTEXT ){
			xmlchild = xmlchild+"	<title>"+escape(normalizeContent(getElement(childtp[0]+'_title_'+childtp[1]).innerHTML))+"</title>";
			var selLen = getElement(childtp[0]+'_query'+childtp[1]).length;
                        var querytopass = '';
                        if(getElement(childtp[0]+'_query'+childtp[1]).options[0].selected ){
                            querytopass = getElement(childtp[0]+'_query'+childtp[1]).options[0].value;   
                        }	
                        for(i=1;i< selLen ; i++){
                            if(getElement(childtp[0]+'_query'+childtp[1]).options[i].selected ){
                                querytopass = querytopass + '_' + getElement(childtp[0]+'_query'+childtp[1]).options[i].value;   
                            }	
                        }
			xmlchild = xmlchild+"	<query>"+escape(normalizeContent(querytopass))+"</query>";
		}else if(childtp[0] == SEARCHTEXT){
	                xmlchild = xmlchild+"	<title></title>";			
			xmlchild = xmlchild+"	<query>"+escape(normalizeContent(getElement(childtp[0]+'_query'+childtp[1]).value))+"</query>";
		}
		else if(childtp[0] == ERESOURCETEXT){
			xmlchild = xmlchild+"	<title>"+escape(normalizeContent(getElement(childtp[0]+'_text_'+childtp[1]).value))+"</title>";
			xmlchild = xmlchild+"	<commid>"+escape(normalizeContent(getElement(childtp[0]+'_query'+childtp[1]).value))+"</commid>";
			xmlchild = xmlchild+"	<pubrtid>"+escape(normalizeContent(getElement(childtp[0]+'_pubrtid'+childtp[1]).value))+"</pubrtid>";
			if(document.getElementsByName(childtp[0]+'_desc'+childtp[1])[0].checked)
				xmlchild = xmlchild+"	<desc>Yes</desc>";
			else
				xmlchild = xmlchild+"	<desc>No</desc>";
		}
		else if(childtp[0] == IMGTOOLTEXT || childtp[0] == PCERESTEXT  || childtp[0] == NAVTOOLTEXT){
			xmlchild = xmlchild+"	<title>"+escape(normalizeContent(getElement(childtp[0]+'_title_'+childtp[1]).innerHTML))+"</title>";
			xmlchild = xmlchild+"	<query>"+escape(normalizeContent(getElement(childtp[0]+'_query'+childtp[1]).value))+"</query>";
			xmlchild = xmlchild+"	<timeInterval>"+escape(normalizeContent(getElement(childtp[0]+'_timeInterval'+childtp[1]).value))+"</timeInterval>";
		}
		else{
			xmlchild = xmlchild+"	<title>"+escape(normalizeContent(getElement(childtp[0]+'_title_'+childtp[1]).innerHTML))+"</title>";
			xmlchild = xmlchild+"	<query>"+escape(normalizeContent(getElement(childtp[0]+'_query'+childtp[1]).value)).replace(/\+/g,"%2B")+"</query>";
			xmlchild = xmlchild+"	<count>"+escape(normalizeContent(getElement(childtp[0]+'_count_'+childtp[1]).value))+"</count>";
			if(document.getElementsByName(childtp[0]+'_desc'+childtp[1])[0].checked)
				xmlchild = xmlchild+"	<desc>Yes</desc>";
			else
				xmlchild = xmlchild+"	<desc>No</desc>";
				

			if(document.getElementsByName(childtp[0]+'_linear'+childtp[1])[0].checked)
				xmlchild = xmlchild+"	<linear>Yes</linear>";
			else
				xmlchild = xmlchild+"	<linear>No</linear>";

			if(document.getElementsByName(childtp[0]+'_subheader'+childtp[1])[0].checked)
				xmlchild = xmlchild+"	<subheader>Yes</subheader>";
			else
				xmlchild = xmlchild+"	<subheader>No</subheader>";
		}		

		if(childtp[0]==RSSFEEDSTEXT){
		    xmlchild = xmlchild+"	<feedType>"+getElement(childtp[0]+'_feedType'+childtp[1]).value+"</feedType>";

                    if(document.getElementsByName(childtp[0]+'_itemTitle'+childtp[1]).length > 0){
                        if(document.getElementsByName(childtp[0]+'_itemTitle'+childtp[1])[1].checked)
                            xmlchild = xmlchild+"   <itemTitle>No</itemTitle>";
                        else
                            xmlchild = xmlchild+"   <itemTitle>Yes</itemTitle>"; 
                    }
                }
	
		xmlchild = xmlchild+"</elem>";		
	}
	return xmlchild;
}

/**
 * The function which creates the xml whenever their
 * is any activity on the page.
 */
function dragHappened(howToDo, incrementVersion, caller)
{
	child1 = new Array();
	child2 = new Array();
	child3 = new Array();
	
	/******* GETTING ELEMENTS IN EACH COLUMN ******************/	
	third = getElement(THIRDCOLUMN)
	child_t = third.childNodes
	for(iThird=0;iThird<child_t.length;iThird++)
	{
	    child3[iThird] = child_t[iThird].id
	}	
	second = getElement(SECONDCOLUMN)
	child_s = second.childNodes
	for(iSecond=0;iSecond<child_s.length;iSecond++)
	{
	    child2[iSecond] = child_s[iSecond].id
	}
	first = getElement(FIRSTCOLUMN)
	child_f = first.childNodes
	for(iThird=0;iThird<child_f.length;iThird++)
	{
	    child1[iThird] = child_f[iThird].id
	}
	
	/************************ XML GENERATION *****************/	
	//xmlgenerate = 	'<?xml version="1.0" encoding="UTF-8"?>';
	xmlgenerate = '';
	xmlgenerate = xmlgenerate+'<property>';
     
	xmlgenerate = xmlgenerate + '<title>'+ getElement('titleSelect').value +'</title>';
	xmlgenerate = xmlgenerate + '<titleSize>' + getElement('titleSize').value+'</titleSize>';
	xmlgenerate = xmlgenerate + '<branding>'+ getElement('brandingSelect').value +'</branding>';
	xmlgenerate = xmlgenerate + '<layout>'+ getElement('layoutSelect').value +'</layout>';
	xmlgenerate = xmlgenerate + '<creator>';
	xmlgenerate = xmlgenerate + '<pennkey>' + creatorPennKey + '</pennkey>';
	xmlgenerate = xmlgenerate + '<firstname>' + creatorFirstName + '</firstname>';
	xmlgenerate = xmlgenerate + '<lastname>' + creatorLastName + '</lastname>';
	xmlgenerate = xmlgenerate + '<date>' + dateCreated + '</date>';
	xmlgenerate = xmlgenerate + '</creator>';
	xmlgenerate = xmlgenerate + '<lasteditor>';
	xmlgenerate = xmlgenerate + '<pennkey>' + lasteditorPennKey + '</pennkey>';
	xmlgenerate = xmlgenerate + '<firstname>' + lasteditorFirstName + '</firstname>';
	xmlgenerate = xmlgenerate + '<lastname>' + lasteditorLastName + '</lastname>';
	xmlgenerate = xmlgenerate + '<date>' + dateLastModified + '</date>';
	xmlgenerate = xmlgenerate + '</lasteditor>';

        
        if (incrementVersion){
            versionNumber = parseInt(versionNumber)+1;
            if((parseInt(versionNumber) - parseInt(firstVersion)) >= 20){
                firstVersion = parseInt(firstVersion) + 1;
            }
            lastVersion = versionNumber;
        }
 
        if(ISEDITABLE) {
            if (parseInt(firstVersion) < parseInt(versionNumber)) {
                undoenabled = true;
                //Enable Undo button, by default it should be darked out.
                getElement("btnUndo").className = "enabledundo";
            }else {
                undoenabled = false;
                getElement("btnUndo").className = "disabledundo";
            }

            if (parseInt(versionNumber) < parseInt(lastVersion)) {
                redoenabled = true;
                //Enable Redo button, by default it should be darked out.
                getElement("btnRedo").className = "enabledundo";
            }else {
                redoenabled = false;
                getElement("btnRedo").className = "disabledundo";
            }
        }
        
	xmlgenerate = xmlgenerate + '<version>'+ versionNumber +'</version>';
        xmlgenerate = xmlgenerate + '<firstversion>' + firstVersion + '</firstversion>';
        xmlgenerate = xmlgenerate + '<lastversion>' + lastVersion + '</lastversion>';

	xmlgenerate = xmlgenerate+'</property>';
	xmlgenerate = xmlgenerate + "<set>";
		
	xmlgenerate = xmlgenerate + createChildXml(child1 , 1);
	xmlgenerate = xmlgenerate + createChildXml(child2 , 2);
	xmlgenerate = xmlgenerate + createChildXml(child3 , 3);
	
	xmlgenerate = xmlgenerate+"</set>"	;
	/******************** DISPLAY XML GENERATED ************/
	getElement('xmlContent').value = xmlgenerate;
	sendUpdates(howToDo, caller);
}

function dragCall(howToDo, incrementVersion, caller){
    if(!incrementVersion) { incrementVersion = false; }
    if(ISEDITABLE){
        isdraghapp=1;
        dragHappened(howToDo, incrementVersion, caller);
        isdraghapp=0;
    }
}

/**
 *Function which sends the updates to the server so that a xml is generated from the 
 *current elements on the server and it makes the 
 *
 **/
function sendUpdates(howToDo, caller){
	var parameters =	'action=pageupdate' +
		'&counter=' + encodeURI(counter) +
		'&file=' + encodeURI(callpath) +
		'&projectPrefix='+ encodeURI(projectPrefix) + 
		'&xmlCode=<?xml version="1.0" encoding="UTF-8"?>' +
		'<text>' + getElement("xmlContent").value + '</text>';
	counter = "second";
	postAjax(parameters, servletsource, howToDo, caller);
}

function revert(){
               if(confirm('Do you really want to revert to the last published version?')){
			//We are deleting all the content:
                	removeChild(FIRSTCOLUMN);
                	removeChild(SECONDCOLUMN);
                	removeChild(THIRDCOLUMN);
                        //And reloading it from the _publish version:
                	getContent(true);
	}
	openshutaddcontent('501');
	}

function viewPublished(){
    var url = window.location.href;
    window.open(url.split('?')[0]);
    openshutaddcontent('501');
}

function publish(){
	if(confirm('Do you really want to publish the page?')){
		//Saving before publishing
		dragHappened(true, true);//Not passing parameter 'save' as we don't need a popup here
        	var parameters = "action=publish&file=" + encodeURI(callpath)+'&projectPrefix='+encodeURI(projectPrefix);
                postAjax(parameters, servletsource, true, 'publish');
	}
	openshutaddcontent('501');
}

function undo(){
    if(undoenabled == true) {
        if(confirm('Do you really want to undo the changes and revert back to the previous version?')){
            var parameters = "action=undo&file=" + encodeURI(callpath)+'&projectPrefix='+encodeURI(projectPrefix) + 
                             '&xmlCode=<?xml version="1.0" encoding="UTF-8"?>' + '<text>' + getElement("xmlContent").value + '</text>';
            postAjax(parameters, servletsource, false);
 
            //We are deleting all the contents:
            removeChild(FIRSTCOLUMN);
            removeChild(SECONDCOLUMN);
            removeChild(THIRDCOLUMN);
            //And reloading it from the current (although changed at the backend) file:
            getContent(false);
        }
    }
    openshutaddcontent('501');
    
}

function redo(){
    if(redoenabled == true){
        if(confirm('Do you really want to move to the next version ?')){
            var parameters = "action=redo&file=" + encodeURI(callpath)+'&projectPrefix='+encodeURI(projectPrefix) +
                             '&xmlCode=<?xml version="1.0" encoding="UTF-8"?>' + '<text>' + getElement("xmlContent").value + '</text>';
            postAjax(parameters, servletsource, false);

/*    
            //We are deleting all the contents:
            removeChild(FIRSTCOLUMN);
            removeChild(SECONDCOLUMN);
            removeChild(THIRDCOLUMN);
            //And reloading it from the current (although changed at the backend) file:
            getContent(false);
*/
            window.location = window.location;
        }
    }
    openshutaddcontent('501');
}


