/*
 * Coder: Mario Hartmann [mario@hartmann.net // http://mario.hartmann.net/]
 * Copyright: 2006, Photocolor Kreuzlingen AG
 * Original version: Javascipt
 * Original product name: Photocolor Kreuzlingen AG  -PhotoProducts-
 * Official site: http://www.Ifolor.ch
 * Last updated Date: 11-JAN-2006
 * Derivate works, translation in other languages
 * of this code must retain this copyright notice.
*/
var m_DEOpacity		= 0;			// default ddelement opacity
var m_DEColor			= "#ff0000";	// default dropelement color
var m_DEHOpacity		= 0.4;			// default dropelement highlight opacity
var m_DEHColor			= "#00ff00";	// default dropelement highlight color
// -----------------------------------------------------
var m_DDBColor			=  "#d4d4d4" ;//"#E7EDFB";	// dragelement background default color  
var m_DDBInUseColor	= "#7d2511"; //"#2E7515";	// dragelement background  in use color 
var m_DDBOpacity		= 1;			// dragelement border opacity
var m_DDBBorderSize		= 4;			// dragelement border size
// -----------------------------------------------------
var m_DDH								// drag drop helper (transparent pixel image)
var m_DDB;								// global current draggelement border (background image)
var m_TI;								// text editor (input) layer
var m_TIB;								// text editor (input) textbox
var m_TOOLS;							// image (on image) tool box;
var m_LS;								// Loading Screen DD layer element;
var m_preLoadedImages	= new Array();	// to be preloaded images array
var m_dragImages		= new Array();	// array of all drag elements
//
// startup functions
//
window.onUnload=ShowLoading;
//
//
// -----------------------------------------------------
// additions to the drag drop lib
// -----------------------------------------------------dd-lib+
//
DDObj.prototype.setTitle = function(newTitle){this.nimg.title = newTitle;};

// -----------------------------------------------------dd-lib
//
function my_PickFunc() 
{
	if (!dd.obj.pck){return;}
	Debug('my_PickFunc');
	if (dd.obj.pck.isDragImage)
	{
		Debug('isDragImage');
		if (dd.obj.pck.onclickEvent)
		{
			eval(dd.obj.pck.onclickEvent);
			return;
		}
		if (dd.obj.copies.length ==0) 
		{
			dd.obj.copy();
			dd.obj.copies[0].resizeTo(dd.obj.w, dd.obj.h);
			dd.obj.copies[0].moveTo(dd.obj.x, dd.obj.y);
		}
		else
			dd.obj.copies[0].show();
		
		if (m_DDB == null)
		{
			DDH().copy();
			m_DDB = DDH().copies[ DDH().copies.length-1];
			m_DDB.hide();
			m_DDB.setOpacity(m_DDBOpacity);
		}
		
		m_DDB.moveTo(dd.obj.x - m_DDBBorderSize, dd.obj.y - m_DDBBorderSize) ;
		m_DDB.resizeTo(dd.obj.w + m_DDBBorderSize *2, dd.obj.h + m_DDBBorderSize *2) ;
		
		if (dd.obj.pck.inUse > 0) 
			m_DDB.setBgColor(m_DDBInUseColor);
		else
			m_DDB.setBgColor(m_DDBColor);
			
		dd.obj.maximizeZ();
		m_DDB.setZ(dd.obj.z-1);
		m_DDB.show();
					
	}
	else if (dd.obj.pck.isText)
	{
		ShowTextInputBox(dd.obj);
		dd.obj = DDH();
	}
	else if (dd.obj.pck.isImage)
	{
		ToggleTools(dd.obj.pck);
		dd.obj =  DDH();
		//pageDD = dd.elements[tmpDD.pck.pageId];
		//tmpDD.setZ(pageDD.z+1);
	}
}

