PHP Classes

File: resources/floating_window.js

Recommend this page to a friend!
  Classes of Piotr Malinski   HTML Friends   resources/floating_window.js   Download  
File: resources/floating_window.js
Role: Auxiliary data
Content type: text/plain
Description: JS Scripts files
Class: HTML Friends
PHP wrapper to use dhtmlgoodies.com DHTML widgets
Author: By
Last change:
Date: 18 years ago
Size: 8,285 bytes
 

Contents

Class file image Download
var readSizeFromCookie = true; // Determines if size and position of windows should be set/retreved by use of cookie var windowMinSize = [80,30]; // Mininum width and height of windows. var moveCounter = -1; var startEventPos = new Array(); var startPosWindow = new Array(); var startWindowSize = new Array(); var initResizeCounter = -1; var activeWindow = false; var activeWindowContent = false; var windowSizeArray = new Array(); var windowPositionArray = new Array(); var currentZIndex = 10000; /* These cookie functions are downloaded from http://www.mach5.com/support/analyzer/manual/html/General/CookiesJavaScript.htm */ function Get_Cookie(name) { var start = document.cookie.indexOf(name+"="); var len = start+name.length+1; if ((!start) && (name != document.cookie.substring(0,name.length))) return null; if (start == -1) return null; var end = document.cookie.indexOf(";",len); if (end == -1) end = document.cookie.length; return unescape(document.cookie.substring(len,end)); } // This function has been slightly modified function Set_Cookie(name,value,expires,path,domain,secure) { expires = expires * 60*60*24*1000; var today = new Date(); var expires_date = new Date( today.getTime() + (expires) ); var cookieString = name + "=" +escape(value) + ( (expires) ? ";expires=" + expires_date.toGMTString() : "") + ( (path) ? ";path=" + path : "") + ( (domain) ? ";domain=" + domain : "") + ( (secure) ? ";secure" : ""); document.cookie = cookieString; } function cancelEvent() { return (moveCounter==-1 && initResizeCounter==-1)?true:false; } function initMove(e) { if(document.all)e = event; moveCounter = 0; switchElement(false,this); startEventPos = [e.clientX,e.clientY]; startPosWindow = [activeWindow.offsetLeft,activeWindow.offsetTop]; startMove(); if(!document.all)return false; } function startMove() { if(moveCounter>=0 && moveCounter<=10){ moveCounter++; setTimeout('startMove()',10); } } function stopMove(e) { if(document.all)e = event; moveCounter=-1; initResizeCounter=-1; if(!activeWindow || !activeWindowContent)return; Set_Cookie(activeWindow.id + '_attr',activeWindow.style.left.replace('px','') + ',' + activeWindow.style.top.replace('px','') + ',' + activeWindow.style.width.replace('px','') + ',' + activeWindowContent.style.height.replace('px','') + ',' + activeWindow.style.zIndex,50); } function moveWindow(e) { if(document.all)e = event; if(moveCounter>=10){ activeWindow.style.left = startPosWindow[0] + e.clientX - startEventPos[0] + 'px'; activeWindow.style.top = startPosWindow[1] + e.clientY - startEventPos[1] + 'px'; } if(initResizeCounter>=10){ var newWidth = Math.max(windowMinSize[0],startWindowSize[0] + e.clientX - startEventPos[0]); var newHeight = Math.max(windowMinSize[1],startWindowSize[1] + e.clientY - startEventPos[1]); activeWindow.style.width = newWidth + 'px'; activeWindowContent.style.height = newHeight + 'px'; } if(!document.all)return false; } function initResizeWindow(e) { if(document.all)e = event; initResizeCounter = 0; switchElement(false,document.getElementById('dhtml_goodies_id' + this.id.replace(/[^\d]/g,''))); startWindowSize = [activeWindowContent.offsetWidth,activeWindowContent.offsetHeight]; startEventPos = [e.clientX,e.clientY]; startResizeWindow(); return false; } function startResizeWindow() { if(initResizeCounter>=0 && initResizeCounter<=10){ initResizeCounter++; setTimeout('startResizeWindow()',10); } } function switchElement(e,inputElement) { if(!inputElement)inputElement = this; if(activeWindow && activeWindowContent){ Set_Cookie(activeWindow.id + '_attr',activeWindow.style.left.replace('px','') + ',' + activeWindow.style.top.replace('px','') + ',' + activeWindow.style.width.replace('px','') + ',' + activeWindowContent.style.height.replace('px','') + ',' + activeWindow.style.zIndex,50); } currentZIndex = currentZIndex/1 + 1; activeWindow = document.getElementById('dhtml_goodies_id' + inputElement.id.replace(/[^\d]/g,'')); activeWindow.style.zIndex = currentZIndex; activeWindowContent = document.getElementById('windowContent' + inputElement.id.replace(/[^\d]/g,'')); Set_Cookie(activeWindow.id + '_attr',activeWindow.style.left.replace('px','') + ',' + activeWindow.style.top.replace('px','') + ',' + activeWindow.style.width.replace('px','') + ',' + activeWindowContent.style.height.replace('px','') + ',' + activeWindow.style.zIndex,50); } function hideWindow() { switchElement(false,document.getElementById('dhtml_goodies_id' + this.id.replace(/[^\d]/g,''))); activeWindow.style.display='none'; } function minimizeWindow() { var numericID = this.id.replace(/[^\d]/g,''); switchElement(false,document.getElementById('dhtml_goodies_id' + numericID)); if(this.src.indexOf('minimize')>=0){ activeWindowContent.style.display='none'; document.getElementById('resizeImage'+numericID).style.display='none'; this.src = this.src.replace('minimize','maximize'); }else{ activeWindowContent.style.display='block'; document.getElementById('resizeImage'+numericID).style.display=''; this.src = this.src.replace('maximize','minimize'); } } function initWindows() { var divCounter = 0; var zIndexSet = false; var divs = document.getElementsByTagName('DIV'); for(var no=0;no<divs.length;no++){ if(divs[no].className=='dhtmlgoodies_window'){ divCounter = divCounter + 1; if(divCounter==1)activeWindow = divs[no]; divs[no].id = 'dhtml_goodies_id' + divCounter; divs[no].onmousedown = switchElement; if(readSizeFromCookie)var cookiePos = Get_Cookie(divs[no].id + '_attr') + ''; else cookiePos = ''; var cookieValues = new Array(); if(cookiePos.indexOf(',')>0){ cookieValues = cookiePos.split(','); if(!windowPositionArray[divCounter])windowPositionArray[divCounter] = new Array(); windowPositionArray[divCounter][0] = Math.max(0,cookieValues[0]); windowPositionArray[divCounter][1] = Math.max(0,cookieValues[1]); } if(cookieValues.length==5 && !zIndexSet){ divs[no].style.zIndex = cookieValues[4]; if(cookieValues[4]/1 > currentZIndex)currentZIndex = cookieValues[4]/1; } if(windowPositionArray[divCounter]){ divs[no].style.left = windowPositionArray[divCounter][0] + 'px'; divs[no].style.top = windowPositionArray[divCounter][1] + 'px'; } var subImages = divs[no].getElementsByTagName('IMG'); for(var no2=0;no2<subImages.length;no2++){ if(subImages[no2].className=='resizeImage'){ subImages[no2].style.cursor = 'nw-resize'; subImages[no2].onmousedown = initResizeWindow; subImages[no2].id = 'resizeImage' + divCounter; break; } if(subImages[no2].className=='closeButton'){ subImages[no2].id = 'closeImage' + divCounter; subImages[no2].onclick = hideWindow; } if(subImages[no2].className=='minimizeButton'){ subImages[no2].id = 'minimizeImage' + divCounter; subImages[no2].onclick = minimizeWindow; } } } if(divs[no].className=='dhtmlgoodies_window_top'){ divs[no].onmousedown = initMove; divs[no].id = 'top_bar'+divCounter; } if(divs[no].className=='dhtmlgoodies_windowContent'){ divs[no].id = 'windowContent'+divCounter; if(cookieValues.length>3){ if(!windowSizeArray[divCounter])windowSizeArray[divCounter] = new Array(); windowSizeArray[divCounter][0] = cookieValues[2]; windowSizeArray[divCounter][1] = cookieValues[3]; } if(cookieValues.length==5){ activeWindowContent = document.getElementById('windowContent' + divCounter); } if(windowSizeArray[divCounter]){ divs[no].style.height = windowSizeArray[divCounter][1] + 'px'; divs[no].parentNode.parentNode.style.width = windowSizeArray[divCounter][0] + 'px'; } } } document.body.onmouseup = stopMove; document.body.onmousemove = moveWindow; document.body.ondragstart = cancelEvent; document.body.onselectstart = cancelEvent; } window.onload = initWindows;