var operaBrowser = false;
if(navigator.userAgent.indexOf('Opera')>=0)operaBrowser=1;
var MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false;
var navigatorVersion = navigator.appVersion.replace(/.*?MSIE (\d\.\d).*/g,'$1')/1;

var _del_img_fnc = "del_img";
var _check_imgs_fnc = "check_imgs";

function cancelEvent()
{	return false;
}
var activeImage = false;
var readyToMove = false;
var moveTimer = -1;
var dragDropDiv;
var insertionMarker;
	
var offsetX_marker = -3;	// offset X - element that indicates destinaton of drop
var offsetY_marker = 0;	// offset Y - element that indicates destinaton of drop

var firefoxOffsetX_marker = -3;
var firefoxOffsetY_marker = -2;

if(navigatorVersion<6 && MSIE){	/* IE 5.5 fix */
	offsetX_marker-=23;
	offsetY_marker-=10;
}
	
var destinationObject = false;

var divXPositions = new Array();
var divYPositions = new Array();
var divWidth = new Array();
var divHeight = new Array();
		
var tmpLeft = 0;
var tmpTop = 0;
	
var eventDiff_x = 0;
var eventDiff_y = 0;
		
function getTopPos(inputObj)
{ var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML'){
  		returnValue += (inputObj.offsetTop - inputObj.scrollTop);
  		if(document.all)returnValue+=inputObj.clientTop;
  	}
  } 
  return returnValue;
}
function getLeftPos(inputObj)
{ var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML'){
  		returnValue += inputObj.offsetLeft;
  		if(document.all)returnValue+=inputObj.clientLeft;
  	}
  }
  return returnValue;
}
	
// una cosa mia
function delete_img(div_name, file, nid)
{ if (confirm("Sei sicuro di voler eleminare questa immagine?\nL'eliminazione è permanente!"))
  { var obj = document.getElementById(div_name);
    obj.parentNode.removeChild(obj);
	if (activeImage == obj) activeImage=false;
	initGallery();
    $('msgs').load("?section=fnc&fnc="+_del_img_fnc+"&file="+escape(file)+"&qs=");
    //$('gallery_info').load("?section=fnc&fnc="+_check_imgs_fnc+"&nid="+nid+"&qs=");
  }
}
	
function save_desc()
{ if(activeImage)
     { desc_obj = document.getElementById('description');
    if (desc_obj != undefined)
     document.getElementById(activeImage.id+'_img_lbl').innerHTML=desc_obj.value;
  }
  document.getElementById('descr_div').innerHTML= "";
  document.getElementById('msgs').innerHTML= "Commento aggiornato";
}
	
function descr_html(desc)
{ var o = "<div class=\"filter_div\"><div class=\"filter_div_in\">";
  o = o + "<span class=\"title_blu\">Scrivi un commento alla fotografia</span><br /><table width='100%' cellspacing='0' cellpadding='0'><tr><td align='left' valign='top'><textarea onblur=\"javascript:save_desc()\" class=\"\" id=\"description\" name=\"description\" style=\"width:320px;height:32px\">"+desc+"</textarea></td><td align='left' valign='middle'><input type=\"button\" class=\"button\" value=\"Ok\" onclick=\"save_desc()\"/></td></tr></table>";
 /*o = o + "<script type=\"text/javascript\">\ndocument.getElementById('description').focus()\n</script>\n";*/
 o = o + "</div></div><div class=\"filter_bottom_div\"><div class=\"filter_bottom_div_in\"></div></div><br />\n";
 return o;
}
	