// -----------------------------------------------------dd-lib
//
function my_DragFunc() 
{
	if (!dd.obj.pck){return;}
	
	if (dd.obj.pck.isDragImage)
	{
		this.m_DDB.moveTo(dd.obj.x - m_DDBBorderSize, dd.obj.y - m_DDBBorderSize) ;
		_layoutImage = GetLayoutImage(dd.obj);
	
		//_below = dd.obj.getEltBelow(); 
		//if (_below)
		//{
		//Debug('_below:' + _below.name);
		//}
		if(_layoutImage && m_curDLayout)
		{
			if(browser.isSafari || browser.isIE5x || browser.isOpera)
			{
				if (dd.obj.pck.inUse > 0) 
					this.m_DDB.setBgColor(m_DDBInUseColor);
				else
					this.m_DDB.setBgColor(m_DDBColor);
			}
			else
			{	
				m_curDLayout.ddElement.setBgColor(m_DEColor);
				m_curDLayout.ddElement.setOpacity(m_DEOpacity);
			}
		}
		if (_layoutImage)
		{			
			m_curDLayout = _layoutImage;
			if(browser.isSafari || browser.isIE5x || browser.isOpera)
			{
				this.m_DDB.setBgColor(m_DEHColor);
			}
			else
			{	
				m_curDLayout.ddElement.setBgColor(m_DEHColor);
				m_curDLayout.ddElement.setOpacity(m_DEHOpacity);
				dd.obj.setOpacity(1);
			}
		}
		else
		{
			if(browser.isSafari || browser.isIE5x || browser.isOpera) 
			{
				if (dd.obj.pck.inUse > 0) 
					this.m_DDB.setBgColor(m_DDBInUseColor);
				else
					this.m_DDB.setBgColor(m_DDBColor);
			}
			else
			{
				dd.obj.setOpacity(0.8);
			}
			if (m_curDLayout)
			{
				m_curDLayout.ddElement.setBgColor(m_DEColor);
				m_curDLayout.ddElement.setOpacity(m_DEOpacity);
				m_curDLayout = null;
			}
		}
	}
}
// -----------------------------------------------------dd-lib
//
function my_ResizeFunc() {}
// -----------------------------------------------------dd-lib
//
function my_DropFunc() 
{
	if (!dd.obj.pck){return;}
	if (dd.obj.pck.isDragImage)
	{
		if(this.m_curDLayout){this.m_curDLayout.ddElement.setOpacity(m_DEOpacity);}
		//if(ElementDrop(dd.obj.pck))	{HideTools();}
		ElementDrop(dd.obj.pck);
		dd.obj.moveTo(dd.obj.copies[0].x, dd.obj.copies[0].y);
		dd.obj.setOpacity(1);
		dd.obj.copies[0].hide();
		if (this.m_DDB)	{this.m_DDB.hide();}	
	}
}
// -----------------------------------------------------
//
function DDH() 
{
	if (!this.m_DDH) 
		this.m_DDH = dd.elements["DDH"];
	if (!this.m_DDH) 
		alert('drag&drop helper image could not be loaded, please reload this page.');
	return this.m_DDH;
}
// -----------------------------------------------------
//
function OnLoad() {PreloadDDImages();}
// -----------------------------------------------------
//
function PreloadDDImages(){for(n=0;n<dd.elements.length;n++){if (dd.elements && dd.elements[n].is_image){AddPreloadImg(dd.elements[n].src);}}}
// -----------------------------------------------------
//
//
//helper functions
//
//
//
function SetupTextInputBox()
{
	//m_TI = dd.elements["TI"];
	//m_TIB = dd.elements["TIB"];
			//set text input box		
	_tiCnt = GetControl("TI_CNT");
	if (_tiCnt)
		m_TIB.CounterCtl =_tiCnt;

	//ns :first keypress, second keydown
	//ie :first keydown, second keypress
	if (dd.ie) 
	{
		//m_TIB.onkeypress =  UpdateCounter;
		m_TIB.onkeydown = CheckTextInput;
		//m_TIB.onblur= UpdateCounter;
		//m_TIB.onkeyup = UpdateCounter;
	}
	else // ns
	{
		m_TIB.onkeypress = CheckTextInput;
		//m_TIB.onkeydown =  UpdateCounter;
		//m_TIB.onkeyup = UpdateCounter;
		//m_TIB.onblur= UpdateCounter;
	}
}

