/**
 * LightBox Script.
 * @author Diego Caponera 2008; 
 */

//gets document by id ^__^
function getId(id){
	return document.getElementById(id);
}

//waits for (millis)millisecs
function pause(millis){
	var date = new Date();
	var curDate = null;
	do{curDate = new Date();}
	while(curDate-date < millis);
}

//casts from HTML Collection to Array;
function collectionToArray(collection){
	var arr=[];
	for(var i=0;i<collection.length;i++){
		arr.push(collection[i]);
	}
	return arr;
}

/**
 * RegExp functions;
 */

//returns true or false wether given email address is valid or not
function isMailValid(mail){
	var objRegExp = new RegExp("([_\.0-9a-z-]+@)([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3})");  
	return objRegExp.test(mail);
}

//returns true or false wether given url address is valid or not
function isUrlValid(url){
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(url);
}

//returns true or false wether given string is alphanumeric or not
function isAlphaNumeric(string){
	var objRegExp = new RegExp("[_\.0-9a-z]");  
	return objRegExp.test(string);	
}

//returns true or false wether given zipcode is valid or not
function isZipcodeValid(code){
	var objRegExp = new RegExp("[0-9]");  
	var test=objRegExp.test(code);
	if(test==true && code.length==5)return true;
	else return false;
}

//makes regExp control between given string and regExp formula
function regExpTest(string,formula){
	if(string=="")return false;
	else{
		var objRegExp = new RegExp(formula);  
		return objRegExp.test(string);		
	}	
}

/**
 * Main AJAX functions
 */

var div=null;
var http;
var loader="<img src='../img/ajax-loader.gif' alt='Loading...'/>"

//creates an XMLHttpRequest object
function getHTTPObject(){
	var http = false;
	//Use IE's ActiveX items to load the file.
	if(typeof ActiveXObject != 'undefined') {		
		try {http = new ActiveXObject("Msxml2.XMLHTTP");}
		catch (e) {
			try {http = new ActiveXObject("Microsoft.XMLHTTP");}
			catch (E) {http = false;}
		}
	//If ActiveX is not available, use the XMLHttpRequest of Firefox/Mozilla etc. to load the document.
	} else if (XMLHttpRequest) {
		try {http = new XMLHttpRequest();}
		catch (e) {http = false;}
	}
	return http;
}

//calls a function when the state changes
function handler(){	
	if(div!=null){
		if(http.readyState == 1){
			div.innerHTML =loader;
		}
		else if(http.readyState == 4 && http.status == 200){			
			div.innerHTML = http.responseText;
		}
	}
}

//calls a script with METHOD=POST and given parameters
function postScript(url,params){
	http=getHTTPObject();
	http.open("POST", url, true);
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", params.length);
	http.setRequestHeader("Connection", "close");
	http.onreadystatechange = handler;
	if(params!=null)http.send(params);
}

//calls a script with METHOD=GET and given parameters
function getScript(url,params){
	http=getHTTPObject();	
	http.open("GET",url+"?"+params);
	http.onreadystatechange = handler;
	http.send(null);
}

/* Particular Ajax functions; */

function showCommentsForm(id){	
	div=getId("comments_"+id);	
	var url="comments.php";
	var params="action=showCommentsForm&id="+id;
	postScript(url,params);
	div.style.display="block";
}

function showComments(id){
	div=getId("comments_"+id);
	var url="comments.php";
	var params="action=showComments&id="+id;
	postScript(url,params);
	div.style.display="block";	
}