function selectImage(e)
{ if(document.all && !operaBrowser)e = event;
	var obj = this.parentNode;
	var desc_obj;
	
	if(activeImage)
	{ // Se prima c'era un'immagine selezionata allora prende il lavore della descrizione e la salva
	  //desc_obj = document.getElementById('description');
	  //if (desc_obj != undefined)
	  // document.getElementById(activeImage.id+'_img_lbl').innerHTML=desc_obj.value;
	  save_desc();
      if (activeImage.className.indexOf('Main') != -1)
	   activeImage.className='imageBoxMain';
	  else
	   activeImage.className='imageBox';
	}
    if (obj.className.indexOf('Main') != -1)
	 obj.className='imageBoxHighlightedMain';
	else
	 obj.className='imageBoxHighlighted';
	//obj.className = 'imageBoxHighlighted';
	activeImage = obj;
	readyToMove = true;
	moveTimer=0;
	
	tmpLeft = e.clientX + Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
	tmpTop = e.clientY + Math.max(document.body.scrollTop,document.documentElement.scrollTop);
	
	startMoveTimer();	
	
	// Qui di seguito modifiche per l'edit box
	////document.getElementById('description').value=document.getElementById(this.id+'_lbl').innerHTML;
	//document.getElementById('descr_div').innerHTML=descr_html(document.getElementById(this.id+'_lbl').innerHTML);
	//document.getElementById('description').focus()
	return false;	
}

function get_act_main_image()
{	var act = false;
	var divs = document.getElementsByTagName('DIV');
	for(var no=0;no<divs.length;no++){	
		if(divs[no].className=='imageBoxMain' || divs[no].className=='imageBoxHighlightedMain'){
			act = divs[no];
		}
	}
	return act;
}
// anche qui funzione custom
function selectMainImage(e)
{	if(document.all && !operaBrowser)e = event;
	var divs = document.getElementsByTagName('DIV');
	for(var no=0;no<divs.length;no++){	
		if(divs[no].className=='imageBoxMain'){
			divs[no].className ='imageBox'
		}
		else
		if(divs[no].className=='imageBoxHighlightedMain'){
			divs[no].className ='imageBoxHighlighted'
		}
	}
	var obj = this.parentNode;
	var desc_obj;
	
	if(activeImage)
	{ // Se prima c'era un'immagine selezionata allora prende il lavore della descrizione e la salva
	  //desc_obj = document.getElementById('description');
	  //if (desc_obj != undefined)
	  // document.getElementById(activeImage.id+'_img_lbl').innerHTML=desc_obj.value;
	  save_desc();
	  //activeImage.className='imageBox';
	}
    obj.className='imageBoxHighlightedMain';
	activeImage = obj;
	readyToMove = false;
	moveTimer = -1;
	
	// Qui di seguito modifiche per l'edit box
	//document.getElementById('descr_div').innerHTML=descr_html(document.getElementById(this.id+'_lbl').innerHTML);
	//document.getElementById('description').focus()
	return false;
}

function startMoveTimer(){
	if(moveTimer>=0 && moveTimer<10){
		moveTimer++;
		setTimeout('startMoveTimer()',15);
	}
	if(moveTimer==10){
		getDivCoordinates();
		var subElements = dragDropDiv.getElementsByTagName('DIV');
		if(subElements.length>0){
			dragDropDiv.removeChild(subElements[0]);
		}
	
		dragDropDiv.style.display='block';
		var newDiv = activeImage.cloneNode(true);
		//newDiv.className='imageBox';	
		newDiv.id='';
		dragDropDiv.appendChild(newDiv);
		
		dragDropDiv.style.top = tmpTop + 'px';
		dragDropDiv.style.left = tmpLeft + 'px';
	}
	return false;
}
	
function dragDropEnd()
{	readyToMove = false;
	moveTimer = -1;
	dragDropDiv.style.display='none';
	insertionMarker.style.display='none';
	
	if(destinationObject && destinationObject!=activeImage){
		var parentObj = destinationObject.parentNode;
		parentObj.insertBefore(activeImage,destinationObject);
        if (activeImage.className.indexOf('Main') != -1)
	     activeImage.className='imageBoxMain';
	    else
	     activeImage.className='imageBox';
		activeImage = false;
		destinationObject=false;
		getDivCoordinates();
	}
	return false;
}