// -----------------------------------------------------
//
//
function ShowTextInputBox(ddObj)
{
	if (ddObj.pck.isText)
	{
		if (!this.m_TI) {return;}		
		this.m_TI.pckObj =ddObj.pck;
		
		this.m_TI.pckObj.SetuptFontList(GetControl("FontSelector"));
		this.m_TI.pckObj.SetupColorList(GetControl("ColorSelector"));
		
		_posY = GetCookie("m_TI_Y");
		_posX = GetCookie("m_TI_X");
		
		if(_posX == null)
		_posX = (((ddObj.x + this.m_TI.w) < dd.getWndW())? (ddObj.x) : (dd.getWndW() - this.m_TI.w));
		if (_posY==null)
		_posY = (((ddObj.y + this.m_TI.h) < dd.getWndH())? (ddObj.y) : (dd.getWndH() - this.m_TI.h));
		
		this.m_TI.moveTo(_posX ,_posY);
		this.m_TIB.value = this.m_TI.pckObj.textValue;
		this.m_TIB.maxChar = ddObj.pck.maxChar;
		
		this.SetupTextInputBox();
		//this.UpdateCounter();
		
		HideSelectBoxes();

		this.m_TI.maximizeZ();
		this.m_TI.show();
		this.m_TIB.focus();
	}
}
// -----------------------------------------------------
//
//
function CheckTextInput(e)
{
	//ns :first keypress, second keydown
	//ie :first keydown, second keypress
	if (browser.isIE) //ie
		{
			Debug (window.event.keyCode);
			if (window.event.keyCode == 226){return false;}
		}
	else //ns 
		{
		Debug("E.which:" + e.which)
		if(e.which ==124){return false};
		}
		
	if (m_TIB)
	{
		while(m_TIB.value.indexOf("|") >0 )
			m_TIB.value = m_TIB.value.replace(/\|/, "");
		}
}
// -----------------------------------------------------
//
//
function UpdateCounter(e)
{
	if (m_TIB)
	{
		while(m_TIB.value.indexOf("|") >0 )
			m_TIB.value = m_TIB.value.replace(/\|/, "");
		
		if ( m_TIB.value.length >= m_TIB.maxChar)
			m_TIB.value = m_TIB.value.substring(0, m_TIB.maxChar);

		if (m_TIB.CounterCtl)
			m_TIB.CounterCtl.value = m_TIB.maxChar  - m_TIB.value.length ;
	}
}
// -----------------------------------------------------
//
//
function ChangeSize(mode)
{
	Debug("ChangeSize.mode:"+ mode);
	if(mode=='-'){this.m_TI.pckObj.fontZoom=0.9}	
	if(mode=='0'){this.m_TI.pckObj.fontZoom=1}	
	if(mode=='+'){this.m_TI.pckObj.fontZoom=1.1}	
		this.m_TI.pckObj.pckPageEditor.UpdatePage();
}
// -----------------------------------------------------
//
//
function ChangeFont(number)
{

	Debug("ChangeFont.number:"+ number);

	if (this.m_TI.pckObj.pckPageEditor.FontNameList[number]!=this.m_TI.pckObj.fontName)
	{
		this.m_TI.pckObj.fontName = this.m_TI.pckObj.pckPageEditor.FontNameList[number];
		this.m_TI.pckObj.pckPageEditor.UpdatePage();
	}
}
// -----------------------------------------------------
//
//
function ChangeColor(number)
{

	Debug("ChangeColor.number:"+ number);

	if (this.m_TI.pckObj.pckPageEditor.ColorList[number]!=this.m_TI.pckObj.fontColor)
	{
		this.m_TI.pckObj.fontColor = this.m_TI.pckObj.pckPageEditor.ColorList[number];
		this.m_TI.pckObj.pckPageEditor.UpdatePage();
	}
}

// -----------------------------------------------------
//
//
function ChangeAlign(mode)
{
	Debug("ChangeAlign.mode:"+ mode);
	_align=this.m_TI.pckObj.textAlign;
	if(mode=='l'){_align='left'}	
	if(mode=='c'){_align='center'}		
	if(mode=='r'){_align='right'}	
	
	if (_align != this.m_TI.pckObj.textAlign)
	{
		this.m_TI.pckObj.textAlign = _align;
		this.m_TI.pckObj.pckPageEditor.UpdatePage();
	}
}
// -----------------------------------------------------
//
//
function UpdateTextInput()
{
	while(m_TIB.value.indexOf("|") >-1 )
		m_TIB.value = m_TIB.value.replace(/\|/, "");
	
	SetCookie("m_TI_X",this.m_TI.x);
	SetCookie("m_TI_Y",this.m_TI.y);

	this.m_TI.hide();
	this.m_TIB.blur();
	ReShowSelectBoxes();
	
	//if ( m_TIB.value.length >= m_TIB.maxChar)
	//	m_TIB.value = m_TIB.value.substring(0, m_TIB.maxChar);
	
	if(this.m_TI.pckObj.textValue != m_TIB.value)
	{
		this.m_TI.pckObj.textValue = this.m_TIB.value;
		this.m_TI.pckObj.pckPageEditor.UpdatePage();
	}
}
// -----------------------------------------------------
//
//
function CancelTextInput()
{
	SetCookie("m_TI_X",this.m_TI.x);
	SetCookie("m_TI_Y",this.m_TI.y);

	this.m_TI.hide();
	this.m_TIB.blur();
	ReShowSelectBoxes();
}