function postComment(id){
	var form=getId("comments_"+id).getElementsByTagName("form")[0];	
	var errCount=0;
	var mailError=false;
	if(form.name.value==""){
		errCount++;
		form.name.style.background="#FFDCDC";
	}else form.name.style.background="#BFFFE6";
	if(form.email.value==""){
		errCount++;
		form.email.style.background="#FFDCDC";		
	}else if(!isMailValid(form.email.value)){
		mailError=true;
		form.email.style.background="#FFDCDC";		
	}else form.email.style.background="#BFFFE6";
	if(form.text.value==""){
		errCount++;
		form.text.style.background="#FFDCDC";
	}else form.text.style.background="#BFFFE6";
	if(form.captcha.value==""){
		errCount++;
		form.captcha.style.background="#FFDCDC";
	}else form.captcha.style.background="#BFFFE6";	
	
	if(errCount==0 && mailError==false){
		div=getId("comments_"+id);
		var url="comments.php";
		var params="action=submitComment&id="+id+"&name="+form.name.value+"&email="+form.email.value+"&text="+form.text.value+"&captcha="+form.captcha.value+"&seed="+form.seed.value;
		postScript(url,params);		
	}else{		
		var message="You must";
		if(errCount!=0)message+=" fill all fields and";
		if(mailError)message+=" provide a valid email address and";
		message=message.substr(0,message.length-4);
		message+=".";
		alert(message);	
	}
}

function refreshCaptcha(id){
	var seed=Math.random();
	var form=getId("comments_"+id).getElementsByTagName("form")[0];
	form.getElementsByTagName("img")[0].src="captcha/captcha.php?seed="+seed;
	form.seed.value=seed;
}

function hideComments(id){	
	getId("comments_"+id).style.display="none";	
}

function showEditCommentForm(id){
	var form=getId("f_"+id);
	var commentBody=getId("p_"+id);
	form.style.display="block";
	commentBody.style.display="none";
}

function editComment(commentId){
	var form=getId("f_"+commentId);
	if(form.text.value!=""){
		div=getId("p_"+commentId);
		var url="comments.php";
		var params="action=editComment&id="+commentId+"&text="+form.text.value;			
		postScript(url,params);
		
		form.style.display="none";
		div.style.display="block";
		
	}else alert("If you want to clear a post content, delete it instead.");	
}

function removeComment(postId,commentId){
	if(confirm("You are deleting a comment, are you sure?")){
		var url="comments.php";
		var params="action=removeComment&id="+commentId;
		postScript(url,params);	
		showComments(postId);		
	}
}

function showAddPicLine(){
	var box=getId("smallPicManagerLine");
	box.style.display="block";
}

function startUpload(form){
	var rVal=false;	
	if(document.getElementsByName("myfile")[0].value==""){
		alert("You must choose a file!");
		rVal=false;
	}else{
		var box=getId("uploadBox");
		box.style.display="none";
		var line=getId("uploadLine");
		line.style.display="block";
		rVal=true;		
	}
	return rVal;
}

function stopUpload(result){	
	if (result == 1) {
		var box=getId("uploadBox");
		box.style.display="block";
		var line=getId("uploadLine");
		line.style.display="none";
	}
	div=getId("smallPicGallery");
	var url="adminlibrary.php";
	var params="action=printSmallPicGallery";	
	postScript(url,params);	
}

function confirmTempPic(id){	
	var title=getId("title_"+id);
	var tags=getId("tags_"+id);
	var text=getId("text_"+id);	
	
	var errCount=0;
	if(title.value==""){
		errCount++;
		title.style.background="#EF4B4B";
	}else title.style.background="#0BBF34";
	if(tags.value==""){
		errCount++;
		tags.style.background="#EF4B4B";
	}else tags.style.background="#0BBF34";
	if(text.value==""){
		errCount++;
		text.style.background="#EF4B4B";
	}else text.style.background="#0BBF34";
	
	if(errCount==0){
		div=getId("tempPicInfo_"+id);
		var url="adminlibrary.php";
		var params="action=confirmTempPic&id="+id+"&title="+title.value+"&tags="+tags.value+"&text="+text.value;	
		postScript(url,params);		
	}
}

function removeTempPic(id){
	div=getId("smallPicGallery");
	var url="adminlibrary.php";
	var params="action=removeTempPic&id="+id;	
	postScript(url,params);		
}

