/* home.js */
function saveNodes(el){
	savedNodes = new Array();
	for(var i = 0; i < el.childNodes.length; i++){
		savedNodes.push(el.childNodes[i]);
	}
}

var savedNodes;
var currEl = null;

function makeEditable(el){

	if(currEl){
		if(currEl != el){
			cancelEdit();
		}else{
			return;
		}
	}

	saveNodes(el);
	hideAddArticleForm(false);

	// create form
	var frm = document.createElement("form");
	frm.id = "form1";

	// title
	var obj = el.getElementsByTagName("object")[0];
	var title = getTitle(obj);
	var ip = createTextField("input_title", title, "input_title");
	frm.appendChild(ip);

	// date
	var em = el.getElementsByTagName("em")[0];
	var dte = em.firstChild.nodeValue;
	ip = createTextField("input_date", dte, "input_date");

	frm.appendChild(ip);

	// paragraphs
	var pars = el.getElementsByTagName("p");
	el.parsLength = pars.length;

	var ta;

	for(var i = 0; i < pars.length; i++){
		ta = document.createElement("textarea");
		ta.className = i > 0 ? "textarea_p" : "textarea_intro";
		ta.value = clean(pars[i].innerHTML);
		frm.appendChild(ta);
	}

	// btns
	var btn = document.createElement("input");
	btn.type = "button";
	btn.value = "cancel";
	btn.className = "input_button";
	btn.onclick = cancelEdit;

	frm.appendChild(btn);

	el.insertionPoint = btn;
	btn = document.createElement("input");
	btn.type = "button";
	btn.value = "add paragraph";
	btn.className = "input_button";
	btn.onclick = addParagraph;

	frm.appendChild(btn);

	btn = document.createElement("input");
	btn.type = "button";
	btn.value = "move up";
	btn.className = "input_button";
	btn.onclick = moveUp;
	btn.style.visibility = "hidden";

	frm.appendChild(btn);

	btn = document.createElement("input");
	btn.type = "button";
	btn.value = "submit";
	btn.className = "input_button";
	btn.onclick = commitEdit;

	frm.appendChild(btn);

	currEl = el;

	while(currEl.firstChild){

		currEl.removeChild(currEl.firstChild);

	}

	/* testreturn; */
	el.appendChild(frm);
}

function cancelEdit(){

	if(!currEl)return;

	currEl.removeChild(currEl.getElementsByTagName("form")[0]);

	for(var i = 0; i < savedNodes.length; i++){		
		currEl.appendChild(savedNodes[i]);
	}			
	
	if(window.event)
		window.event.cancelBubble = true;

	currEl = null;

}				

function commitEdit(){	

	currEl = null;

	var title = document.getElementById("input_title").value;
	var dte = document.getElementById("input_date").value;
	var copy = "";
	var frm = this.parentNode;
	var pars = frm.getElementsByTagName("textarea");
	var par_txt;
	var parts = new Array();
	var part;
	var intro = false;

	for(var i = 0; i < pars.length; i++){
	
		par_txt = clean(pars[i].value);

		if(par_txt != ""){					
			
			copy += par_txt + "##";
			part = document.createElement("p");

			if(!intro){						
				
				part.className = "p_intro";
				intro = true;

			}					
			
			part.innerHTML = par_txt;
			parts.push(part);

		}
	
	}			
	
	copy = escape(copy.substring(0, copy.length - 2));
	
	 // escape and get rid of trailing hashes						
	 // rebuild article			
	var article = frm.parentNode;
	article.removeChild(frm);
	var id = article.id.substring(3, article.id.length);
	var div = document.createElement("div");
	div.className = "title";
	var div2 = document.createElement("div");
	div2.id = "f" + id;
	div.appendChild(div2);
	article.appendChild(div);
	var em = document.createElement("em");
	var txt = document.createTextNode(dte);
	em.appendChild(txt);
	article.appendChild(em);
	
	for(var i = 0; i < parts.length; i++){					
		article.appendChild(parts[i]);
	}
	
	if(window.event)
		window.event.cancelBubble = true;

	setTimeout(addTitleMovie, 100, id, title);
	
	var req = "updateArticle";
	req += "&title=" + title + "&dte=" + dte;
	req += "&copy=" + copy;
	req += "&id=" + id;
	
	doRequest(req);

}				

function commitInsert(){			

	var title = document.getElementById("input_title_new").value;
	var dte = document.getElementById("input_date_new").value;
	var copy = "";
	var pars = document.getElementById("art0").getElementsByTagName("textarea");
	var par_txt;

	for(var i = 0; i < pars.length; i++){
		
		par_txt = clean(pars[i].value);

		if(par_txt != ""){			
			copy += par_txt + "##";
		}
	
	}			
	
	copy = escape(copy.substring(0, copy.length - 2));

	// escape and get rid of trailing hashes									
	hideAddArticleForm(true)			
	var req = "addArticle";
	req += "&title=" + title + "&dte=" + dte;
	req += "&copy=" + copy;

	doRequest(req);

}				

// not implemented (yet)		
function moveUp(){			

	alert("moving element");

}

function addParagraph(){

	var ta = document.createElement("textarea");
	ta.name = "p[]";
	ta.className = "textarea_p";

	if(currEl)	
		currEl.firstChild.insertBefore(ta, currEl.insertionPoint);
	else
		document.getElementById("ip").parentNode.insertBefore(ta, document.getElementById("ip"));

	ta.focus();

	if(window.event)
		window.event.cancelBubble = true;

}

function showAddArticleForm(){	

	cancelEdit();
	document.getElementById("art0").style.display = "block";

}

function hideAddArticleForm(erase){			
	
	/* todo: reset all fields to default values and remove any added paragraph textarea's */			
	var frm = document.getElementById("input_title_new").parentNode;
	document.getElementById("art0").style.display = "none";

	if(erase){				
	
		document.getElementById("input_title_new").value = "Title";
		document.getElementById("input_date_new").value = "example: 2007-07-18";
		var ps = frm.getElementsByTagName("textarea");
		ps[0].value = "intro";
		ps[1].value = "paragraph 1";
		var psl = ps.length;

		for(var i = 2; i < psl; i++){
		
			frm.removeChild(ps[2]);

		}
		
	}
}			