// -----------------------------------------------------
//
//
function GetPostBackValue(pck)
{
	_valHolder =  GetControl("_" +pck.elementId);
	//DebugPckLayoutObj(pck);
	_retVal = encodeURIpck(_valHolder.value);
	return _retVal;
}
// -----------------------------------------------------
//
//
function DoAllFontChange(fontName,fontZoom)
{
	for(var _ePE in m_PE)
		DoPageFontChange(fontName,fontZoom,m_PE[_ePE]);
}
// -----------------------------------------------------
//
//
function DoPageFontChange(fontName,fontZoom,pckPageEditor)
{
	for(var _tPE in  pckPageEditor.LayoutTextList) 
	{
		_pckLt = pckPageEditor.LayoutTextList[_tPE];
		if(fontName != null) { _pckLt.fontName = fontName;}
		if(fontZoom != null) { _pckLt.fontZoom = fontZoom;}
		//if(fontZoom != null || fontName != null) _pckLt.SetPostBack();
	}
		pckPageEditor.UpdatePage();	
}
// -----------------------------------------------------
//
//
// m_PH_<pageDDObjName>		: pagehandler base address
// m_P_<pageDDObjName>´		: pageId
// m_DI_<pageDDObjName>		:drop images array
// m_DT_<pageDDObjName>		:drop texte array
function GeneratePreviewSrc (pageDD)
{

	_src= eval("m_PH_"+pageDD.name);
	_pageIdent = eval("m_P_"+pageDD.name);
	
	_layoutImages = eval("m_DI_"+pageDD.name);
	_layoutTexte = eval("m_DT_"+pageDD.name);

	_layoutCtl = GetControl("_" + pageDD.name);
	
	_src += "&L=" + _layoutCtl.value ;
	
	for(var i = 0; i < _layoutImages.length; i++) 
	{
		_pck = dd.elements[ _layoutImages[i]].pck;
		_src+= "&" + _pck.elementId.replace(_pageIdent,"")
			 + "=" + GetPostBackValue(_pck);
	}
	for(var i = 0; i < _layoutTexte.length; i++) 
	{
		_pck = dd.elements[ _layoutTexte[i]].pck;
		_src+="&" +_pck.elementId.replace(_pageIdent,"")
		     +"=" + GetPostBackValue(_pck);
	}
	_src+="&time="+ new Date().getTime() % 10000;
	
	return _src;						
}
// -----------------------------------------------------
//
//
function ToggleDDGroup(elemName,groupArray)
{
		for(var i = 0; i < groupArray.length; i++) 
		dd.elements[groupArray[i]].hide();

		dd.elements[elemName].show();
}
// -----------------------------------------------------
//
//
function ToggleTools(pckLi)
{
	if (pckLi.sizeX <= 0 || pckLi.srcUrl==''){return;}
	if (!m_TOOLS){return;}
	if (m_TOOLS.visible && m_TOOLS.pckLi && m_TOOLS.pckLi == pckLi)
		m_TOOLS.hide();
	else
	{
		this.m_TOOLS.pckLi = pckLi;

		pckLi.UpdateQuality();
		
		this.m_TOOLS.moveTo(pckLi.ddElement.x,pckLi.ddElement.y - m_TOOLS.h-5);
		this.m_TOOLS.maximizeZ();
		this.m_TOOLS.show();
	}
}
// -----------------------------------------------------
//
//
function HideTools()
{
	this.m_TOOLS.hide();
}

// -----------------------------------------------------
//
//
function DoTool(toolType)
{
	_pck = m_TOOLS.pckLi;
	_pck.ImageEdit(toolType);
}
// -----------------------------------------------------
//
//
function ReSetDragBorder(pck)
{
	//DebugPckLayoutObj(pck);
	if ( pck.srcUrl.length > 0 )
	{
		for(var _gil in  m_GIL) 
		{
			_pckGallery =  m_GIL[_gil];
			for(var b = 0; b < _pckGallery.AllImageList.length; b++) 
			{
				if (_pckGallery.AllImageList[b].srcUrl ==  pck.srcUrl)
				{
					_pckGallery.AllImageList[b].inUse --;
					break;
				}
			}
		}
		
/*		for(var i = 0; i < m_dragImages.length; i++) 
		{
		if (!m_dragImages[i].pck){break;}
		if (m_dragImages[i].pck.srcUrl == pck.srcUrl)
			{
				m_dragImages[i].pck.inUse --;
				if (m_dragImages[i].pck.inUse <=0){m_dragImages[i].ddBG.setBgColor(m_DDBColor);}
				break;
			}
		}
*/	}
}