function postEntry(form){
	var errCount=0;	
	if(form.title.value==""){
		errCount++;
		form.title.style.background="#FFDCDC";
	}else{
		form.title.style.background="#BFFFE6";
	}
	if(form.tags.value==""){
		errCount++;
		form.tags.style.background="#FFDCDC";
	}else{
		form.tags.style.background="#BFFFE6";
	}
	var area=tinyMCE.get("text").getContent();
		
	if(area==""){
		errCount++;
		form.text.style.background="#FFDCDC";
	}
	
	var checks=document.getElementsByTagName("input");
	var checkCount=0;
	for(var i=0;i<checks.length;i++){
		if(checks[i].type=="hidden" && checks[i].value!="true")checkCount++;		
	}
	
	var rVal=false;
	if(errCount==0 && checkCount==0){
		rVal=true;
	}else{
		var message="You should";
		if(errCount!=0)message+=" fill all fields and";
		if(checkCount!=0)message+=" confirm all pictures info and";
		else message=message.substr(0,message.length-4);
		message+=".";
		alert(message);		
		rVal=false;	
	}	
	return rVal;
}

function showPicDetails(picId){
	var detailsBox=getId("smallPicManager");
	var pics=getId("dashboard").getElementsByTagName("img");
	for(var i=0;i<pics.length;i++)pics[i].style.zIndex=100;	
	var pic=getId("pic_"+picId);
	pic.getElementsByTagName("img")[0].style.zIndex=300;
	detailsBox.style.left=pic.offsetLeft+10+"px";
	detailsBox.style.top=pic.offsetTop-10+"px";	
	detailsBox.style.paddingLeft=pic.offsetWidth+"px";
	detailsBox.style.minHeight=pic.offsetHeight-25+"px";	
	div=getId("smallPicManager");
	var url="adminlibrary.php";
	var params="action=showFolioDetails&id="+picId;
	postScript(url,params);	
	detailsBox.style.display="block";	
}

function hidePicDetails(){	
	getId("smallPicManager").style.display="none";
	var pics=getId("dashboard").getElementsByTagName("img");
	for(var i=0;i<pics.length;i++)pics[i].style.zIndex=100;
}

function confirmPic(id){	
	var title=getId("folioTitle");
	var tags=getId("folioTags");
	var text=getId("folioText");	
	
	var errCount=0;
	if(title.value==""){
		errCount++;
		title.style.background="#EF4B4B";
	}else title.style.background="#0BBF34";
	if(tags.value==""){
		errCount++;
		tags.style.background="#EF4B4B";
	}else tags.style.background="#0BBF34";
	if(text.value==""){
		errCount++;
		text.style.background="#EF4B4B";
	}else text.style.background="#0BBF34";
	
	if(errCount==0){
		div=getId("smallPicManager");
		var url="adminlibrary.php";
		var params="action=confirmPic&id="+id+"&title="+title.value+"&tags="+tags.value+"&text="+text.value;	
		postScript(url,params);		
	}
}

function removePic(id){
	if (confirm("Stai per eliminare questa foto, vuoi continuare?"))
		if(confirm("Sicuro?")){
			div=getId("smallPicManager");
			var url="adminlibrary.php";
			var params="action=removePic&id="+id;	
			
			postScript(url,params);
			
			var pic=getId("pic_"+id);
			var img=pic.getElementsByTagName("img");
			img[0].style.opacity="0.5";
		}		
}

function postInfo(form,section){
	var rVal=false;
	var text="";
	
	switch(section){
		case "title":
			text=document.getElementsByName(section)[0].value;
			break;
		case "info":
			text=tinyMCE.get("info").getContent();
			break;
	}
	
	if(text==""){
		alert("You must enter some text!");
		rVal=false;
	}else{
		rVal=true;
	}
	return rVal;
}

function sortPosts(){	
	var mod_sort=getId("mod_sort");
	var mod_order=getId("mod_order");	
	var sort=mod_sort.options[mod_sort.selectedIndex].value;
	var order=mod_order.options[mod_order.selectedIndex].value;
	var url="adminlibrary.php";
	var params="action=sortPosts&sort="+sort+"&order="+order;
	div=getId("modPostList");
	postScript(url,params);
}

