﻿// JScript File

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;


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;
}
	
function selectImage(e)
{
	if(document.all && !operaBrowser)
	    e = event;
	var obj = this.parentNode;
	obj = this;
        
    if(activeImage)
		activeImage.setAttribute('mainDivName', 'imageBox');
	obj.setAttribute('mainDivName', 'imageBoxHighlighted');
	activeImage = obj;
	readyToMove = true;
	moveTimer=0;
	
	tmpLeft = e.clientX + Math.max(document.body.scrollLeft,document.documentElement.scrollLeft) - document.getElementById("_BarTab_LeftSetting_Main").clientWidth - 5;
	tmpTop = e.clientY + Math.max(document.body.scrollTop,document.documentElement.scrollTop) - document.getElementById("divHeaderMemberNew").clientHeight - 38;
	
	startMoveTimer();
	
	return false;	
}

function startMoveTimer(){
	if(moveTimer>=0 && moveTimer<10){
		moveTimer++;
		setTimeout('startMoveTimer()',15);
	}
	if(moveTimer==10){
		getDivCoordinates();
		var subElements = dragDropDiv.getElementsByTagName('DIV');
		subElements = dragDropDiv.getElementsByTagName('LI');
		if(subElements.length>0)
			dragDropDiv.removeChild(subElements[0]);
	
		dragDropDiv.style.display='block';
		var newDiv = activeImage.cloneNode(true);
		newDiv.setAttribute('mainDivName', 'imageBox');
		newDiv.id='';
		dragDropDiv.appendChild(newDiv);
		
        subElements1 = dragDropDiv.getElementsByTagName('A');
        if(subElements1.length > 0)
        {    subElements1[0].title = "";}
        subElements1 = dragDropDiv.getElementsByTagName('IMG');
        if(subElements1.length > 0)
            { subElements1[0].alt = "";subElements1[0].title = "";}
		
		if(!BarTab.Browser.IE)
		{
		tmpTop = tmpTop + 15;
		tmpLeft = tmpLeft + 5;
		}
		dragDropDiv.style.top = tmpTop + 'px';
		dragDropDiv.style.left = tmpLeft + 'px';
	}
	return false;
}
function getElementPosition(theElement){

  var posX = 0;
  var posY = 0;
              
  while(theElement != null){
    posX += theElement.offsetLeft;
    posY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }
                        		      
   return {x:posX,y: posY};

}
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);
		ChangeSequences(activeImage, destinationObject);
		//TabletModules.ReArrange.ChangeSequence();
		activeImage.setAttribute("mainDivName", "imageBox");
		activeImage = false;
		destinationObject=false;
		getDivCoordinates();
	}
	else
	{
	    if(activeImage && BarTab.Browser.IE)
	    {
	        if(document.getElementById('divPaging'))
	        {
	            var pagingDivLeftPos = 0;
	            var pagingDivTopPos = 0;
	            var pagingDivRightPos = 0;
	            var pagingDivBottomPos = 0;
	            var dragDropObjLeftPos = 0;
	            var dragDropObjTopPos = 0;
    	        
	            var objDragDrop = document.getElementById('dragDropContent');
	            dragDropObjLeftPos = getLeftPos(document.getElementById('dragDropContent'));
	            dragDropObjTopPos = getTopPos(document.getElementById('dragDropContent'));
    	        
	            pagingDivLeftPos = getLeftPos(document.getElementById('divPaging'));
	            pagingDivTopPos = getTopPos(document.getElementById('divPaging'));
	            pagingDivRightPos = getLeftPos(document.getElementById('divPaging')) + document.getElementById('divPaging').offsetWidth;
	            pagingDivBottomPos = getTopPos(document.getElementById('divPaging')) + document.getElementById('divPaging').offsetHeight;
    	        if(((dragDropObjLeftPos >= pagingDivLeftPos) && (dragDropObjLeftPos <= pagingDivRightPos)) && 
	                ((dragDropObjTopPos >= pagingDivTopPos) && (dragDropObjTopPos <= pagingDivBottomPos)))
	            {
	                arrPagingLink = document.getElementById('divPaging').getElementsByTagName('a');
	                if(arrPagingLink)
	                {
	                    var pagingLinkLeftPos = 0;
	                    var pagingLinkTopPos = 0;
	                    var pagingLinkRightPos = 0;
	                    var pagingLinkBottomPos = 0;
	                    var objPagingLink = null;
	                    for(var k=0; k<arrPagingLink.length; k++)
	                    {
	                        objPagingLink = arrPagingLink[k];
	                        pagingLinkLeftPos = getLeftPos(objPagingLink);
	                        pagingLinkTopPos = getTopPos(objPagingLink);
	                        pagingLinkRightPos = getLeftPos(objPagingLink) + objPagingLink.offsetWidth;
	                        pagingLinkBottomPos = getTopPos(objPagingLink) + objPagingLink.offsetHeight;
	                        if(((dragDropObjLeftPos >= pagingLinkLeftPos) && (dragDropObjLeftPos <= pagingLinkRightPos)) && 
	                            ((dragDropObjTopPos >= pagingLinkTopPos) && (dragDropObjTopPos <= pagingLinkBottomPos)))
	                        {
	                            var pIndex = objPagingLink.innerHTML;
	                            pIndex -= 1;
	                            TabletModules.ReArrange.MoveToPage(pIndex);
	                        }
	                    }
	                }
	            }
	        }
	    }
	}
	dragDropDiv.innerHTML = '';
	return false;
}