// -----------------------------------------------------
//
//
function PckDragImage(elementId, srcUrl, sizeX,sizeY,inUse) 
{
	this.elementId = elementId;
	this.x = 0;
	this.y = 0;
	this.w = 10;
	this.h = 10;
	this.inUse = parseInt(inUse);

	this.sizeX = sizeX;
	this.sizeY = sizeY;

	this.isDragImage = true;
	this.srcUrl = srcUrl;
	//DebugPckLayoutObj(this);
	return this;
}

// -----------------------------------------------------
//
//
//debug functions 
//
//
//
function DebugPckLayoutObj(pck)
{
	if (m_debug == true)
	{
		Debug("DebugPckLayoutObj");
		if (!pck) {Debug("no PCK");return;}

		Debug(".elementId=" + pck.elementId);
		Debug(".x=" + pck.x);
		Debug(".y=" + pck.y);
		Debug(".w=" + pck.w);
		Debug(".h=" + pck.h);
		Debug(".a=" + pck.a);
		if (pck.isGalleryImage)
		{
			Debug(".isGalleryImage=" + pck.isGalleryImage);
			Debug(".thumbBase=" + pck.thumbBase);
			Debug(".title=" + pck.title);
			Debug(".thumbWidth=" + pck.thumbWidth);
			Debug(".thumbHeight=" + pck.thumbHeight);
		}
		if (pck.isDragImage )
		{
			Debug(".isDragImage=" + pck.isDragImage);
			Debug(".srcUrl=" + pck.srcUrl);
			Debug(".sizeX=" + pck.sizeX);
			Debug(".sizeY=" + pck.sizeY);
			Debug(".inUse=" + pck.inUse);
			
			Debug(".ddElement.name:"+ pck.ddElement.name);
		}
		if (pck.isText)
		{
			Debug(".pageId=" + pck.pageId);
			Debug(".isText=" + pck.isText);
			Debug(".textValue=" + pck.textValue);
			Debug (".maxChar=" + pck.maxChar);
			Debug(".fontName=" + pck.fontName);
			Debug(".fontSize=" + pck.fontSize);
			Debug(".fontZoom=" + pck.fontZoom);
			Debug(".fontColor=" + pck.fontColor);

			Debug(".textAlign=" + pck.textAlign);
			Debug(".textDeco=" + pck.textDeco);
		}
		
		if (pck.isImage)
		{
			Debug(".pageId=" + pck.pageId);
			Debug(".isImage=" + pck.isImage);
			Debug(".srcUrl=" + pck.srcUrl);
			Debug(".cropX=" + pck.cropX);
			Debug(".cropY=" + pck.cropY);
			Debug(".cropW=" + pck.cropW);
			Debug(".cropH=" + pck.cropH);
			Debug(".rotate=" + pck.rotate);
			Debug(".sizeX=" + pck.sizeX);
			Debug(".sizeY=" + pck.sizeY);
			Debug(".qGood=" + pck.qGood);
			Debug(".qMed=" + pck.qMed);
		}
		Debug("--");
	}
}
// -----------------------------------------------------
//
//
function SetLayout(theControl,pageId,layoutId,hotSwap)
{
	Debug("layoutId:"+layoutId);
	
	m_PE[pageId].SetLayoutId (layoutId);
	if (hotSwap)
	{
		//m_PE[pageId].UpdatePageImage();
		m_PE[pageId].UpdatePage();
	}

	return true;
}
// -----------------------------------------------------
//
//
function ShowError(ddMsgBoxId,text,title)
{
	
	ShowDDMsgBox(ddMsgBoxId,null,false);
}
//function ShowDDMsgBox(ddMsgBoxId,ddMsgBoxBgId,returnVal)
// -----------------------------------------------------WF
//
//
function ShowLoading()
{
	if (m_LS)
	{
		HideSelectBoxes();
		if(this.HideActiveXControls!=null){HideActiveXControls();}
		m_LS.resizeTo(dd.getWndW(),dd.getWndH());
		m_LS.maximizeZ();
		m_LS.show();
	}
}

// -----------------------------------------------------WF
//
//
function HideLoading()
{
	if (m_LS)
	{
		m_LS.hide();
		ReShowSelectBoxes();
		_errBox = dd.elements['ErrorMsgBox'];
		if (!(_errBox && _errBox.visible))
		{
			if(this.ReShowActiveXControls!=null){ReShowActiveXControls();}
		}
	}
}

// -----------------------------------------------------
// end
// -----------------------------------------------------