function pagePosts(page){
	var mod_sort=getId("mod_sort");
	var mod_order=getId("mod_order");	
	var sort=mod_sort.options[mod_sort.selectedIndex].value;
	var order=mod_order.options[mod_order.selectedIndex].value;	
	var url="adminlibrary.php";
	var params="action=pagePosts&sort="+sort+"&order="+order+"&page="+page;
	div=getId("modPostList");
	postScript(url,params);	
}

function removePicFromPost(postId,pic){
	if(confirm("Vuoi veramente rimuovere l'immagine selezionata dal post?")){		
		div=getId("pic_"+pic);
		var url="adminlibrary.php";
		var params="action=removePicFromPost&id="+postId+"&pic="+pic;
		postScript(url,params);				
		div.style.opacity=0.5;
	}
}

function removePosts(){
	var inputs=getId("modPostList").getElementsByTagName("input");
	
	var posts="";
	for(var i=0;i<inputs.length;i++){
		if(inputs[i].type=="checkbox" && inputs[i].checked==true)posts+=inputs[i].name+"_";
	}
	if(posts=="")alert("You must select post at least!");
	else if(confirm("You are deleting some posts, are you sure?")){
		posts=posts.substr(0,posts.length-1);
		var url="adminlibrary.php";
		var params="action=removePosts&posts="+posts;
		div=getId("modPostList");
		postScript(url,params);
	}	
}

function showEditLinkBox(box){
	box.onclick=null;
	var divs=box.getElementsByTagName("div");		
	for(var i=0;i<divs.length;i++)(divs[i].style.display=="block")?divs[i].style.display="none":divs[i].style.display="block";
}

function showAddLinkPane(){
	div=getId("linksWrapper");
	var url="adminlibrary.php";
	var params="action=showAddLinkPane";
	postScript(url,params);
}

function showLinks(){
	div=getId("linksWrapper");
	var url="adminlibrary.php";
	var params="action=showLinks";
	postScript(url,params);	
}

function submitLink(){
	var form=getId("linksWrapper").getElementsByTagName("form")[0];
	var errCount=0;
	var urlError=false;
	if(form.title.value==""){
		errCount++;
		form.title.style.background="#FFDCDC";
	}else form.title.style.background="#BFFFE6";
	if(form.url.value==""){
		errCount++;
		form.url.style.background="#FFDCDC";		
	}else if(!isUrlValid(form.url.value)){
		urlError=true;
		form.url.style.background="#FFDCDC";		
	}else form.url.style.background="#BFFFE6";
	if(form.description.value==""){
		errCount++;
		form.description.style.background="#FFDCDC";
	}else form.description.style.background="#BFFFE6";
	if(form.category.value==""){
		errCount++;
		form.category.style.background="#FFDCDC";
	}else form.category.style.background="#BFFFE6";		
	
	if(errCount==0 && urlError==false){
		div=getId("linksWrapper");
		var url="adminlibrary.php";
		var params="action=submitLink&title="+form.title.value+"&url="+form.url.value+"&description="+form.description.value+"&category="+form.category.value;
		postScript(url,params);		
	}else{
		var message="You must";
		if(errCount!=0)message+=" fill all fields and";
		if(urlError)message+=" insert a valid URL [ex. http://www.dominio.com] and";
		message=message.substr(0,message.length-4);
		message+=".";
		alert(message);			
	}
}

function removeLinks(){
	var inputs=getId("modTable").getElementsByTagName("input");
	
	var links="";
	for(var i=0;i<inputs.length;i++){
		if(inputs[i].type=="checkbox" && inputs[i].checked==true)links+=inputs[i].name+"_";
	}
	if(links=="")alert("You must select a link at least!");
	else if(confirm("You are going to delete some links, are you sure?")){
		links=links.substr(0,links.length-1);
		var url="adminlibrary.php";
		var params="action=removeLinks&links="+links;
		div=getId("linksWrapper");
		postScript(url,params);
	}
}

