PortaleOrdiniGruppo/PortalStudio/smartreport/PortalCommonJS.js
2025-03-24 15:28:26 +01:00

1848 lines
73 KiB
JavaScript
Raw Blame History

/* exported standalone multipleSelection dragToolbar SetOnEditProp CopyPaste
manageItems setProperties setProperties_ beginDragSelection dragShadow noDefaultDrag
editPortlet OpenWindow CloseDialogs fade setFading disableSelect enableSelect
addRulersLine togglePreview previewConfirmParms disableAnchor getDocHeight PickItems
*/
//Movimento Tool bar
var container_selection = new Object(); //oggetto che circonda tutti gli elementi selezionati
var not_selected = new Array(); //array di itemHTML non selezionati (<28> l'array dei loro indici)
var undoSequence=new Array(); //array contenente tutti gli oggetti di Undo
var dragObj=new Object();
dragObj.zOrder=1000;
var standalone=false;
var tool=null;
var historyStack=null;
var multipleSelection = false;
var align_delta = 5; //indica la distanza massima tra due oggetti per far comparire le linee di allineamento
var distance_delta = 10; //indica la distanza preferita tra gli oggetti del disegnatore (verra' impostata automaticamente dal disegnatore nel caso di vicinanza < di distance_sensor e >= di align delta
var distance_sensor = 20; //indica la distanza entro la quale due oggetii si 'attraggono'
var canAlign = false;
var clVRRulersLib=null;
var clHRRulersLib=null;
var notimooManager;
var undoItemsMoved=new Array();
var lockItems=false;//Blocca il move dei ctrls
container_selection.e = new Array();
var container_align_h1,container_align_h2,container_align_v1,container_align_v2,container_align_mh,container_align_mv,distance_align_h1,distance_align_h2,distance_align_v1,distance_align_v2,container_distance_v1,container_distance_v2,container_distance_h1,container_distance_h2,shadow_selection;// eslint-disable-line max-len
window.addEvent('domready',function(){
container_selection = new Element ('div',{id:'container_selection'});
notimooManager = new Notimoo({});
container_align_h1 = new Element ('div',{id:'container_align_h1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection);
container_align_h2 = new Element ('div',{id:'container_align_h2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection);
container_align_v1= new Element ('div',{id:'container_align_v1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection);
container_align_v2 = new Element ('div',{id:'container_align_v2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection);
container_align_mh = new Element ('div',{id:'container_align_mh'}).setStyles({'position':'absolute','z-index':4,'background':'transparent url(../portalstudio/images/align_h_dotted.png) repeat-y','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection);
container_align_mv = new Element ('div',{id:'container_align_mv'}).setStyles({'position':'absolute','z-index':4,'background':'transparent url(../portalstudio/images/align_v_dotted.png) repeat-x','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection);
distance_align_h1 = new Element ('div',{id:'distance_align_h1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection);
distance_align_h2 = new Element ('div',{id:'distance_align_h2'}).setStyles({'position':'absolute','z-index':4, 'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection);
distance_align_v1= new Element ('div',{id:'distance_align_v1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection);
distance_align_v2 = new Element ('div',{id:'distance_align_v2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection);
container_distance_v1 = new Element('div',{id:'container_distance_v1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection);
container_distance_v2 = new Element('div',{id:'container_distance_v2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection);
container_distance_h1 = new Element('div',{id:'container_distance_h1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection);
container_distance_h2 = new Element('div',{id:'container_distance_h2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection);
shadow_selection = new Element ('div',{id:'shadow_selection'}).setStyles({'z-index':4}).grab(new Element('p')).inject(container_selection);
if(Ctrl('backcanvas'))
container_selection.inject(Ctrl('backcanvas'))
else
setTimeout(function(){container_selection.inject(Ctrl('backcanvas'))},300)
})
PSAlert.init(window, '');
function dragToolbar(e,obj) {
e = (e) ? e : window.event;
obj = Ctrl(obj);
if(obj) dragObj.css = obj.style;
if(!e || !dragObj.css) return;
//Save mousedown location
//GM commentato
/*dragObj.downX = (e.layerX) ? e.layerX : (e.offsetX) ? e.offsetX : 0;
dragObj.downY = (e.layerY) ? e.layerY : (e.offsetY) ? e.offsetY : 0;*/
//GM
//GM - IE9 e.layerY e e.layerX hanno valori non coerenti e spesso negativi - usargli solo se non esiste offsetX e offsetY
dragObj.downX = (e.offsetX)? e.offsetX: (e.layerX)? e.layerX: 0;//(e.layerX)? e.layerX: (e.offsetX)? e.offsetX: 0;
dragObj.downY = (e.offsetY)? e.offsetY: (e.layerY)? e.layerY: 0;//(e.layerY)? e.layerY: (e.offsetY)? e.offsetY: 0;
//GM
if(arguments.length > 2 && document.all){
dragObj.downX = dragObj.downX + arguments[2];
dragObj.downY = dragObj.downY + arguments[2];
}
//Bring to top of stack
dragObj.css.zIndex = ++dragObj.zOrder;
document.id(document).addEvent("mousemove",dragStart,true);
document.id(document).addEvent("mouseup",dragEnd,true);
(new DOMEvent(e)).stop();
return false;
}
function dragStart(e) {
e = (e)? e: window.event;
var x = (e.pageX) ? e.pageX : (e.clientX) ? e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft : 0;
var y = (e.pageY) ? e.pageY : (e.clientY) ? e.clientY + document.documentElement.scrollTop + document.body.scrollTop : 0;
//Move drag element by the amount the cursor has moved.
var newX=(x-dragObj.downX);
var newY=(y-dragObj.downY);
if(newX<0) newX=0;
if(newY<0) newY=0;
dragObj.css.left=newX+"px";
dragObj.css.top=newY+"px";
if(e.preventDefault) e.preventDefault();
else return false;
}
function dragEnd(/*e*/) {
//Stop capturing mousemove and mouseup events.
document.id(document).removeEvent("mousemove",dragStart,true);
document.id(document).removeEvent("mouseup",dragEnd,true)
}
var OnEditProp=false;
function SetOnEditProp(b){
OnEditProp=b;
}
var deftmp="";
function CopyPaste(a,b) { //Usata in disegnatore standalone
notimooManager.show({
title:'Notification message',
message: (b) ? 'Item/s has been cutted' : ((!a) ? 'Item/s has been pasted' : 'Item/s has been copied'),
sticky : false,
visibleTime:1000,
width:200,
height:40
});
if(a){
if (window.Copy) deftmp=Copy(b);
}else{
if (window.Paste) Paste(deftmp);
}
}
function resetFormOperation(){
document.body.style.cursor="default";
type="Form";
selectForm();
}
function manageItems(e,notResize){
var domevt = new DOMEvent(e);
if(!OnEditProp){
var managed = false;
var target = GetEventSrcElement(e);
if (domevt.code==8 && target && target.tagName.toLowerCase() != "textarea") managed=true;
else if(domevt.code==27) //ESC
resetFormOperation();
else if(domevt.control && domevt.code==86) { (parent.CopyPaste?parent.CopyPaste(false):(window.CopyPaste?window.CopyPaste(false):void(0))); managed=true; }//CTRL-V
else if (domevt.control && domevt.code==90) { Undo(); managed=true; }//CTRL-Z
else if (domevt.control && domevt.code==89) { Redo(); managed=true; }//CTRL-Y
else if (domevt.control && domevt.code==83) { (parent.saveTool?parent.saveTool():(window.save?save():void(0))); managed=true; }//CTRL-S
else if(!Empty(mainitem)){
if (domevt.control && domevt.code==67) { (parent.CopyPaste?parent.CopyPaste(true,false):(window.CopyPaste?window.CopyPaste(true,false):void(0))); managed=true; }//CTRL-C
else if (domevt.control && domevt.code==88) { (parent.CopyPaste?parent.CopyPaste(true,true):(window.CopyPaste?window.CopyPaste(true,true):void(0))); managed=true; }//CTRL-X
else {
switch(domevt.code){
case 46 : //DEL
// gestionce canc su elemento missing
var itm = itemsHTML[getItemsHTMLIndex(Strtran(mainitem.id,"shadow","item"))];
var msg;
if(itm.isMissing){
var model = getModelFromZone(Strtran(itm.zone,"content","")).model;
msg = "Do you want to remove whole "
if(model=="table")
msg+="column";
else
msg+="row";
msg+="?";
showMessageConfirm(msg,"deletemissing",{alias:itm.fieldDet.alias, zone:Strtran(itm.zone,"content","")});
}
else{
msg = 'Are you sure to remove elements? Only selected elements -not others related- will be removed!';
showMessageConfirm(msg,"delete");
}
managed=true;
break;
case 38 : // UP
deltax=0
deltay=0
newy=mainitem.offsetTop
moveItems("up",e,notResize)
managed=true;
break
case 39 : // RIGHT
deltax=0
deltay=0
moveItems("right",e,notResize)
managed=true;
break
case 40 : // DOWN
deltax=0
deltay=0
moveItems("down",e,notResize)
managed=true;
break
case 37 : // LEFT
deltax=0
deltay=0
moveItems("left",e,notResize)
managed=true;
break
}
}
EmptyRefLines();
addRulersLines();
}
if (managed) domevt.stop();
} else { //si puo' salvare sempre anche dentro agli input!!
if (domevt.control && domevt.code==83) { (parent.saveTool?parent.saveTool():(window.save?save():void(0))); domevt.stop(); }//CTRL-S
}
}
var i_i=0
function setProperties(e){
if(!OnEditProp){
i_i++
if(index!=null)
switch(GetKeyCode(e)){
case 38 : case 39 : case 40 : case 37 :
setTimeout("setProperties_("+i_i+")",200)
break
}
}
}
function setProperties_(i){
if(i==i_i){
Properties()
if(typeof(drawLinks)!='undefined'){drawLinks(true);moveLinks();}
}
}
function beginDragSelection(e){
if(typeof(hideProperties)!='undefined') hideProperties('properties')
var dragstyle=Ctrl("drag").style
var canvas=Ctrl("canvas")
e = (e) ? e : window.event;
var x = (e.pageX)? e.pageX: (e.clientX)? e.clientX: 0;
var y = (e.pageY)? e.pageY: (e.clientY)? e.clientY: 0;
if (document.all) { x += window.pageXOffset; y += window.pageYOffset; }
x = x - (parseInt(Ctrl("backcanvas").offsetLeft) + parseInt(Ctrl("canvas").offsetLeft)) + parseInt(Ctrl("backcanvas").scrollLeft+document.body.scrollLeft)
y = y - (parseInt(Ctrl("backcanvas").offsetTop) + parseInt(Ctrl("canvas").offsetTop)) + parseInt(Ctrl("backcanvas").scrollTop+document.body.scrollTop)
dragstartx=x
dragstarty=y
// mostra il rettangolo di drag
dragstyle.visibility="visible"
dragstyle.top=y+'px';
dragstyle.left=x+'px';
dragstyle.width=0
dragstyle.height=0
// installa il gestore del mousemove
canvas.onmousemove=continueDragSelection
canvas.onmouseup=endDragSelection
// blocca la propagazione
cancelEvent(e)
}
function noDefaultDrag(e){
// blocca la propagazione
e = (e) ? e : window.event;
if(e.preventDefault)e.preventDefault()
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
e.returnValue=false
}
function continueDragSelection(e){
var dragstyle=Ctrl("drag").style
e = (e) ? e : window.event;
var x = (e.pageX)? e.pageX: (e.clientX)? e.clientX: 0;
var y = (e.pageY)? e.pageY: (e.clientY)? e.clientY: 0;
x = parseInt(x) - (parseInt(Ctrl("backcanvas").offsetLeft) + parseInt(Ctrl("canvas").offsetLeft)) + parseInt(Ctrl("backcanvas").scrollLeft+parseInt(Ctrl('canvas').scrollLeft))
y = parseInt(y) - (parseInt(Ctrl("backcanvas").offsetTop) + parseInt(Ctrl("canvas").offsetTop)) + parseInt(Ctrl("backcanvas").scrollTop+parseInt(Ctrl('canvas').scrollTop))
// muove il rettangolo di drag
if (x<dragstartx ){
dragstyle.left=x+'px';
dragstyle.width=dragstartx-x+'px';
}else{
dragstyle.left=dragstartx+'px';
dragstyle.width=x-dragstartx+'px';
}
if (y<dragstarty){
dragstyle.top=y+'px';
dragstyle.height=dragstarty-y+'px';
} else {
dragstyle.top=dragstarty+'px';
dragstyle.height=y-dragstarty+'px';
}
// blocca la propagazione
cancelEvent(e)
}
function endDragSelection(e){
var drag=Ctrl("drag")
if (drag.offsetWidth <= 2 && drag.offsetHeight <= 2){
selectForm()
} else {
findDragItems(e,drag.offsetTop,drag.offsetLeft,drag.offsetWidth,drag.offsetHeight)
}
//seleziona l elemento se ci sono elementi nell'area scelta
for (var i=0;i<itemsHTML.length;i++){
if(itemsHTML[i].shadow!=""){
selectItem(Ctrl(itemsHTML[i].shadow))
break
}
}
// nasconde il rettangolo di drag
drag.style.visibility="hidden"
Ctrl("canvas").onmousemove=null
Ctrl("canvas").onmouseup=null
if(typeof(showProperties)!='undefined') showProperties('properties')
}
function findDragItems(e,y,x,w,h){
// trova se un elemento e' nel rettangolo di selezione
//CREA IL RETANGOLO DI SELEZIONE DI DIMENSIONI MINIME CHE CONTIENE TUTTI GLI OGGETTI SELEZIONATI
multipleSelection = true;
e = (e) ? e : window.event;
var str="",itm,itmobj;
not_selected = [];
// se non premuto lo shift
if(e.shiftKey==false && !ismobile){
removeAllHandlers()
}
if(itemsHTML.length > 0){
//cerca il primo item attivo
container_selection.e = new Array();
container_selection.l = Ctrl("backcanvas").offsetWidth;
container_selection.t = Ctrl("backcanvas").offsetHeight;
container_selection.b =0;
container_selection.r=0;
for(var i=0; i<itemsHTML.length; i++){
itmobj=itemsHTML[i];
itm = document.getElementById(itmobj.id)
if(itm && itmobj.type!='Link' && itmobj.id.indexOf("item")>=0){
if(itm.style.display!='none') //esclude gli items di altre pagine
if(itm.onclick && (itm.offsetTop>y && itm.offsetLeft>x && itm.offsetTop+itm.offsetHeight<y+h && itm.offsetLeft+itm.offsetWidth<x+w)){
if(Empty(itmobj.shadow)){
str+=addHandlers(itmobj.id.substr(4));
// aggiunge l'item selezionato all array se non presente
itmobj.shadow='shadow'+itmobj.id.substr(4);
}
//creazione del rettangolo contenitore
if(itm.offsetLeft < container_selection.l)
container_selection.l= itm.offsetLeft
if(itm.offsetTop < container_selection.t)
container_selection.t= itm.offsetTop
if((itm.offsetTop+itm.offsetHeight) > container_selection.b)
container_selection.b= (itm.offsetTop+itm.offsetHeight)
if((itm.offsetLeft+itm.offsetWidth) > container_selection.r)
container_selection.r= (itm.offsetLeft+itm.offsetWidth)
container_selection.e.push(i)
}else{
if(!itmobj.hidden){
if(isScrolledIntoView(Ctrl(itemsHTML[i].id))) not_selected.push(i);
}
}
}
}
container_selection.w = container_selection.r - container_selection.l;
container_selection.h = container_selection.b-container_selection.t;
}
Ctrl("canvashandlers").innerHTML=Ctrl("canvashandlers").innerHTML+str;
}
function selectForm(){
removeAllHandlers()
FormProperties()
}
function removeAllHandlers(){
// svuota l'array contenente gli elementi selezionati precedentemente
index=null;mainitem=null;
for(var i=0; i<itemsHTML.length; i++){
itemsHTML[i].shadow=""
}
Ctrl("canvashandlers").innerHTML=""
if(!Empty(newPropObj))newPropObj.HideProperties();
container_selection.e = [];
EmptyRefLines();
}
function addHandlers(itmIdx){
var itm=Ctrl("item"+itmIdx)
var y=itm.offsetTop
var x=itm.offsetLeft
var w=itm.offsetWidth
var h=itm.offsetHeight
var str=""
str+=addHandler(x-3,y-3,itmIdx,0)
str+=addHandler(x-3+w,y-3,itmIdx,1)
str+=addHandler(x-3+w,y-3+h,itmIdx,2)
str+=addHandler(x-3,y-3+h,itmIdx,3)
// aggiunge il div shadow+n della grandezza dell item per lo spostamento
// document.getElementById('bn').innerHTML =document.getElementById('bn').innerHTML + ' shadow h '+h+' w '+w;
str+="<div id='shadow"+itmIdx+"' class='shadow' style='position:absolute;top:"+y+"px;left:"+x+"px;width:"+w+"px;height:"+h+"px;' onmousedown='this.focus();dragShadow(event);' ondblclick='editItemEvent(event,this)'>";
// if(navigator.appName.indexOf("Microsoft")>-1)
// str+="<img id='"+itmIdx+"' src='images/trasparent.gif' style='width:100%;height:100%;'>";
// else
str+="&nbsp;";
str+="</div>";
return str;
}
function addHandler(x,y,itmIdx,corner,fixed){
var cursorStyle = ""
var moveControl = ""
//itemresizable = (itemsHTML[index].type != "SPLinker" && itemsHTML[index].type != "SQLDataobj")
if (!fixed){
if (corner == 0 || corner == 2)
cursorStyle = "cursor:nw-resize;"
else
cursorStyle = "cursor:ne-resize;"
moveControl = " onmousedown='beginDragHandler(event,"+itmIdx+","+corner+")'"
}
return "<div id='handler"+itmIdx+"_"+corner+"' style='"+cursorStyle+"z-index:5;position:absolute;top:"+y+"px;left:"+x+"px;width:7px;height:7px;background:url(../visualweb/images/handler_on.png) no-repeat;'" + moveControl + "></div>"
}
// Crea la shadow dell'elemento per indicare che <20> in corso l'allineamento con quell'elemento
function addShadowAlign(x,y,w,h,i,type){
// document.getElementById('bn').innerHTML =document.getElementById('bn').innerHTML + ' shadow x '+x+' y '+y+' w '+w+' h '+h;
var str="<div id='shadow_selected_"+i+"' class='shadow_selected_"+type+"' style='top:"+y+"px;left:"+x+"px;width:"+w+"px;height:"+h+"px;'></div>"
return str;
}
// definisce l'elemento principale mainitem
function selectItem(itm){
SetOnEditProp(false);
var selecteditem,n,i
mainitem=itm
selecteditem=mainitem.id.substr(6);
if(index==selecteditem)return;
index=null;
// trova lindice del mainitem
for(i=0;i<itemsHTML.length && index==null;i++){
if (itemsHTML[i].shadow==mainitem.id)
index=i
}
Ctrl("handler"+selecteditem+"_0").style.backgroundImage="url(../visualweb/images/handler_on.png)"
Ctrl("handler"+selecteditem+"_1").style.backgroundImage="url(../visualweb/images/handler_on.png)"
Ctrl("handler"+selecteditem+"_2").style.backgroundImage="url(../visualweb/images/handler_on.png)"
Ctrl("handler"+selecteditem+"_3").style.backgroundImage="url(../visualweb/images/handler_on.png)"
for (var p=0;p<itemsHTML.length;p++){
if(itemsHTML[p].shadow!=mainitem.id && itemsHTML[p].shadow!="" && Ctrl(itemsHTML[p].shadow)){
// elemento ennesimo nell'array
n=Ctrl(itemsHTML[p].shadow).id.substr(6)
Ctrl("handler"+n+"_0").style.backgroundImage="url(../visualweb/images/handler_off.png)"
Ctrl("handler"+n+"_1").style.backgroundImage="url(../visualweb/images/handler_off.png)"
Ctrl("handler"+n+"_2").style.backgroundImage="url(../visualweb/images/handler_off.png)"
Ctrl("handler"+n+"_3").style.backgroundImage="url(../visualweb/images/handler_off.png)"
if(container_selection.e.indexOf(p)<0) container_selection.e.push(p)
}
}
Properties()
EmptyRefLines();
addRulersLines();
}
function cancelEvent(e) {
e.cancelBubble=true
if (e.stopPropagation) e.stopPropagation();
//e.returnValue=false
}
var isMove = false;
function dragShadow(e) { //REDIFINED
if(typeof(hideProperties)!='undefined') hideProperties('properties')
// seleziona l'elemento
e = (e) ? e : window.event;
if(e!=null && e.shiftKey==true){
if(GetEventSrcElement(e).id.substr(0,1)=='s'){
unSelectItem(GetEventSrcElement(e))
}else{
unSelectItem(Ctrl("shadow"+GetEventSrcElement(e).id))
}
}
else {
if(GetEventSrcElement(e).id.substr(0,1)=='s'){
selectItem(GetEventSrcElement(e))
}else{
selectItem(Ctrl("shadow"+GetEventSrcElement(e).id))
}
}
if(lockItems){
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
e.returnValue=false
return;
}
if(mainitem!=null){
if(Empty(e.targetTouches)){
deltax = (e.pageX)? e.pageX: (e.clientX)? e.clientX: 0;
deltay = (e.pageY)? e.pageY: (e.clientY)? e.clientY: 0;
}
else{
deltax = (e.targetTouches[0].pageX)? e.targetTouches[0].pageX: (e.targetTouches[0].clientX)? e.targetTouches[0].clientX: 0;
deltay = (e.targetTouches[0].pageY)? e.targetTouches[0].pageY: (e.targetTouches[0].clientY)? e.targetTouches[0].clientY: 0;
}
deltax = deltax - parseInt(Ctrl("backcanvas").offsetLeft) - mainitem.offsetLeft + Ctrl("backcanvas").scrollLeft
deltay = deltay - parseInt(Ctrl("backcanvas").offsetTop) - mainitem.offsetTop + Ctrl("backcanvas").scrollTop
// l'id <20> shadown+n e quello dell item <20> item+n
mainitem.onmouseup=function(){Ctrl("canvas").onmousemove=null;mainitem.onmouseup=null;if(typeof(showProperties)!='undefined') showProperties('properties')}
if(Empty(e.targetTouches)){
Ctrl("canvas").onmousemove = moveShadow;
Ctrl("canvas").onmouseup=setShadow;
}
else{
GetEventSrcElement(e).addEventListener("touchmove",moveShadow);
GetEventSrcElement(e).addEventListener("touchend",setShadow);
}
}
m_bUpdated=true
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
e.returnValue=false;
if(window.SaveItemStatus) window.SaveItemStatus(); // salvo le posizioni iniziali
}
function moveShadow(e){
isMove = true;
var elementShadow
e = (e) ? e : window.event;
newx = (e.pageX)? e.pageX: (e.clientX)? e.clientX: 0;
newy = (e.pageY)? e.pageY: (e.clientY)? e.clientY: 0;
newx = newx - parseInt(Ctrl("backcanvas").offsetLeft) + Ctrl("backcanvas").scrollLeft
newy = newy - parseInt(Ctrl("backcanvas").offsetTop) + Ctrl("backcanvas").scrollTop
var dx=newx-deltax-mainitem.offsetLeft
var dy=newy-deltay-mainitem.offsetTop
var delta = new Array();
delta[0] = dx;
delta[1] = dy;
delta[2] = dx;
delta[3] = dy;
if(canAlign) delta = drawSnap(delta,false);
for (var p=0;p<itemsHTML.length;p++) {
if(itemsHTML[p].shadow != "" && Ctrl(itemsHTML[p].shadow)){
elementShadow=Ctrl(itemsHTML[p].shadow)
//MG 20120302 beg
var ret = true;
if(window.ValidMove) {
ret = window.ValidMove(elementShadow.offsetLeft+delta[0], elementShadow.offsetTop+delta[1], elementShadow.offsetWidth, elementShadow.offsetHeight,itemsHTML[p].id, itemsHTML[p])// eslint-disable-line max-len
}
if(ret==true){
elementShadow.style.left = (elementShadow.offsetLeft+delta[0])+'px';
elementShadow.style.top = (elementShadow.offsetTop+delta[1])+'px';
}
//MG 20120302 beg
addRulersLines();
var xfunction
var yfunction
if(itemsHTML[p].objClass.newProperties){
var c = 0;
for(var i in itemsHTML[p].objClass.newProperties){
var tab = itemsHTML[p].objClass.newProperties[i];
for(var ii = 0; ii<tab.length && c<2; ii++){
if(tab[ii].propID=='x'){
xfunction = tab[ii].convertFunc;
c++;
}
if(tab[ii].propID=='y'){
yfunction = tab[ii].convertFunc;
c++;
}
}
}
}
var calcx=parseInt(elementShadow.offsetLeft);
var calcy=parseInt(elementShadow.offsetTop);
if(typeof(xfunction)!='undefined')
eval("calcx="+xfunction+"(elementShadow.style.left)")
if(typeof(yfunction)!='undefined')
eval("calcy="+yfunction+"(calcy)")
var strp = "x="+(calcx)+"&nbsp;"+"y="+(calcy)
elementShadow.innerHTML="<div style='position:relative;left:5px;top:-12px;white-space: nowrap;' ondragstart='noDefaultDrag(event)' onselectstart='noDefaultDrag(event)'>"+strp+"</div>"
}
}
}
//funzione che disegna gli allineamenti e le ombre degli oggetti selezionati e ritorna un array con le posizioni ricalcolate
function drawSnap(delta,resizeMode,light){
var dl = delta[0]; //spostamento del left
var dt = delta[1]; //spostamento del top
var dr = delta[2]; //spostamento del right
var db = delta[3]; //spostamento del bottom
var shadow_selected = ""
var l_c = container_selection.l +dl
var t_c =container_selection.t +dt
var r_c = container_selection.r +dr
var b_c = container_selection.b +db
var h_c =container_selection.h - (dt - db)
var w_c =container_selection.w -(dl - dr)
var mh_c = l_c + (Math.round(w_c/2));
var mv_c = t_c + (Math.round(h_c / 2));
var v1_mod = false,
v2_mod = false,
h1_mod = false,
h2_mod = false,
dv1_mod = false,
dv2_mod = false,
dh1_mod = false,
dh2_mod = false,
mh_mod = false,
mv_mod= false,
isAlignWidth = false,
isNearWidth = false;
var isResizeMode = resizeMode;
var tmp_sel,l_o,t_o,r_o,b_o,h_o,w_o,ddl,ddt,ddr,ddb;
if(Empty(light)) light = false;
for(var i=0;i<not_selected.length;i++){
tmp_sel = itemsHTML[not_selected[i]]
if(viewMode!=designView){
l_o = getX(Ctrl(tmp_sel.id))- Ctrl("backcanvas").offsetLeft;
t_o = getY(Ctrl(tmp_sel.id))- Ctrl("backcanvas").offsetTop;
h_o = parseInt(tmp_sel.h)
w_o = parseInt(tmp_sel.w)
}
else{
l_o = parseInt(tmp_sel.x)
t_o = parseInt(tmp_sel.y)
h_o = parseInt(tmp_sel.h)
w_o = parseInt(tmp_sel.w)
}
r_o = l_o + w_o;
b_o = t_o + h_o;
var mh_o= l_o + (Math.round(w_o/2));
var mv_o =t_o + (Math.round(h_o/ 2));
ddl= 0;
ddt = 0;
ddr = 0;
ddb = 0;
if(Math.abs( l_c - l_o) < align_delta && (!isResizeMode || dl != 0) ){ //se c'<27> una corrispondenza a sinistra con la sinistra dell'oggetto
container_align_v1.style.top = (t_c < t_o ? t_c : t_o)+'px';
container_align_v1.style.left = l_o+'px';
container_align_v1.style.height = (Math.abs( t_o - t_c)+h_c)+'px';
v1_mod = true;
isAlignWidth =true;
ddl= ( l_c - l_o)
l_c = l_c -ddl;
if(! isResizeMode) r_c = r_c - ddl;
}else{
if(!v1_mod)container_align_v1.style.height = 0;
}
if(Math.abs( r_c - l_o) < align_delta && (!isResizeMode || dr != 0) ){ //se c'<27> una corrispondenza a destra con la sinistra dell'oggetto
container_align_v2.style.top = (t_c < t_o ? t_c : t_o)+'px';
container_align_v2.style.left = l_o +'px';
container_align_v2.style.height = (Math.abs( t_o - t_c)+h_c)+'px';
v2_mod = true;
isAlignWidth =true;
ddr= ( r_c - l_o)
if(! isResizeMode) l_c = l_c -ddr;
r_c = r_c -ddr;
}else{
if(!v2_mod)container_align_v2.style.height = 0;
}
if(Math.abs(t_c - t_o) < align_delta && (!isResizeMode || dt != 0)){//se c'<27> una corrispondenza del vertice con il vertice dell'oggetto
container_align_h1.style.top = t_o+'px';
container_align_h1.style.left = (l_c < l_o ? l_c : l_o)+'px';
container_align_h1.style.width = (Math.abs (l_o - l_c) +w_c)+'px';
h1_mod = true;
isAlignWidth =true;
ddt = (t_c - t_o)
t_c = t_c -ddt;
if(! isResizeMode) b_c = b_c -ddt;
}else{
if(!h1_mod){container_align_h1.style.width = 0 ;}
}
if(Math.abs( b_c - t_o) < align_delta && (!isResizeMode || db != 0) ){//se c'<27> una corrispondenza del fondo con il vertice dell'oggetto
container_align_h2.style.top = t_o+'px';
container_align_h2.style.left = (l_c < l_o ? l_c : l_o)+'px';
container_align_h2.style.width = (Math.abs (l_o - l_c) +w_c)+'px';
h2_mod = true;
isAlignWidth =true;
ddb = (b_c - t_o)
if(! isResizeMode) t_c = t_c -ddb;
b_c = b_c -ddb;
}else{
if(!h2_mod)container_align_h2.style.width = 0;
}
if(Math.abs(r_c - r_o) < align_delta && (!isResizeMode || dr != 0)){//se c'<27> una corrispondenza a destra con la destra dell'oggetto
container_align_v2.style.top = (t_c < t_o ? t_c : t_o)+'px';
container_align_v2.style.left = r_o+'px';
container_align_v2.style.height = (Math.abs( t_o - t_c) +h_c)+'px';
isAlignWidth =true;
if(!v1_mod){
ddr= ( r_c - r_o)
if(! isResizeMode) l_c = l_c -ddr;
r_c = r_c -ddl;
}
v2_mod= true;
}else {
if(!v2_mod)container_align_v2.style.height = 0;
}
if(Math.abs(l_c - r_o) < align_delta && (!isResizeMode || dl != 0)){//se c'<27> una corrispondenza a sinistra con la destra dell'oggetto
container_align_v1.style.top = (t_c < t_o ? t_c : t_o)+'px';
container_align_v1.style.left = r_o+'px';
container_align_v1.style.height = (Math.abs( t_o - t_c) +h_c)+'px';
isAlignWidth =true;
if(!v1_mod){
ddl= ( l_c - r_o)
l_c = l_c -ddl;
if(! isResizeMode) r_c = r_c -ddl;
}
v1_mod= true;
}else {
if(!v1_mod)container_align_v1.style.height = 0;
}
if(Math.abs(b_c - b_o) < align_delta && (!isResizeMode || db != 0)){ //se c'<27> una corrispondenza del fondo con il fondo dell'oggetto
container_align_h2.style.top = b_o+'px';
container_align_h2.style.left = (l_c < l_o ? l_c : l_o)+'px';
container_align_h2.style.width = (Math.abs (l_o - l_c) + w_c)+'px';
isAlignWidth =true;
if(!h1_mod){
ddb = ( b_c - b_o)
if(! isResizeMode) t_c = t_c -ddb;
b_c = b_c -ddb;
}
h2_mod=true;
} else{
if(!h2_mod)container_align_h2.style.width = 0;
}
if( Math.abs(t_c - b_o) < align_delta && (!isResizeMode || dt != 0)) { //se c'<27> una corrispondenza del vertice con il fondo dell'oggetto
container_align_h1.style.top = b_o+'px';
container_align_h1.style.left = (l_c < l_o ? l_c : l_o)+'px';
container_align_h1.style.width = (Math.abs (l_o - l_c) + w_c)+'px';
isAlignWidth =true;
if(!h1_mod){
ddt = (t_c - b_o)
t_c = t_c -ddt;
if(! isResizeMode) b_c = b_c -ddt;
}
h1_mod=true;
} else{
if(!h1_mod)container_align_h1.style.width = 0;
}
//Allineamento al centro del componente
if( !light && Math.abs(mh_c -mh_o) < align_delta && (!isResizeMode)) { //se c'<27> una corrispondenza tra i due assi centrali verticali
container_align_mh.style.top = (t_o < t_c ? t_o : t_c )+'px';
container_align_mh.style.left = (mh_o )+'px';
container_align_mh.style.height = (Math.max((( b_c > b_o) ? b_c :b_o) - ((t_c <= t_o)?t_c :t_o) , h_c))+'px';
isAlignWidth =true;
if(!v1_mod && !v2_mod) { //se e' stato spostata la shadow da altri allineamenti
ddl = (mh_c - mh_o)
l_c = l_c -ddl;
r_c = r_c -ddl;
}
mh_mod=true;
}else{
if(!mh_mod) container_align_mh.style.height=0;
}
if( !light && Math.abs(mv_c -mv_o) < align_delta && (!isResizeMode )) { //se c'<27> una corrispondenza tra i due assi centrali orizzontali
container_align_mv.style.top = (mv_o)+'px';
container_align_mv.style.left = (l_c < l_o ? l_c : l_o)+'px';
container_align_mv.style.width = (Math.max(Math.abs( l_o > l_c ? (r_o - l_c) :(r_c - l_o)),w_c))+'px';
isAlignWidth =true;
if(! h1_mod && !h2_mod){
ddt = (mv_c -mv_o)
t_c = t_c -ddt;
}
mv_mod=true;
}else{
if(!mv_mod) container_align_mv.style.width = 0;
}
//condizioni di avvicinamento
if( (t_c - b_o) < distance_sensor && (t_c - b_o) >= align_delta && (!isResizeMode || dt != 0)) { //Avvicinamento vertice con il fondo dell'oggetto -|-
distance_align_h2.style.width =(Math.max(Math.abs( l_o > l_c ? (r_o - l_c) :(r_c - l_o)),w_c))+'px';
distance_align_h2.style.left= (l_o >l_c ? l_c : l_o)+'px';
distance_align_h2.style.top=b_o+'px';
container_distance_v1.style.height = distance_delta+'px';
container_distance_v1.style.top = b_o+'px';
container_distance_v1.style.left =(l_c + (w_c/2))+'px';
ddt = t_c -(b_o + distance_delta)
t_c = t_c -ddt
dv1_mod=true;
isNearWidth = true;
}else{
if(!dv1_mod){
container_distance_v1.style.height = 0;
distance_align_h2.style.width = 0;
}
}
if( ( t_o - b_c) < distance_sensor && ( t_o -b_c) >= align_delta && (!isResizeMode || db!= 0)) { //Avvicinamento fondo con il vertice dell'oggetto _|_
distance_align_h1.style.width =(Math.max(Math.abs( l_o > l_c ? (r_o - l_c) :(r_c - l_o)),w_c))+'px';
distance_align_h1.style.left= (l_o >l_c ? l_c : l_o)+'px';
distance_align_h1.style.top=t_o+'px';
container_distance_v2.style.height = distance_delta+'px';
container_distance_v2.style.left =(l_c + (w_c/2))+'px';
ddb=(( t_o - distance_delta) - (b_c ))*(-1)
b_c = b_c -ddb
container_distance_v2.style.top = b_c+'px';
dv2_mod =true
isNearWidth = true;
}else{
if(!dv2_mod){
container_distance_v2.style.height = 0;
distance_align_h1.style.width = 0;
}
}
if((l_o - r_c ) < distance_sensor && ( l_o - r_c) >= align_delta && (!isResizeMode || dr != 0)){ //Avvicinamento destra con sinistra oggetto ->
distance_align_v1.style.height = (Math.max((( b_c > b_o) ? b_c :b_o) - ((t_c <= t_o)?t_c :t_o) , h_c))+'px';
distance_align_v1.style.left=l_o+'px';
distance_align_v1.style.top= (t_c > t_o ? t_o : t_c)+'px';
container_distance_h1.style.width = distance_delta+'px';
container_distance_h1.style.top = (t_c + (h_c/2))+'px';
ddr = ( r_c +distance_delta) - l_o
r_c = r_c -ddr;
container_distance_h1.style.left = r_c+'px';
dh1_mod =true
isNearWidth = true;
}else{
if(!dh1_mod){
container_distance_h1.style.width = 0;
distance_align_v1.style.height = 0;
}
}
if(( l_c - r_o ) < distance_sensor && ( l_c - r_o) >= align_delta && (!isResizeMode || dl != 0)){ //Avvicinamento sinistra con destra oggetto <-
distance_align_v2.style.height = (Math.max((( b_c > b_o) ? b_c :b_o) - ((t_c <= t_o)?t_c :t_o) , h_c))+'px';
distance_align_v2.style.left=r_o+'px';
distance_align_v2.style.top= (t_c >= t_o ? t_o : t_c)+'px';
container_distance_h2.style.width = distance_delta+'px';
container_distance_h2.style.left = r_o+'px';
container_distance_h2.style.top = (t_c + (h_c/2))+'px';
ddl = l_c - (r_o +distance_delta)
l_c = l_c -ddl;
dh2_mod =true
isNearWidth = true;
}else{
if(!dh2_mod){
container_distance_h2.style.width = 0;
distance_align_v2.style.height = 0;
}
}
dl=dl- (ddl +( isResizeMode ? 0 : ddr));
dt= dt -(ddt+ ( isResizeMode ? 0 :ddb))
dr = dr - (ddr +( isResizeMode ? 0 : ddl));
db = db -( ddb +( isResizeMode ? 0 :ddt))
if(isAlignWidth || isNearWidth) {
var type
if(isNearWidth) type = 'near' // css selected_shadow_near
else type = 'align' //css selected_shadow_align
shadow_selected += addShadowAlign(l_o,t_o,((w_o-2)>0?w_o-2:0),((h_o-2)>0?h_o-2:0),i,type)
}
isAlignWidth =isNearWidth = false;
}
container_selection.l += dl;
container_selection.t += dt;
container_selection.r += dr;
container_selection.b += db;
if(isResizeMode)
container_selection.h = ((container_selection.h - (dt - db )) > 0 ? container_selection.h - (dt - db) : 0);
if(isResizeMode)container_selection.w =container_selection.w - (dl - dr) > 0 ? container_selection.w - (dl - dr) :0;
shadow_selection.innerHTML = shadow_selected;
delta[0] = dl;
delta[1]= dt;
delta[2] = dr;
delta[3] = db;
return delta; //ritorna l'array con i nuovi spostamenti ricalcolati in base agli allineamenti e le vicinanze
}
function resetAlign(){
//tolgo gli allineamenti e le selected_shadow
shadow_selection.innerHTML = ""
container_align_h1.style.width = 0;
container_align_h2.style.width = 0;
container_align_v1.style.height = 0;
container_align_v2.style.height = 0;
container_align_mh.style.height=0;
container_align_mv.style.width=0;
distance_align_h1.style.width = 0;
distance_align_h2.style.width = 0;
distance_align_v1.style.height = 0;
distance_align_v2.style.height = 0;
container_distance_v1.style.height=0
container_distance_v2.style.height=0
container_distance_h1.style.width = 0;
container_distance_h2.style.width = 0;
}
// sposta gli items nella posizione finale
function setShadow(/*e*/) {
if(!Empty(mainitem) && isMove){
resetAlign()
Ctrl("canvas").onmousemove=null
mainitem.onmouseup=null
var o, kk, objmsg = [];
for(kk=0; kk<container_selection.e.length; kk++){
o = itemsHTML[container_selection.e[kk]];
objmsg.push({idx:container_selection.e[kk], x:o.x, y:o.y, yRel:o.yRel});
}
moveItems();
for(kk=0; kk<container_selection.e.length; kk++){
if(o.type=="field" && o.fieldDet.type=="N" && o.calculate!="none" && o.zone.indexOf("footer")<0){
var msg = "You moved a calculated field in a zone that does not include calculated fields. The calculation will be removed. Proceed anyway?";
showMessageConfirm(msg,"calc",objmsg[kk]);
}
if(window.UpdateDesignObj){
window.UpdateDesignObj(itemsHTML[container_selection.e[kk]], "position");
if(window.setModifiedZone)
setModifiedZone(itemsHTML[container_selection.e[kk]].zone);
}
}
if(window.pushToHistory) window.pushToHistory();
Properties();
if(typeof(showProperties)!='undefined') showProperties('properties');
}
else if(!Empty(mainitem) && !isMove){
var mainidx = mainitem.id.substr(6);
if(ismobile && container_selection.e.indexOf(parseInt(mainidx))>=0){
mainitem.style.display='none';
itemsHTML[getItemsHTMLIndex("item"+mainidx)].shadow='';
Ctrl("handler" + mainidx + "_4").style.display='none';
Ctrl("handler" + mainidx + "_5").style.display='none';
Ctrl("handler" + mainidx + "_6").style.display='none';
Ctrl("handler" + mainidx + "_7").style.display='none';
Ctrl("handlersWrapper"+mainidx).style.display='none';
Ctrl("canvashandlers").removeChild(Ctrl("shadow"+mainidx));
Ctrl("canvashandlers").removeChild(Ctrl("handlersWrapper"+mainidx));
container_selection.e.splice(container_selection.e.indexOf(parseInt(mainidx)),1);
return;
}
}
isMove = false;
objmsg = [];
o = null;
}
// si spostano tutti gli elementi selezionati nella posizione finale di unmouseup
//MODIFICA: INSERIMENTO DELLE GUIDE DI ALLINEAMENTO E DELLA VISUALIZZAZIONE DELLA POSIZIONE
function moveItems(dir,e,notResize) {
m_bUpdated=true;
var canResize = notResize ? notResize : false;
var action = (e != null && (e.shiftKey || e.ctrlKey) ? 'resize' : 'move')
//var isResizing=(e!=null && (e.shiftKey==true || e.ctrlKey==true));
var n,elementShadow,elementtomove,element_tmp;
var dx= 0,dy= 0,dw= 0,dh= 0, sc= 1
//var undoItemsMoved=new Array()
if(window.pushToHistory) window.pushToHistory();
for (var p=0;p<itemsHTML.length;p++){
element_tmp=itemsHTML[p];
elementShadow=Ctrl(element_tmp.shadow);
if(element_tmp.shadow !="" && elementShadow){
// elemento ennesimo nell'array
n=elementShadow.id.substr(6)
elementtomove=Ctrl("item"+n)
if(element_tmp.scale != undefined) sc = Round(element_tmp.scale/100, 0);
switch (dir){
case "up" :
if(e!=null && e.shiftKey==true && e.ctrlKey==true&& !canResize){
dh = 1;
dy = -1;
}
else if(e!=null && e.shiftKey==true&& !canResize)
dh = -1;
else dy = -1;
break
case "down":
if(e!=null && e.shiftKey==true && e.ctrlKey==true&& !canResize){
dh = -1;
dy = 1;
}else if(e!=null && e.shiftKey==true&& !canResize)
dh = 1;
else dy = 1;
break
case "right":
if(e!=null && e.shiftKey==true && e.ctrlKey==true&& !canResize){
dw = -1;
dx = 1;
}else if(e!=null && e.shiftKey==true&& !canResize)
dw = 1;
else dx = 1;
break
case "left":
if(e!=null && e.shiftKey==true && e.ctrlKey==true&& !canResize){
dw = 1;
dx = -1;
}
else if(e!=null && e.shiftKey==true&& !canResize) dw = -1;
else dx = -1;
default:
}
var ret = true;
if(window.ValidMove)
ret = window.ValidMove(elementShadow.offsetLeft+dx, elementShadow.offsetTop+dy, elementShadow.offsetWidth, elementShadow.offsetHeight, "item"+n, itemsHTML[p])
if(ret==false)
return;
dw = dw*sc;
dh = dh*sc;
dy = dy*sc;
dx = dx*sc;
elementShadow.style.width=(getOffset(elementShadow).w +dw)+'px';
elementShadow.style.height=(getOffset(elementShadow).h +dh)+'px';
elementShadow.style.top=(elementShadow.offsetTop +dy)+'px';
elementShadow.style.left=(elementShadow.offsetLeft+dx)+'px';
//salvo oggetti per operazione Undo non da tasto
/*if(historyStack){
//if(window.pushToHistory) window.pushToHistory();
}
else{*/
if(Empty(dir) && typeof(ZTObjects)!='undefined'){
if ((elementShadow.offsetLeft==elementtomove.offsetLeft) && (elementShadow.offsetTop==elementtomove.offsetTop)) {}
else
undoItemsMoved[undoItemsMoved.length]=new ZTObjects.undoObj('item'+element_tmp.shadow.substr(6),'move',elementShadow.offsetLeft,elementShadow.offsetTop,elementtomove.offsetLeft,elementtomove.offsetTop, element_tmp);
}
if( dir && typeof(ZTObjects)!='undefined'){
var old_action = undoItemsMoved[undoItemsMoved.length-1];
if( old_action && old_action.action == action && old_action.id == 'item'+element_tmp.shadow.substr(6) && old_action.dir == dir /* && old_action.shiftKey == e.shiftKey && old_action.ctrlKey == e.ctrlKey */ ){
undoItemsMoved[undoItemsMoved.length-1] = new ZTObjects.undoObj('item'+element_tmp.shadow.substr(6),action,elementShadow.offsetLeft,elementShadow.offsetTop,undoItemsMoved[undoItemsMoved.length-1].x_init,undoItemsMoved[undoItemsMoved.length-1].y_init, element_tmp,elementShadow.offsetWidth,elementShadow.offsetHeight,undoItemsMoved[undoItemsMoved.length-1].w_init,undoItemsMoved[undoItemsMoved.length-1].h_init);
undoSequence[indexUndo]=undoItemsMoved
}else{
if(undoItemsMoved.length>0) undoItemsMoved=[];
undoItemsMoved[undoItemsMoved.length]=new ZTObjects.undoObj('item'+element_tmp.shadow.substr(6),action,elementShadow.offsetLeft,elementShadow.offsetTop,elementtomove.offsetLeft,elementtomove.offsetTop, element_tmp,elementShadow.offsetWidth,elementShadow.offsetHeight,elementtomove.offsetWidth,elementtomove.offsetHeight);
indexUndo++
undoSequence[indexUndo]=undoItemsMoved
CheckUndoSize()
}
undoItemsMoved[undoItemsMoved.length-1].dir = dir ;
if(e!= null){
undoItemsMoved[undoItemsMoved.length-1].shiftKey = e.shiftKey ;
undoItemsMoved[undoItemsMoved.length-1].ctrlKey = e.ctrlKey ;
}
}else{
if(undoItemsMoved && undoItemsMoved[undoItemsMoved.length-1]) undoItemsMoved[undoItemsMoved.length-1].dir = '';
}
if(Empty(dir) && typeof(ZTPlanObjects)!='undefined') undoItemsMoved[undoItemsMoved.length]=new ZTPlanObjects.undoObj('item'+element_tmp.shadow.substr(6),'move',elementShadow.offsetLeft,elementShadow.offsetTop,elementtomove.offsetLeft,elementtomove.offsetTop, element_tmp);
// }
if(window.AdjustMove)
window.AdjustMove(element_tmp);
elementtomove.style.width=(getOffset(elementtomove).w +dw)+'px';
elementtomove.style.height=(getOffset(elementtomove).h +dh)+'px';
elementtomove.style.top=(elementShadow.offsetTop)+'px'; //Spostamento dell'elemento che segue la shadow
elementtomove.style.left=(elementShadow.offsetLeft)+'px';//Spostamento dell'elemento che segue la shadow
//salvo nell'oggetto item la posizione corrente
if(e!=null && e.shiftKey==true && e.ctrlKey==true){
element_tmp.w=elementShadow.offsetWidth
element_tmp.h=elementShadow.offsetHeight
element_tmp.x=elementShadow.offsetLeft
element_tmp.y=elementShadow.offsetTop
}else if(e!=null && e.shiftKey==true){
element_tmp.w=elementShadow.offsetWidth
element_tmp.h=elementShadow.offsetHeight
}else{
element_tmp.x=elementShadow.offsetLeft
element_tmp.y=elementShadow.offsetTop
}
if(window.setRelativeTop)
window.setRelativeTop(element_tmp,elementtomove);
if(Ctrl("handlersWrapper"+n)){
var w=elementShadow.offsetWidth
var h=elementShadow.offsetHeight
var shadowH = ((h-2)>0 ? h-2 : 0 ) +8; //tolgo i due pixel dei bordi
var shadowW = ((w-2 )>0 ? w-2 : 0 ) +8; //tolgo i 2 pixel dei bordi
Ctrl("handlersWrapper"+n).style.top = (elementShadow.offsetTop-9) +'px';
Ctrl("handlersWrapper"+n).style.left = (elementShadow.offsetLeft-9)+'px';
Ctrl("handlersWrapper"+n).style.height = (shadowH+12)+'px'
Ctrl("handlersWrapper"+n).style.width = (shadowW+12)+'px'
if(Ctrl("handler"+n+"_4")){
Ctrl("handler"+n+"_5").style.top = ((shadowH+4)/2)+'px'; //bordi
Ctrl("handler"+n+"_6").style.top = ((shadowH+12)-16)+'px'; //posizionamento relativo (16 = (size+2)*2)
Ctrl("handler"+n+"_7").style.top = ((shadowH+4)/2)+'px';
}
}
//GM compatibilit<69> vecchio comportamento - reporteditor
else{
Ctrl("handler"+n+"_0").style.left = (elementShadow.offsetLeft-3)+'px';
Ctrl("handler"+n+"_0").style.top = (elementShadow.offsetTop-3)+'px';
Ctrl("handler"+n+"_1").style.left = (elementShadow.offsetLeft+elementShadow.offsetWidth-6)+'px';
Ctrl("handler"+n+"_1").style.top = (elementShadow.offsetTop-3)+'px';
Ctrl("handler"+n+"_2").style.left = (elementShadow.offsetLeft+elementShadow.offsetWidth-6)+'px';
Ctrl("handler"+n+"_2").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight-6)+'px';
Ctrl("handler"+n+"_3").style.left =( elementShadow.offsetLeft-3)+'px';
Ctrl("handler"+n+"_3").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight-6)+'px';
if(Ctrl("handler"+n+"_4")){
Ctrl("handler"+n+"_4").style.left = (elementShadow.offsetLeft-3+elementShadow.offsetWidth/2)+'px';
Ctrl("handler"+n+"_4").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight-6)+'px';
Ctrl("handler"+n+"_6").style.left = (elementShadow.offsetLeft-3+elementShadow.offsetWidth/2)+'px';
Ctrl("handler"+n+"_6").style.top = (elementShadow.offsetTop-3)+'px';
Ctrl("handler"+n+"_5").style.left = (elementShadow.offsetLeft-3)+'px';
Ctrl("handler"+n+"_5").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight/2-3)+'px';
Ctrl("handler"+n+"_7").style.left = (elementShadow.offsetLeft+elementShadow.offsetWidth-6)+'px';
Ctrl("handler"+n+"_7").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight/2-3)+'px';
}
}
}
else if(element_tmp.shadow !="" && window.moveSection)
window.moveSection(dir, element_tmp.shadow, p)
}
if(Empty(dir) && undoItemsMoved.length>0){
indexUndo++;
undoSequence[indexUndo]=undoItemsMoved;
CheckUndoSize();
undoItemsMoved=[];
}
if(window.pushToHistory) window.pushToHistory();
}
var indexUndo=-1;
var indexRedo=-1;
function Undo() {
if(historyStack){
if(historyStack.hasUndo() && window.undoFromHistory)
window.undoFromHistory();
if(window.updateFieldsPane)
window.updateFieldsPane();
return;
}
var l, ll, p, idx;
if(indexUndo>-1){
var prevUndo=undoSequence[indexUndo] // sequenza prev
if(prevUndo[0].action=='move'){
for (l=0;l<prevUndo.length;l++){
for (p=0;p<itemsHTML.length;p++){
if(prevUndo[l].id==itemsHTML[p].id){
itemsHTML[p].x=prevUndo[l].x_init
itemsHTML[p].y=prevUndo[l].y_init
}
}
}
}else if(prevUndo[0].action=='resize'){
for (l=0;l<prevUndo.length;l++){
for (p=0;p<itemsHTML.length;p++){
if(prevUndo[l].id==itemsHTML[p].id){
itemsHTML[p].w=prevUndo[l].w_init;
itemsHTML[p].h=prevUndo[l].h_init;
if(!Empty(prevUndo[l].x_init))itemsHTML[p].x=prevUndo[l].x_init;
if(!Empty(prevUndo[l].y_init))itemsHTML[p].y=prevUndo[l].y_init;
}
}
}
}else if(prevUndo[0].action=='delete'){
//L'Undo del paste nel PortletEditor ha come action delete
for (ll=0;ll<prevUndo.length;ll++){
idx = 0;
for (p=0;p<itemsHTML.length;p++){
//Serve per controllare se l'elemento e' gia' presente nell'area di lavoro: serve per l'Undo del paste
if((prevUndo[ll].obj.name==itemsHTML[p].name) && (prevUndo[ll].obj.type==itemsHTML[p].type) && (prevUndo[ll].obj.value==itemsHTML[p].value)) {
itemsHTML.splice(p,1);
}
}
itemsHTML[itemsHTML.length]=prevUndo[ll].obj;
countindex++;
}
} else if(prevUndo[0].action=='paste'){
for (ll=0;ll<prevUndo.length;ll++){
idx = LibJavascript.Array.indexOf(itemsHTML,prevUndo[ll].obj);
if(idx>=0){
itemsHTML.splice(idx,1);
}
}
}
indexRedo=indexUndo;
indexUndo--;
writeHTML(true);
}
}
function Redo() {
if(historyStack){
if(historyStack.hasRedo() && window.redoFromHistory)
window.redoFromHistory();
return;
}
var l, p, ll;
if((indexRedo>-1) && (indexRedo < undoSequence.length)){
var seqRedo=undoSequence[indexRedo] // sequenza prev
if(seqRedo[0].action=='move'){
for (l=0;l<seqRedo.length;l++){
for (p=0;p<itemsHTML.length;p++){
if(seqRedo[l].id==itemsHTML[p].id){
itemsHTML[p].x=seqRedo[l].x;
itemsHTML[p].y=seqRedo[l].y;
}
}
}
}else if(seqRedo[0].action=='resize'){
for (l=0;l<seqRedo.length;l++){
for (p=0;p<itemsHTML.length;p++){
if(seqRedo[l].id==itemsHTML[p].id){
itemsHTML[p].w=seqRedo[l].w;
itemsHTML[p].h=seqRedo[l].h;
if(!Empty(seqRedo[l].x_init))itemsHTML[p].x=seqRedo[l].x;
if(!Empty(seqRedo[l].y_init))itemsHTML[p].y=seqRedo[l].y;
}
}
}
}else if(seqRedo[0].action=='delete'){
for (ll=0;ll<seqRedo.length;ll++){
var idx = LibJavascript.Array.indexOf(itemsHTML,seqRedo[ll].obj);
if(idx>=0){
itemsHTML.splice(idx,1);
countindex--;
}
}
index=null;
}
else if(seqRedo[0].action=='paste'){
for (ll=0;ll<seqRedo.length;ll++){
itemsHTML[itemsHTML.length]=seqRedo[ll].obj;
}
}
indexUndo=indexRedo;
indexRedo++;
//selectForm();
//if(last_index) last_index=null;
writeHTML(true)
}
}
var maxUndoLength=80;
/*
numero precedente 8.
numero assegnato da Michel Glele 29/04/2013 : 80
*/
function CheckUndoSize() {
if(undoSequence.length>maxUndoLength){
var tmp=new Array();
var tmpn=0;
for (var tt=0;tt<undoSequence.length;tt++){
if(tt>0){
tmp[tmpn]=undoSequence[tt];
tmpn++;
}
}
undoSequence=tmp;
indexUndo=tmpn-1;
}
}
function editPortlet(e,url){
e.cancelBubble=true
if(url.indexOf("_portlet.jsp")>-1){
url=Strtran(url,"_portlet.jsp","")
if(parent.newCurrentObj)
parent.newCurrentObj(url,"portlet",{});
else
windowOpenForeground('../visualweb/editor.htm?id='+url,'','status=1,directories=0,width=800px,height=600px,top=0,left=0,resizable=1,scrollbars=1');
}
}
function OpenWindow(url,width,height,left,top,features,title){
window.setTimeout("document.body.onfocus=CloseDialogs",500);
if(features!=null) features=","+features; else features="";
return window.open(url,title,"width="+width+",height="+height+",left="+left+",top="+top+",status=yes,help=no"+features);
}
function CloseDialogs(){
try{
if(WinOpener) WinOpener.close();
document.body.onfocus = null;
}catch(e){
//
}
}
//funzioni cambiamento opacita div
var fadestr;
function fadeOut(init,final,id,step,ms,strToEval){
if(typeof(strToEval)!='undefined') fadestr=strToEval;
var oDiv = document.getElementById(id);
if(init<final){
if(navigator.appName.indexOf("Microsoft")>-1){//MS, quindi alpha filter
oDiv.style.filter="alpha(opacity='"+parseInt(final*100)+"')";
}else{
if(oDiv.style.MozOpacity) oDiv.style.MozOpacity = final;
oDiv.style.opacity = final;
}
oDiv.style.zIndex='102'
oDiv.style.display="none";
if(!Empty(fadestr))eval(fadestr);
return;
}
if(navigator.appName.indexOf("Microsoft")>-1){//MS, quindi alpha filter
oDiv.style.filter="alpha(opacity='"+parseInt(init*100)+"')";
}else{
if(oDiv.style.MozOpacity) oDiv.style.MozOpacity = init;
oDiv.style.opacity = init;
}
setTimeout("fadeOut("+parseFloat(init-step)+","+final+",'"+id+"',"+step+","+ms+")",ms);
}
function fadeIn(init,final,id,step,ms,strToEval){
if(typeof(strToEval)!='undefined') fadestr=strToEval;
var oDiv = document.getElementById(id);
if(init>final){
if(navigator.appName.indexOf("Microsoft")>-1){//MS, quindi alpha filter
oDiv.style.filter="alpha(opacity='"+parseInt(final*100)+"')";
}else{
if(oDiv.style.MozOpacity) oDiv.style.MozOpacity = final;
oDiv.style.opacity = final;
}
if(!Empty(fadestr))eval(fadestr);
return;
}
oDiv.style.visibility="visible";
if(navigator.appName.indexOf("Microsoft")>-1){//MS, quindi alpha filter
oDiv.style.filter="alpha(opacity='"+parseInt(init*100)+"')";
}else{
if(oDiv.style.MozOpacity) oDiv.style.MozOpacity = init;
oDiv.style.opacity = init;
}
setTimeout("fadeIn("+parseFloat(init+step)+","+final+",'"+id+"',"+step+","+ms+")",ms);
}
function fade(start,end,step,ms,cId,_in,str){
var oDiv = document.getElementById(cId);
if(_in){
oDiv.style.visibility="hidden";
fadeIn(start,end,cId,step,ms,str);
}else{
fadeOut(start,end,cId,step,ms,str);
}
}
/*var PSAlert=new function(){
this.t=null;
return {
alert:
function(m,t){ // tempo in secondi
var w=this.main;
var d=this.main.document;
var b;
if(Ctrl("PSAlert")){
b = Ctrl("PSAlert");
b.style.display='block';
setOpacity(b,0.8);
}else{
b=d.createElement('div');
b.id='PSAlert';
// insert in to body
b=d.body.insertBefore(b,d.body.firstChild);
b.className='notimoo';
b.style.cssText='position:absolute;';
b.style.textAlign='center';
b.style.width='20%';
b.style.marginLeft='40%';
b.style.marginRight='40%';
b.style.top='300px';
b.style.zIndex='1001';
setOpacity(b,0.8);
// classname not passed, set defaults
if(b.className.length==0){
b.style.padding='8px 8px';
b.style.border='1px solid #888888';
b.style.backgroundColor='#FFFFFF';
b.style.fontFamily='lucida grande,Verdana,taohma';
b.style.fontWeight='bold';
b.style.color='#888888';
b.style.fontSize='12px';
b.style.lineHeight='24px';
b.style.display='block';
}
}
// write HTML fragment to it
b.innerHTML="<div style='background:URL(../portalstudio/images/warning.png) no-repeat;height:24px;width:24px;margin-left:auto;margin-right:auto'></div> ";
b.innerHTML+="<div>"+m+"</div>";
// fadeout block if supported
this.b=b;
if(this.t)clearTimeout(this.t);
if(FadingId)clearInterval(FadingId);
if (typeof(t)!='number') t = 2000;
else t = t * 1000;
this.t=setTimeout("setFading(PSAlert.b,80,0,700,'function(){PSAlert.main.document.body.removeChild(PSAlert.b);}')",t);
} ,
init:
function(w,s){
// save window
this.main=w;
this.classname=s||'';
}
// shutdown Alert object
};
};*/
// apply a fading effect to an object
// by applying changes to its style
// @o = object style
// @b = begin opacity
// @e = end opacity
// @d = duration (millisec)
// @f = function (optional)
var FadingId=null;
function setFading(o,b,e,d,f){
//setOpacity(o,0);
FadingId=setInterval(
function(){
b=stepFX(b,e,2);
setOpacity(o,b/100);
if(b==e){
if(FadingId){clearInterval(FadingId);FadingId=null;}
if(typeof f=='function'){f();}
o.style.display='none';
}
},d/50
);
}
// set opacity for element
// @e element
// @o opacity
function setOpacity(e,o){
// for IE
e.style.filter='alpha(opacity='+o*100+')';
// for others
e.style.opacity=o;
}
// increment/decrement value in steps
// checking for begin and end limits
//@b begin
//@e end
//@s step
function stepFX(b,e,s){
return b>e?b-s>e?b-s:e:b<e?b+s<e?b+s:e:b;
}
function getOffset(itm){
var bl = parseInt(LibJavascript.DOM.getComputedStyle( itm, "border-left-width" ));
//var bl = parseInt(itm.style.borderLeftWidth!=""?itm.style.borderLeftWidth:0)
var br = parseInt(LibJavascript.DOM.getComputedStyle( itm, "border-right-width" ));
//var br = parseInt(itm.style.borderRightWidth!=""?itm.style.borderRightWidth:0)
var bb = parseInt(LibJavascript.DOM.getComputedStyle( itm, "border-top-width" ))
//var bb = parseInt(itm.style.borderTopWidth!=""?itm.style.borderTopWidth:0)
var bt = parseInt(LibJavascript.DOM.getComputedStyle( itm, "border-bottom-width" ))
//var bt = parseInt(itm.style.borderBottomWidth!=""?itm.style.borderBottomWidth:0)
var ml = parseInt(itm.style.marginLeft!=""?itm.style.marginLeft:0)
var mr = parseInt(itm.style.marginRight!=""?itm.style.marginRight:0)
var mb = parseInt(itm.style.marginTop!=""?itm.style.marginTop:0)
var mt = parseInt(itm.style.marginBottom!=""?itm.style.marginBottom:0)
var pl = parseInt(itm.style.paddingLeft!=""?itm.style.paddingLeft:0)
var pr = parseInt(itm.style.paddingRight!=""?itm.style.paddingRight:0)
var pb = parseInt(itm.style.paddingTop!=""?itm.style.paddingTop:0)
var pt = parseInt(itm.style.paddingBottom!=""?itm.style.paddingBottom:0)
var gapw = bl+br+ml+mr+pl+pr
var gaph = bb+bt+mt+mb+pt+pb
var w= itm.offsetWidth - ( gapw)
var h= itm.offsetHeight - ( gaph )
return {w:w,h:h,gapw:gapw,gaph:gaph}
}
//Funzioni che permettono di disabilitare la selezione dell'html
function disableSelect(el){
if(el.attachEvent){
el.attachEvent("onselectstart",disabler);
} else {
el.addEventListener("mousedown",disabler,"false");
}
}
function enableSelect(el){
if(el.attachEvent){
el.detachEvent("onselectstart",disabler);
} else {
el.removeEventListener("mousedown",disabler,"false");
}
}
function disabler(e){
if(e.preventDefault){ e.preventDefault(); }
return false;
}
function addRulersLines(){
if(!Empty(clHRRulersLib) && !Empty(mainitem)){
clHRRulersLib.AddHorizontalLine("shadowHLL"+mainitem.id,mainitem.offsetLeft/*-Ctrl("backcanvas").scrollLeft*/, parseInt(Ctrl("h_ruler").style.top),"white",mainitem.id);
clHRRulersLib.AddHorizontalLine("shadowHLR"+mainitem.id, mainitem.offsetLeft+mainitem.offsetWidth/*-Ctrl("backcanvas").scrollLeft*/, parseInt(Ctrl("h_ruler").style.top),"white",mainitem.id);
clVRRulersLib.AddVerticalLine("shadowVLL"+mainitem.id, parseInt(Ctrl("v_ruler").style.left), mainitem.offsetTop/*-Ctrl("backcanvas").scrollTop*/,"white",mainitem.id);
clVRRulersLib.AddVerticalLine("shadowVLR"+mainitem.id, parseInt(Ctrl("v_ruler").style.left), mainitem.offsetTop+mainitem.offsetHeight/*-Ctrl("backcanvas").scrollTop*/,"white",mainitem.id);
}
}
function EmptyRefLines(){
if(!Empty(clHRRulersLib))clHRRulersLib.EmptyRefLines();
if(!Empty(clVRRulersLib))clHRRulersLib.EmptyRefLines();
}
function addRulersLine(e){
if (!e) e = window.event;
var xpos = 0;
var ypos = 0;
if (e != null){
xpos = (e.pageX)? e.pageX: (e.clientX)? e.clientX: 0;
ypos = (e.pageY)? e.pageY: (e.clientY)? e.clientY: 0;
}
clHRRulersLib.AddHorizontalLine("h_ruler_mouse", xpos, parseInt(Ctrl("h_ruler").style.top), "white");
clVRRulersLib.AddVerticalLine("v_ruler_mouse", parseInt(Ctrl("v_ruler").style.left), ypos, "white");
}
/*Apertura e chiusura della preview*/
var preview_opened=false;
function togglePreview(){
var i_preview=document.getElementById('i_preview');
var i_preview_wrapper=document.getElementById('i_preview_wrapper');
var btn_preview=document.getElementById('btn_preview');
var morphP= new Fx.Morph(i_preview_wrapper,{ 'duration':'400',transition:Fx.Transitions.easeOut});
document.getElementById('formproperties').set('morph')
if(!preview_opened){
i_preview_wrapper.setStyles({'width': window.getSize().x,'height':window.getSize().y-30,'left':window.getSize().x,'top':30});
i_preview.setStyles({'height': window.getSize().y-70,'top':40});
if(m_bUpdated){
save(function(){
togglePreview()
});
return;
}
i_preview_wrapper.setStyle('display','block');
switch(tool){
case 'portlet':
if(currentname.indexOf('/jsp-decorator')>-1){
i_preview.src=currentname+'_portlet.jsp?m_NoCache='+LibJavascript.AlfaKeyGen(10)+pUrl;
}else{
i_preview.src='../jsp/'+currentname+'_portlet.jsp?m_NoCache='+LibJavascript.AlfaKeyGen(10)+pUrl;
}
break;
case 'report':
if(reportPreview) reportPreview();
break;
case 'module':
i_preview.src='../servlet/JSPModEditorPrev?name='+currentname+'&m_NoCache='+LibJavascript.AlfaKeyGen(10);
break;
case 'scandoc':
if(scanPreview) scanPreview();
break;
case 'portalzoom':
i_preview.src = GetResourceName(pUrl);
break;
case 'pageleteditor':
i_preview.src = GetResourceName();
break;
case 'maskparameters':
if (maskPreview) maskPreview();
break;
case 'chart':
if (chartPreview) chartPreview(pUrl);
break;
}
btn_preview.getFirst().setStyle('background-image','url(../portalstudio/images/icon/btn_preview_off.png)');
btn_preview.title='Back to Edit';
morphP.start({'left':(window.getWrapperLeft?window.getWrapperLeft():0)});
preview_opened=true;
// document.getElementById('objList').getChildren().each(function(el){
// var a = el.getElement('a');
// if( !a || (a && a.id != 'btn_preview') ){
// el.set('morph')
// el.morph({'opacity':0.2})
// disableAnchor(a, true);
// }
// })
document.getElementById('formproperties').set('morph')
document.getElementById('formproperties').morph({'opacity':0.2})
}else{
btn_preview.getFirst().setStyle('background-image','url(../portalstudio/images/icon/btn_preview.png)');
morphP.start({'left': window.getSize().x}).chain(function (){i_preview_wrapper.setStyle('display','none');});
btn_preview.title='Go to Preview';
switch(tool){
case 'scandoc':
if(scanPreview) scanPreview();
break;
case 'chart':
if (chartPreview) chartPreview(pUrl);
break;
}
preview_opened=false;
// document.getElementById('objList').getChildren().each(function(el){
// var a = el.getElement('a');
// if( !a || (a && a.id != 'btn_preview') ){
// el.set('morph')
// el.morph({'opacity':1})
// disableAnchor(a, false);
// }
// })
document.getElementById('formproperties').morph({'opacity':1})
}
if(window.setToolbars) window.setToolbars()
}
if (typeof(ZtVWeb)!='undefined') {
var params_opened=false;
var portlet_fake=new function(){
ZtVWeb.newForm(this,'portlet_fake','params_receiver',400,200,'portlet');
this.parametersList_confirm=new ZtVWeb.EventReceiverCtrl(this,'parametersList_confirm','parametersObj','previewConfirmParms(evt.parametersObj)','','func');
this.parametersList_discard=new ZtVWeb.EventReceiverCtrl(this,'parametersList_discard','parametersObj','toggleParameters()','','func');
}
ZtVWeb.addPortletObj('portlet_fake','params_receiver',portlet_fake);
portlet_fake.on_parametersList_confirm=function(parmsObj){portlet_fake.parametersList_confirm.receiveFnc(parmsObj);}
portlet_fake.on_parametersList_discard=function(parmsObj){portlet_fake.parametersList_discard.receiveFnc(parmsObj);}
var pObj={};
var pValues=null;
var pUrl='';
function previewConfirmParms(obj){
pUrl='';
pValues=obj;
for(var i in pValues){
pUrl+='&'+i;
pUrl+='='+ZtVWeb.valueToStr(pValues[i]);
}
toggleParameters();
}
function toggleParameters(){
var parameters_wrapper=document.getElementById("parameters_wrapper");
if(!params_opened){
SetOnEditProp(false);
parameters_wrapper.setStyle('opacity',0);
parameters_wrapper.setStyle('display','block');
parameters_wrapper.set('tween', {duration: '300'});
parameters_wrapper.tween('opacity', 0, 1);
var curr_request_parms = GetRequestParams(); //Oggetto nome -> [{description, type, len, dec, group} | tipo ]
var i;
if (typeof(curr_request_parms)=='string' && Lower(Right(curr_request_parms,4))=='.vdm'){
var projectUrl = new JSURL("../servlet/SPVDMProxy?m_cAction=load&m_cConfigName="+Left(curr_request_parms,Len(curr_request_parms)-4), true);
var myResponse = projectUrl.Response();
pObj = JSON.parse(myResponse);
pObj.onOkResource=GetResourceName('');
if (skinList){
var found=false;
for (i=0; i<pObj.fields.length && !found; i++){
if (pObj.fields[i].fieldName=='forcedSkin'){
pObj.fields[i].viewType='combo';
pObj.fields[i].comboLabels=skinList;
pObj.fields[i].comboValues=skinList;
pObj.fields[i].initialValue=currentSkin;
found=true;
}
}
}
}
else {
pObj={}
pObj.configName=GetCurrentName();
pObj.onOkResource=GetResourceName('');
pObj.titleMsg='Set Parameters';
pObj.target='i_preview';
pObj.mode=1;
pObj.fields=[];
var ii= (skinList?1:0);
if(skinList){
pObj.fields[0]={};
pObj.fields[0].fieldName="forcedSkin";
pObj.fields[0].viewType='combo';
pObj.fields[0].description="Select skin";
pObj.fields[0].comboLabels=skinList;
pObj.fields[0].comboValues=skinList;
pObj.fields[0].hideEmptyValue=true;
pObj.fields[0].initialValue=currentSkin;
}
for (i in curr_request_parms){
var varDesc, varType, varLen, varDec, displayLen, varGroup;
if (typeof(curr_request_parms[i])=='string') {
varDesc=i;
varType=curr_request_parms[i];
displayLen=15;
varLen=100;
varDec=0;
varGroup='';
} else {
varDesc=curr_request_parms[i].description||i;
varType=curr_request_parms[i].type||'C';
displayLen=curr_request_parms[i].len||15;
varLen=curr_request_parms[i].len||100;
varDec=curr_request_parms[i].dec||0;
varGroup=curr_request_parms[i].group||'';
}
pObj.fields[ii]={};
pObj.fields[ii].fieldName=i;
pObj.fields[ii].type=varType;
pObj.fields[ii].description=varDesc;
pObj.fields[ii].displayLen=displayLen;
pObj.fields[ii].len=varLen;
pObj.fields[ii].dec=varDec;
pObj.fields[ii].group=varGroup;
if(!Empty(pValues)) //se non ci sono valori iniziali
pObj.fields[ii].initialValue=ZtVWeb.valueToStr(pValues[i],varType);
else
pObj.fields[ii].initialValue='';
ii++;
//obj.fields[i].len=20;
}
}
//var pAction="m_cAction=save";
//var pConfigName="&m_cConfigName="+getOpener().m_cFilename;
//var pObj="&m_cWv="+escape(toJSONString(obj));
//var url="../servlet/SPVDMProxy?"+pAction+pConfigName+pObj;
//if (new JSURL(url,true,this.saved).Response()=='Saved'){
var vdmParams=window.getVdmParams?"&"+getVdmParams():"";
ZtVWeb.Include("../jsp/SPMaskParameters_portlet.jsp?EmitterName=parametersList&ConfigObject="+escape(JSON.encode(pObj))+"&Width=100%"+vdmParams,parameters_wrapper,true);
//}
//FillParameterProps();
//var parms='m_cWv='+Ctrl("m_cWv").value+',m_cParams='+Ctrl("m_cParams").value+',m_lShowAll='+Ctrl("m_lShowAll").value;
//ZtVWeb.getPortlet('SPMaskParameters').addParameterSPLinker(parms);
//ZtVWeb.getPortlet('SPMaskParameters').setAction(Ctrl("m_cAction").value);
params_opened=true;
selectForm();
}else{
var param_m=new Fx.Morph(parameters_wrapper,{duration: '300'});
// parameters_wrapper.set('tween', {duration: '200'});
param_m.start({'opacity':0}).chain(function(){parameters_wrapper.setStyle('display','none');ZtVWeb.removePortletObj('SPMaskParameters');ZtVWeb.purgeEventsCache('SPMaskParameters');});
params_opened=false;
SetOnEditProp(false);
}
}
}
function disableAnchor(obj, disable){
if(!obj)
return;
if(disable){
var href = obj.getAttribute("href");
if(href && href != "" && href != null){
obj.setAttribute('href_bak', href);
}
obj.removeAttribute('href');
}
else{
obj.setAttribute('href', obj.attributes['href_bak'].nodeValue);
}
}
function getDocHeight() {
var D = document;
return Math.max(
Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
Math.max(D.body.clientHeight, D.documentElement.clientHeight)
);
}
function unSelectItem(itm){
SetOnEditProp(false);
var i;
var mainitemz = itm;
var unselecteditem = mainitemz.id.substr(6);
var indexz=-1;
//if(index==selecteditem) return; //selecteditem NON indica la posizione nell'array!!!
for (i = 0; i < itemsHTML.length; i++) {
if (itemsHTML[i].shadow == mainitemz.id){
indexz = i;
}
}
if(indexz>0){
itm.style.display='none';
itemsHTML[indexz].shadow='';
Ctrl("handler" + unselecteditem + "_0").style.display='none';
Ctrl("handler" + unselecteditem + "_1").style.display='none';
Ctrl("handler" + unselecteditem + "_2").style.display='none';
Ctrl("handler" + unselecteditem + "_3").style.display='none';
Ctrl("canvashandlers").removeChild(itm);
if(mainitem && mainitem.id==mainitemz.id){
for (i = 0; i < itemsHTML.length; i++) {
if (itemsHTML[i].shadow && Ctrl(itemsHTML[i].shadow)){
return selectItem(Ctrl(itemsHTML[i].shadow));
}
}
removeAllHandlers();
}
}
}
function PickItems(tool,retTo,top, left, width, height){
var offlinemode='';
var ind=(GetOpener()? GetOpener().index : index);
var itemsH=(GetOpener()?GetOpener().itemsHTML : itemsHTML);
if(ind!=null && itemsH[ind].offline=='true') offlinemode="&offlinemode=true";
//openSPModalLayer("../portalstudio/open.jsp?tool="+tool+"&onetool=true&ExpressionID="+retTo+"&callerFunction=ExpressionBuilderReturn&SPModalLayerId=querySPModalLayer"+offlinemode, t, l, width, height, true, 1, false, false);
window.layerOpenForeground("../portalstudio/open.jsp?tool="+tool+"&onetool=true&ExpressionID="+retTo+"&callerFunction=ExpressionBuilderReturn&SPModalLayerId="+tool+"SPModalLayer"+offlinemode,"Select "+tool,'',width,height,true,1);
}
// overwrite PortalCommonsJS
var currentAPIClass = null;
var currentAPIType = "";
function renderApi(obj /*itemsHTML object*/) {
currentAPIClass = null;
currentAPIType = "";
if(obj && obj.objClass) {
currentAPIClass = obj.objClass;
currentAPIType = obj.type;
openSPComponentAPI();
}
}
function openSPComponentAPI() {
var pws = window.GetWindowSize();
window.layerOpenForeground("../jsp-system/SPComponentAPI.jsp", "", "", pws.w, pws.h, true, 1);
}
function getRenderApiObjClass() {
return { apiType : currentAPIType, apiObj : currentAPIClass, ovr_tabs: true };
}
var apiSamples = {};
function getComponentSamples(apiType) {
return apiSamples[apiType];
}
function setComponentSamples(apiType, samples) {
return apiSamples[apiType] = samples;
}
function renderApiForm() {
if (formProp) {
var obj = makeAPIobj(formProp, true);
renderApi(obj);
}
}
function renderApiElement() {
if (index != null) {
var element = itemsHTML[index];
if (element && element.objClass) {
console.log(element, element.type, element.typeView)
var obj = makeAPIobj(element);
renderApi(obj)
}
}
}
function makeAPIobj(org_obj, isForm) {
var obj = { type: org_obj.type, objClass: { newProperties: {} } },
general = org_obj.objClass.newProperties,
props;
if (org_obj.objClass._api) {
if (isForm) {
for (props in org_obj.objClass._api) {
addProp(props);
}
}
else {
props = org_obj.typeView;
addProp(props);
if (props == "text" || props == "numeric" || props == "datetime" || props == "pagenum")
obj.objClass.newProperties.font = general.font;
}
}
else
obj.objClass.newProperties = general;
return obj;
function addProp(props) {
var pobj = org_obj.objClass._api[props];
if (!pobj && general[props])
obj.objClass.newProperties[props] = general[props];
else {
if (pobj == "all") {
obj.objClass.newProperties[props] = general[props];
}
else {
if (pobj in general) { // tab con altro nome
obj.objClass.newProperties[props] = general[pobj];
}
else if (pobj.length > 0 && pobj[0].name) { // array con props
obj.objClass.newProperties[props] = pobj.slice();
}
else if (pobj.length > 0) { // array con propID specificati
obj.objClass.newProperties[props] = [];
for (var i = 0; i < general[props].length; i++) {
if (pobj.indexOf(general[props][i].propID) >= 0)
obj.objClass.newProperties[props].push(general[props][i]);
}
}
}
}
}
}