function dragDropMove(e)
{	if(moveTimer==-1)return;
	if(document.all && !operaBrowser)e = event;
	var leftPos = e.clientX + document.documentElement.scrollLeft - eventDiff_x;
	var topPos = e.clientY + document.documentElement.scrollTop - eventDiff_y;
	dragDropDiv.style.top = topPos + 'px';
	dragDropDiv.style.left = leftPos + 'px';
	
	leftPos = leftPos + eventDiff_x;
	topPos = topPos + eventDiff_y;
	
	if(e.button!=1 && document.all &&  !operaBrowser)dragDropEnd();
	var elementFound = false;
	for(var prop in divXPositions){
		if(divXPositions[prop]/1 < leftPos/1 && (divXPositions[prop]/1 + divWidth[prop]*0.7)>leftPos/1 && divYPositions[prop]/1<topPos/1 && (divYPositions[prop]/1 + divWidth[prop])>topPos/1){
			
			if(document.all ){
				offsetX = offsetX_marker;
				offsetY = offsetY_marker;
			}else{
				offsetX = firefoxOffsetX_marker;
				offsetY = firefoxOffsetY_marker;
			}
			insertionMarker.style.top = divYPositions[prop] + offsetY + 'px';
			insertionMarker.style.left = divXPositions[prop] + offsetX + 'px';
			insertionMarker.style.display='block';	
			destinationObject = document.getElementById(prop);
			elementFound = true;	
			break;	
		}				
	}
	
	if(!elementFound){
		insertionMarker.style.display='none';
		destinationObject = false;
	}
	return false;
}

function getDivCoordinates()
{	var divs = document.getElementsByTagName('DIV');
	for(var no=0;no<divs.length;no++){	
		if(divs[no].className=='imageBox' || divs[no].className=='imageBoxHighlighted' || divs[no].className=='imageBoxMain' || divs[no].className=='imageBoxHighlightedMain'&& divs[no].id){
			divXPositions[divs[no].id] = getLeftPos(divs[no]);			
			divYPositions[divs[no].id] = getTopPos(divs[no]);			
			divWidth[divs[no].id] = divs[no].offsetWidth;			
			divHeight[divs[no].id] = divs[no].offsetHeight;			
		}		
	}
}
	
function saveImageOrder(glr, main_img, form_id)
{	var orderString = "";
	var objects = document.getElementsByTagName('DIV');
	var act_img;
	var act_img_lbl;
	for(var no=0;no<objects.length;no++){
		if(objects[no].className=='imageBox' || objects[no].className=='imageBoxHighlighted' || objects[no].className=='imageBoxMain' || objects[no].className=='imageBoxHighlightedMain'){
			if(orderString.length>0)orderString = orderString + '|';
			act_img = document.getElementById(objects[no].id+'_img');
			act_img_lbl = document.getElementById(objects[no].id+'_img_lbl');
			if ((act_img != undefined) && (act_img_lbl != undefined))
			 orderString = orderString + act_img.rel + '|' + act_img_lbl.innerHTML + '|';
		}
	}
	document.getElementById(glr).value=orderString;
	var act_mi = get_act_main_image();
	if (act_mi.id)
	 document.getElementById(main_img).value=document.getElementById(act_mi.id+'_img').rel;
	//document.getElementById('debug').innerHTML = 'This is the new order of the images(IDs) : <br>' + orderString;
	document.getElementById(form_id).submit();
}
	
function initGallery()
{	var divs = document.getElementsByTagName('DIV');
	for(var no=0;no<divs.length;no++){
		if(divs[no].className=='imageBox_theImage' || divs[no].className=='imageBox_label'){
			divs[no].onmousedown = selectImage;	
			divs[no].ondblclick = selectMainImage;	
		}
	}
	
	var insObj = document.getElementById('insertionMarker');
	var images = insObj.getElementsByTagName('IMG');
	document.body.onselectstart = cancelEvent;
	document.body.ondragstart = cancelEvent;
	document.body.onmouseup = dragDropEnd;
	document.body.onmousemove = dragDropMove;
	
	window.onresize = getDivCoordinates;
	
	dragDropDiv = document.getElementById('dragDropContent');
	insertionMarker = document.getElementById('insertionMarker');
	getDivCoordinates();
}

window.onload = initGallery;