function editLink(field,id){
	var value=getId(field+"_"+id).getElementsByTagName("div")[1].getElementsByTagName("input")[0].value;
	if(value=="")alert("You must enter some text!");
	else if(field=="url" && !isUrlValid(value)){
		alert("You should enter a valid URL (ex. 'http://www.nomesito.com')");
	}else{
		var url="adminlibrary.php";
		var params="action=editLink&field="+field+"&value="+value+"&id="+id;
		div=getId(field+"_"+id);
		postScript(url,params);
		div.style.border="3px solid #0BBF34";		
	}		
}

/* Particular LightBox functions; */

var boxPicWidth=0;
var boxPicHeight=0;
var pic;

function getWidthAndHeight(img) {
	boxPicWidth=img.width;
	boxPicHeight=img.height;
}

 function showInLightBox(img,path){
 	var box=getId("lightbox");
	pic=getId("lightboxPic");
	pic.src="img/ajax-loader.gif";
	pic.style.height="16px";
	pic.style.width="16px";
	
	var boxPic = new Image();
	var basePath="";
	if(path=="temp")basePath="img/tempgallery/";
	else basePath="img/gallery/";	
	boxPic.name = "thumb.php?imgurl="+basePath+img;
	boxPic.src = "thumb.php?imgurl="+basePath+img;		
	
	pic.style.left=(document.width-16)/2+"px";
	pic.style.top=(window.innerHeight-16)/2+"px";	
	box.style.width=document.width+"px";
	box.style.height=document.height+"px";	
	box.style.display="block";
	
	var intervalID = 0;
	var orH = 16;
	var orW = 16;
	var orTop=0;
	var orLeft=0;	
	
	boxPic.onload = function(){		
		getWidthAndHeight(boxPic);
		pic.src="";
		pic.alt="";
		orTop=pic.offsetTop;
		orLeft=pic.offsetLeft;		
		startInterval();			
	};	
	
	function startInterval(){
		intervalID = setInterval (enlarge, 2);
	}
	
	function enlarge(){
		if (orH < boxPicHeight){
			pic.style.height = orH + 'px';
			pic.style.top = orTop + 'px';
			orH = orH + 20;
			orTop = orTop - 10;			
		}else if(orW < boxPicWidth){
			pic.style.width = orW + 'px';
			pic.style.left = orLeft + 'px';
			orW = orW + 20;
			orLeft = orLeft - 10;			
		}else{
			clearInterval(intervalID);
			pic.src="thumb.php?imgurl="+basePath+img;
			pic.style.left=(document.width-boxPicWidth)/2+"px";
			pic.style.top=(window.innerHeight-boxPicHeight)/2+"px";			
		}
	} 	
 }
 
 function closeFrame(){
 	var box=getId("lightbox");
	box.style.display="none";
	var pic=getId("lightboxPic");
	pic.src="";
 }
 
 //archive functions
 
 function expandArchive(date,arrows){ 	
 	var spans=arrows.getElementsByTagName("span");
	if(spans[0].style.display=="inline"){
		spans[0].style.display="none";
		spans[1].style.display="inline";	
	 	var url="archive.php";
		var params="date="+date;
		div=getId("archive_"+date);
		postScript(url,params);		
	}else if(spans[0].style.display=="none"){
		spans[0].style.display="inline";
		spans[1].style.display="none";
		getId("archive_"+date).innerHTML="";
	}
 }

 function expandArchiveYear(year,arrows){ 	
 	var spans=arrows.getElementsByTagName("span");
	if(spans[0].style.display=="inline"){
		spans[0].style.display="none";
		spans[1].style.display="inline";		
		getId("year_"+year).style.display="block";		
	}else if(spans[0].style.display=="none"){
		spans[0].style.display="inline";
		spans[1].style.display="none";
		getId("year_"+year).style.display="none";
	}
 }