function ChangeSequences(active, destination)
{
    var objects = TabletModules.ReArrange.ContentDiv.getElementsByTagName('LI');
    var oldIndex = active.getAttribute('sequence');
    var newIndex = destination.getAttribute('sequence');
    if(newIndex == objects.length)
        newIndex = newIndex - 1;
    var arrPhotoId = '';
    var arrSequence = '';
    for(var i=0; i<TabletModules.ReArrange.PageSize; i++)
    {
        if(objects[i + 5])
            objects[i + 5].setAttribute('sequence', i);
    }
    for(var i=0; i<TabletModules.ReArrange.PageSize; i++)
    {
        if(objects[i + 5])
        {
            if(objects[i + 5].getAttribute('pId'))
            {
                if(arrPhotoId != '')
                {
                    arrPhotoId = arrPhotoId + ',' + objects[i + 5].getAttribute('pId');
                    arrSequence = arrSequence + ',' + objects[i + 5].getAttribute('sequence');
                }
                else 
                {
                    arrPhotoId = objects[i + 5].getAttribute('pId');
                    arrSequence = objects[i + 5].getAttribute('sequence');
                }
            }
            else
            {
                break;
            }
        }
    }
    TabletModules.ReArrange.Start = 1;
    TabletModules.ReArrange.ChangeSequence(arrPhotoId, arrSequence);
}

function dragDropMove(e)
{
	if(moveTimer==-1)
	    return;
	if(document.all && !operaBrowser)
	    e = event;
	var leftPos = e.clientX + document.documentElement.scrollLeft - eventDiff_x - document.getElementById("_BarTab_LeftSetting_Main").clientWidth - 5;
	var topPos = e.clientY + document.documentElement.scrollTop - eventDiff_y - document.getElementById("divHeaderMemberNew").clientHeight - 38;
	if(!BarTab.Browser.IE)
	{
		leftPos = leftPos + 15;
	    topPos = topPos + 5;
	}
		
	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 = TabletModules.ReArrange.ContentDiv.getElementsByTagName('LI');
    for(var no=0;no<divs.length;no++)
    {	
	    if(divs[no].getAttribute('mainDivName')=='imageBox' || divs[no].getAttribute('mainDivName')=='imageBoxHighlighted' && divs[no].id)
	    {
	        divXPositions[divs[no].id] = getLeftPos(divs[no]) - document.getElementById("_BarTab_LeftSetting_Main").clientWidth - 5;
		    divYPositions[divs[no].id] = getTopPos(divs[no]) - document.getElementById("divHeaderMemberNew").clientHeight - 38;			
		    divWidth[divs[no].id] = divs[no].offsetWidth;			
		    divHeight[divs[no].id] = divs[no].offsetHeight;			
	    }		
    }
}

function saveImageOrder()
{
	var orderString = "";
	var objects = TabletModules.ReArrange.ContentDiv.getElementsByTagName('DIV');
	objects = TabletModules.ReArrange.ContentDiv.getElementsByTagName('LI');
    for(var no=0;no<objects.length;no++){
		if(objects[no].getAttribute('mainDivName')=='imageBox' || objects[no].getAttribute('mainDivName')=='imageBoxHighlighted'){
			if(orderString.length>0)
			    orderString = orderString + ',';
			orderString = orderString + objects[no].id;
		}			
	}
	document.getElementById('debug').innerHTML = 'This is the new order of the images(IDs) : <br>' + orderString;
}

function InitGallery()
{
    var divs = TabletModules.ReArrange.ContentDiv.getElementsByTagName('LI');
    for(var no=0;no<divs.length;no++)
    {
	    if(divs[no].getAttribute('name')=='imageBox_theImage' || divs[no].getAttribute('name')=='imageBox_label')
	        divs[no].onmousedown = selectImage;
    }
	
	var insObj = document.getElementById('insertionMarker');
	var images = insObj.getElementsByTagName('IMG');
	TabletModules.ReArrange.ContentDiv.onselectstart = cancelEvent;
	TabletModules.ReArrange.ContentDiv.ondragstart = cancelEvent;
	TabletModules.ReArrange.ContentDiv.onmouseup = dragDropEnd;
	TabletModules.ReArrange.ContentDiv.onmousedown = mousedownevent;
	TabletModules.ReArrange.ContentDiv.onmousemove = dragDropMove;
	
	window.onresize = getDivCoordinates;
	
	dragDropDiv = document.getElementById('dragDropContent');
	insertionMarker = document.getElementById('insertionMarker');
	getDivCoordinates();
}

function mousedownevent(e)
{
    if(document.all && !operaBrowser)
	    e = event;
	//if(e)
	//{
	//    e.cancelBubble = true;
    //    if (e.stopPropagation) {
     //       e.stopPropagation();
     //   }
	//}
}