/* ____ _____ / __ \ / ____| ___ _ _ ___| | | | (___ / _ \ | | |/ _ \ | | |\___ \ | __/ |_| | __/ |__| |____) | \___|\__, |\___|\____/|_____/ __/ | |___/ 1.6 Web Operating System eyeOS.org eyeOS Engineering Team - eyeOS.org/whoarewe eyeOS is released under the GNU Affero General Public License Version 3 (AGPL3) provided with this release in license.txt or via web at gnu.org/licenses/agpl-3.0.txt Copyright 2005-2008 eyeOS Team (team@eyeos.org) */ function Box_show(params,name,father,x,y,horiz,vert,checknum,cent) { var myheight = params["height"]; var mywidth = params["width"]; var title = params["title"]; var titleCss = params["titleCss"]; var visible = params["visible"]; var theText = document.createTextNode(title); var oTable = document.createElement("TABLE"); var oTBody = document.createElement("TBODY"); var myTitle = document.createElement("DIV"); myTitle.className = titleCss; myTitle.setAttribute('id',name+'supText'); myTitle.appendChild(theText); oTable.style.width = mywidth+'px'; oTable.style.height = myheight+'px'; oTable.border=0; oTable.cellpadding=0; oTable.cellspacing=0; oTable.className = 'eyeBoxTable'; var oRow = document.createElement("TR"); var oCell = document.createElement("TD"); oCell.className = 'eyeBoxSupCent'; oCell.appendChild(myTitle); oRow.appendChild(oCell); oTBody.appendChild(oRow); oCell = document.createElement("TD"); oRow = document.createElement("TR"); oCell.className='eyeBoxCent'; oCell.width = '100%'; oCell.setAttribute('id',name); oRow.appendChild(oCell); oTBody.appendChild(oRow); if (IEversion == 0) { oCell = document.createElement("TD"); oRow = document.createElement("TR"); oCell.className='eyeBoxBottCent'; oCell.width = '100%'; oRow.appendChild(oCell); oTBody.appendChild(oRow); } oTable.appendChild(oTBody); createWidget(name+'_Container',father,oTable,horiz,vert,x,y,-1,-1,"eyeBoxContainer",cent, 'px', visible); } function Line_show(params,name,father,x,y,horiz,vert,checknum,cent) { var mywidth = params['width']; var myheight = params['height']; var visible = params['visible']; var myLine = document.createElement('div'); myLine.setAttribute('id',name); myLine.style.width = mywidth+'px'; myLine.style.height = myheight+'px'; myLine.style.backgroundColor = '#dddddd'; createWidget(name+'_Container',father,myLine,horiz,vert,x,y,-1,-1,'eyeLineContainer',cent,'px',visible); } function File_show(params,name,father,x,y,horiz,vert,checknum,cent) { var callback = params['callback']; var filename = params['filename']; var visible = params['visible']; var multiple = params['multiple']; var pid = params['pid']; var myIframe = document.createElement('iframe'); if(multiple == 1){ var withs = '300px'; var height = '350px'; }else{ var withs = '250px'; var height = '90px'; } myIframe.setAttribute('id',name); myIframe.style.width = withs; myIframe.style.height = height; myIframe.style.border='none'; myIframe.frameBorder='no'; if(multiple == 1){ myIframe.setAttribute('src','index.php?extern=libs/eyeWidgets/getMultipleFile.eyecode&type=dynamic¶ms[]='+checknum+'¶ms[]='+callback+'¶ms[]='+filename+'¶ms[]='+pid) }else{ myIframe.setAttribute('src','index.php?extern=libs/eyeWidgets/getFile.eyecode&type=dynamic¶ms[]='+checknum+'¶ms[]='+callback+'¶ms[]='+filename+'¶ms[]='+pid) } createWidget(name+'_Container',father,myIframe,horiz,vert,x,y,-1,-1,'eyeLineContainer',cent,'px',visible); } function Simplebox_show(params,name,father,x,y,horiz,vert,checknum,cent) { var myheight = params["height"]; var mywidth = params["width"]; var visible = params["visible"]; var divBox = document.createElement('div'); divBox.setAttribute('id',name); divBox.style.width = mywidth+'px'; divBox.style.height = myheight+'px'; if(params["border"] == 1){ createWidget(name+'_Container',father,divBox,horiz,vert,x,y,-1,-1,"eyeSimplebox",cent,'px',visible); }else{ createWidget(name+'_Container',father,divBox,horiz,vert,x,y,-1,-1,"eyeSimpleboxNoBorder",cent,'px',visible); } } function Button_show(params,name,father,x,y,horiz,vert,checknum,cent) { var caption = params["caption"]; var enabled = params["enabled"]; var visible = params["visible"]; var sync = params["sync"]; var dis = params["disablemsg"]; var sig = params["signal"]; var myWidth = params["width"]; var myHeight = params["height"]; var myImg = params["img"]; var myTop = params["imgY"]; var myLeft = parseInt(params["imgX"]); var forceMsg = params["forceMsg"]; myLeft = myLeft + 5; var myContainer = document.createElement('div'); myContainer.setAttribute('id',name+'_GlobalContainer'); if (myImg != null) { var myButton = document.createElement('img'); myButton.src=myImg; var myContent = document.createElement('div'); myContent.innerHTML = caption; myContent.setAttribute('id',name+'_cpt'); myContent.style.position = 'absolute'; } else { var myButton = document.createElement('button'); myButton.setAttribute('id',name); caption = tinyMCE.entityDecode(caption); theText=document.createTextNode(caption); myButton.appendChild(theText); } if(enabled == 0) { myButton.disabled=1; } if(myWidth > 0) { if(myImg != null) { myContainer.style.width = myWidth+'px'; } else { myButton.style.width = myWidth+'px'; } } if(myHeight > 0) { if(myImg != null) { myContainer.style.height = myHeight+'px'; } else { myButton.style.height = myHeight+'px'; } } if(myImg != null) { myContent.style.top = '2px'; myContent.style.left = myLeft+'px'; myContainer.style.cursor = 'Pointer'; } else { myButton.className = "eyeButtonClass"; } if(dis == 0) { if(forceMsg == 0){ myContainer.onclick = function(){sendMsg(checknum,sig,eval(sync))}; }else{ var myParam = eyeParam(sig,forceMsg); myContainer.onclick = function(){sendMsg(checknum,sig,myParam)}; } } myContainer.appendChild(myButton); if(myContent) { myContainer.appendChild(myContent); } createWidget(name+'_Container',father,myContainer,horiz,vert,x,y,myWidth,myHeight,"eyeButton",cent,'px',visible); } function Calendar_show(params,name,father,x,y,horiz,vert,checknum,cent) { var myWidth = params['width']; var myHeight = params['height']; var visible = params['visible']; var selectFunc = params['selectFunc']; var drawOnClick = params['drawOnClick']; var drawHighlight = params['drawHighlight']; var weekHighlight = false; var globalDate = new Date(); if(params['forceDate'] != ''){ globalDate.setTime(params['forceDate']); } if(params['drawServerDate'] != ''){ var drawServerDate = new Date(); drawServerDate.setTime(params['drawServerDate']); }else{ var drawServerDate = ''; } var globalMonth = globalDate.getMonth(); var myDay = globalDate.getDate(); var globalYear = globalDate.getFullYear(); var monthNames = getArrayArg(params['monthNames']); var weekDays = getArrayArg(params['weekDays']); var calendarBase = document.createElement('div'); var lastSelect = false; calendarBase.setAttribute('id',name+'calendarBase'); calendarBase.style.width = myWidth+'px'; calendarBase.style.height = myHeight+'px'; calendarBase.style.position = 'absolute'; var rowsAndDate = getRowsAndDate(); var weekDaysNames = getDaysNames(); var calendarBody = getCalendarBody(globalDate); calendarBase.appendChild(rowsAndDate); calendarBase.appendChild(weekDaysNames); calendarBase.appendChild(calendarBody); createWidget(name+'_Container',father,calendarBase,horiz,vert,x,y,myWidth,myHeight,"eyeCalendar",cent,'px',visible); function getRowsAndDate() { var rowsAndDate = document.createElement('div'); rowsAndDate.setAttribute('id',name+'rowsAndDate'); rowsAndDate.style.position = 'absolute'; rowsAndDate.style.top = '2%'; rowsAndDate.style.width = '100%'; rowsAndDate.style.height = '12%'; rowsAndDate.style.color = params['rowsAndDate']; rowsAndDate.style.fontSize = '9px'; rowsAndDate.style.fontWeight = 'bold'; rowsAndDate.style.textAlign = 'center'; var rowLeft = document.createElement('div'); rowLeft.setAttribute('id',name+'rowLeft'); rowLeft.style.position = 'absolute'; rowLeft.style.left = '0%'; rowLeft.style.width = '24%'; rowLeft.style.height = '100%'; rowLeft.style.cursor = 'pointer'; xAddEventListener(rowLeft,'click',previousMonth); var text = document.createTextNode('<<'); rowLeft.appendChild(text); var dateMiddle = document.createElement('div'); dateMiddle.setAttribute('id',name+'dateMiddle'); dateMiddle.style.position = 'absolute'; dateMiddle.style.left = '24%'; dateMiddle.style.width = '52%'; dateMiddle.style.height = '100%'; text = document.createTextNode(monthNames[globalMonth]+' '+globalYear); dateMiddle.appendChild(text); var rowRight = document.createElement('div'); rowRight.setAttribute('id',name+'rowRight'); rowRight.style.position = 'absolute'; rowRight.style.right = '0%'; rowRight.style.width = '24%'; rowRight.style.height = '100%'; rowRight.style.cursor = 'pointer'; xAddEventListener(rowRight,'click',nextMonth); text = document.createTextNode('>>'); rowRight.appendChild(text); rowsAndDate.appendChild(rowLeft); rowsAndDate.appendChild(dateMiddle); rowsAndDate.appendChild(rowRight); return rowsAndDate; } function getDaysNames() { //At the moment, only show the week in this order: sunday monday....saturday. var x = 0;//for loops var weekDaysNames = document.createElement('div'); weekDaysNames.setAttribute('id',name+'weekDaysNames'); weekDaysNames.style.width = '100%'; weekDaysNames.style.height = '12%'; weekDaysNames.style.position = 'absolute'; weekDaysNames.style.top = '15%'; weekDaysNames.style.left = '1px'; weekDaysNames.style.backgroundColor = params['backgroundNames']; var dayNameContent = document.createElement('div'); dayNameContent.style.textAlign = 'center'; var left = 11; for(x=0;x<7;x++) { var dayName = document.createElement('div'); dayName.style.left = left+'%' dayName.style.width ='9%'; dayName.style.lineHeight ='136%'; dayName.style.position = 'absolute'; dayName.style.color = params['dayName']; dayName.style.fontSize = '1em'; var text = document.createTextNode(weekDays[x]); dayName.appendChild(text); dayNameContent.appendChild(dayName); left = left+12; } weekDaysNames.appendChild(dayNameContent); return weekDaysNames; } function getCalendarBody() { var date = new Date(); date.setMonth(globalMonth); date.setYear(globalYear); var x,y = 0;//For bucles date.setDate(1);//First day of month var dayOfWeek = date.getDay(); var calendarBody = document.createElement('div'); calendarBody.style.width = '100%'; calendarBody.style.height = '70%'; calendarBody.style.position = 'absolute'; calendarBody.style.top = '25%'; calendarBody.style.left = '1px'; //Calculating the the month lenght. var preMonthLenght = getMonthDays(globalMonth-1); var monthLenght = getMonthDays(globalMonth); var nextMonthLenght = getMonthDays(globalMonth+1); //Creating the array with day numbers. //First fill the first days of first week. var dayNums = new Array(0);//I will use push ,metoth var dayColors = new Array(0); var monthDay = new Array(0); for(x=dayOfWeek-1;x>=0;x--) { dayNums.push(preMonthLenght-x); dayColors.push(params['preMonthDays']);//Hardcoded at the moment } //Fill all month day for(x=1;x<=monthLenght;x++) { dayNums.push(x); date.setDate(x); if(date.getDay() == 0 || date.getDay() == 6) { dayColors.push(params['weekEnd']); }else{ dayColors.push(params['workDays']);//Hardcoded at the moment } } //Fill rest days var rest = 35-dayNums.length; for(x=1;x<=rest;x++) { dayNums.push(x); dayColors.push(params['nextMonthDays']);//Hardcoded at the moment } //Now, fill the body with days! var top = 7.5;//Hardcoded at the moment var count = 0; var vdate = new Date(); // for today for(x=0;x<5;x++) { var weekMonth = document.createElement('div'); weekMonth.style.width = '99%'; weekMonth.style.height = '16%'; weekMonth.style.position = 'absolute'; weekMonth.style.top = top+'%'; weekMonth.style.left = '0%'; if(weekHighlight != false && weekHighlight == x && drawHighlight != 0){ weekMonth.style.backgroundColor = params['clickedWeek']; weekMonth.style.borderColor = params['clickedWeek']; weekMonth.style.borderStyle = 'solid'; weekMonth.style.borderWidth = '1px'; } var left = 11; var vdate = new Date(); for(y=0;y<7;y++) { var weekDay = document.createElement('div'); weekDay.style.position = 'absolute'; weekDay.style.left = left+'%'; weekDay.style.width = '9%'; weekDay.style.textAlign = 'center'; weekDay.style.height = '90%'; weekDay.style.fontSize = '10px'; weekDay.style.fontFamily = 'verdana'; weekDay.style.color = dayColors[count]; //!!! the dayColors fix is only for some time, in the next version this days will send a correct data if(dayColors[count] != params['preMonthDays'] && dayColors[count] != params['nextMonthDays']) { weekDay.style.cursor = 'pointer'; if(dayNums[count] == vdate.getDate() && globalMonth == vdate.getMonth() && globalYear == vdate.getFullYear()){ weekDay.style.border = 'solid 1px'; weekDay.style.borderColor = params['todayBorder']; weekDay.style.color = params['todayFontColor']; weekDay.style.backgroundColor = params['todayBackground']; weekMonth.style.backgroundColor = params['toWeekBackground']; weekMonth.style.borderColor = params['toWeekBackground']; weekMonth.style.borderStyle = 'solid'; weekMonth.style.borderWidth = '1px'; weekMonth.current = true; weekDay.current = true; weekHighlight = x; } if(drawServerDate != ''){ if(dayNums[count] == drawServerDate.getDate() && globalMonth == drawServerDate.getMonth() && globalYear == drawServerDate.getFullYear()){ weekDay.style.border = 'solid 1px'; weekDay.style.borderColor = params['clickedBorder']; weekMonth.style.backgroundColor = params['clickedWeek']; weekMonth.style.borderColor = params['clickedWeek']; weekMonth.style.borderStyle = 'solid'; weekMonth.style.borderWidth = '1px'; lastSelect = weekDay; } } }else{ weekDay.style.cursor = 'default'; } weekDay.day = dayNums[count];//Calcule the day of the month var text = document.createTextNode(dayNums[count]); //!!! the dayColors fix is only for some time, in the next version this days will send a correct data if(selectFunc != '' && dayColors[count] != params['preMonthDays'] && dayColors[count] != params['nextMonthDays']) { xAddEventListener(weekDay,'click',selectFunctionParser); } weekDay.appendChild(text); weekMonth.appendChild(weekDay); count++; left = left + 12; } calendarBody.appendChild(weekMonth); top = top+17; } return calendarBody; } function previousMonth() { calendarBase.removeChild(calendarBody); if(globalMonth == 0) { globalMonth = 11; globalYear = globalYear-1; globalDate.setFullYear(globalYear); }else{ globalMonth = globalMonth-1; } globalDate.setMonth(globalMonth); calendarBody = getCalendarBody(); calendarBase.appendChild(calendarBody); var dateMiddle = document.getElementById(name+'dateMiddle'); var textNode = dateMiddle.firstChild; textNode.replaceData(0,textNode.length,monthNames[globalMonth]+' '+globalYear); var newDate = new Date(); newDate.setMonth(globalMonth); newDate.setYear(globalYear); newDate.setDate(myDay); sendMsg(checknum,selectFunc,eyeParam('date',newDate.getTime())); } function nextMonth() { calendarBase.removeChild(calendarBody); if(globalMonth == 11) { globalMonth = 0; globalYear = globalYear+1; globalDate.setFullYear(globalYear); }else{ globalMonth = globalMonth+1; } globalDate.setMonth(globalMonth); calendarBody = getCalendarBody(); calendarBase.appendChild(calendarBody); var dateMiddle = document.getElementById(name+'dateMiddle'); var textNode = dateMiddle.firstChild; textNode.replaceData(0,textNode.length,monthNames[globalMonth]+' '+globalYear); var newDate = new Date(); newDate.setMonth(globalMonth); newDate.setYear(globalYear); newDate.setDate(myDay); sendMsg(checknum,selectFunc,eyeParam('date',newDate.getTime())); } function getMonthDays(myMonth) { if(myMonth == 3 || myMonth == 5 || myMonth == 8 || myMonth == 10) { return 30; }else if(myMonth == 1){ /*A little hack for caculate if february have 28 or 29 days.*/ var date = new Date(); date.setMonth(2); date.setDate(0); return date.getDate(); }else{ return 31; } } function selectFunctionParser(e) { var event = new xEvent(e); var target = event.target; if(drawOnClick != 0){ if(lastSelect != false){ if(lastSelect.current != true){ lastSelect.style.border = ''; } if(lastSelect.parentNode && lastSelect.parentNode.current != true){ lastSelect.parentNode.style.backgroundColor = ''; lastSelect.parentNode.style.border = ''; } } if(target.current != true){ target.style.borderStyle = 'solid'; target.style.borderColor = params['clickedBorder']; target.style.borderWidth = '1px'; } if(target.parentNode.current != true){ target.parentNode.style.borderStyle = 'solid'; target.parentNode.style.borderColor = params['clickedWeek']; target.parentNode.style.borderWidth = '1px'; target.parentNode.style.backgroundColor = params['clickedWeek']; } } lastSelect = target; var dayClicked = target.day; myDay = dayClicked; var selectDate = new Date(); selectDate.setMonth(globalMonth); selectDate.setYear(globalYear); selectDate.setDate(dayClicked); sendMsg(checknum,selectFunc,eyeParam('date',selectDate.getTime())); } } function Checkbox_show(params,name,father,x,y,horiz,vert,checknum,cent) { var text = tinyMCE.entityDecode(params["text"]); var checked = params["checked"]; var enabled = params["enabled"]; var visible = params["visible"]; var myCheckbox = document.createElement('input'); myCheckbox.setAttribute('type', 'checkbox'); var myContainer = document.createElement('div'); myContainer.setAttribute('id',name+'_textContainer'); if(checked == 1) { if(IEversion > 0) { myCheckbox.defaultChecked = true; } else { myCheckbox.setAttribute('checked',true); } } if (enabled == 0) { myCheckbox.disabled = 1; } myCheckbox.setAttribute('id',name); myCheckbox.className = 'eyeCheckbox'; myContainer.appendChild(myCheckbox); myContainer.className='eyeCheckboxText'; theText=document.createTextNode(text); myContainer.appendChild(theText); createWidget(name+'_Container',father,myContainer,horiz,vert,x,y,-1,-1,"eyeCheckboxContainer",cent,'px',visible); } function Container_show(params,name,father,x,y,horiz,vert,checknum,cent) { var myheight = parseInt(params["height"]); var mywidth = parseInt(params["width"]); var unit = params["unit"]; var visible = params["visible"]; var myContainer = document.createElement("div"); if(myheight > 0) { myContainer.style.height = myheight + unit; } if(mywidth > 0){ myContainer.style.width = mywidth + unit; } myContainer.setAttribute('id',name); createWidget(name+'_Container',father,myContainer,horiz,vert,x,y,-1,-1,"eyeContainerContainer",cent,unit,visible); } function Flash_show(params,name,father,x,y,horiz,vert,checknum,cent) { var height = params["height"]; var width = params["width"]; var src = params["src"]; var visible = params["visible"]; var flashParamsNames = getArrayArg(params["flashParamsNames"]); var flashParamsValues = getArrayArg(params["flashParamsValues"]); var flashvars = ''; for(key in flashParamsNames){ if (flashParamsNames[key].toLowerCase() == "flashvars") { flashvars = "?"+flashParamsValues[key]; } } if (IEversion == 0) { var myFlash = document.createElement("object"); myFlash.setAttribute('width',width); myFlash.setAttribute('height',height); myFlash.setAttribute('data',src); myFlash.setAttribute('type','application/x-shockwave-flash'); myFlash.setAttribute('id', name); for(key in flashParamsNames){ var myTempParam = document.createElement('param'); myTempParam.setAttribute('name',flashParamsNames[key]); myTempParam.setAttribute('value',flashParamsValues[key]); myFlash.appendChild(myTempParam); } } else { var myFlash = document.createElement("div"); myFlash.setAttribute('id', name); myFlash.setAttribute('width',width); myFlash.setAttribute('height',height); //FIXME! NON STANDARD METHOD ( tag is deprecated) //Should be replaced by an element as soon as it is easily possible in IE... var myEmbedObject = document.createElement("embed"); myEmbedObject.setAttribute('src', src+flashvars); myEmbedObject.setAttribute('quality', 'high'); myEmbedObject.setAttribute('width', width); myEmbedObject.setAttribute('height', height); myEmbedObject.setAttribute('type', 'application/x-shockwave-flash'); myEmbedObject.setAttribute('style', 'position: absolute; top: 0; right: 0;'); myFlash.appendChild(myEmbedObject); } createWidget(name+'_Container',father,myFlash,horiz,vert,x,y,width,height,"eyeFlash",cent,'px',visible); } function Hidden_show(params,name,father,x,y,horiz,vert,checknum,cent) { var text = params["text"]; var myHidden = document.createElement('input'); myHidden.setAttribute('type','hidden'); if(text) { myHidden.value = text; } myHidden.setAttribute('id',name); myHidden.className = 'eyeHidden'; createWidget(name+'_Container',father,myHidden,horiz,vert,x,y,-1,-1,"eyeTextboxContainer",cent); } function Icon_show(params,name,father,x,y,horiz,vert,checknum) { var text = params["text"]; var image = params["image"]; var draggable = params["draggable"]; var onclick = params["onclick"]; var content = params["content"]; var myWidth = params["width"]; var myHeight = params["height"]; var visible = params["visible"]; var myOnLoad = params["myonload"]; var realname = params["realname"]; var overBorder = params["overBorder"]; var overBorderBackground = params["overBorderBg"]; var overBorderColor = params["overBorderColor"]; var textColor = params["textColor"]; var myGlobalContainer = document.createElement('div'); myGlobalContainer.style.width='65px'; myGlobalContainer.setAttribute('id',name+'_globalContainer'); var myImage = document.createElement('img'); if(myOnLoad != null) { myImage.onload=function(){eval(myOnLoad);}; } myImage.src = image; myImage.setAttribute('id','img_'+name); myImage.className = 'eyeIcon_Image'; if(myWidth > 0) { myImage.setAttribute('width',myWidth); } if(myHeight > 0) { myImage.setAttribute('height',myHeight); } var myIconText = document.createElement('div'); myIconText.className = 'eyeIcon_Text'; myIconText.setAttribute('align','center'); myIconText.setAttribute('id',name+'_text'); myIconText.style.width = '65px'; text = tinyMCE.entityDecode(text); var theText = document.createTextNode(text); myIconText.appendChild(theText); myGlobalContainer.appendChild(myImage); myGlobalContainer.appendChild(myIconText); var myContent = document.createElement('input'); myContent.setAttribute('type', 'hidden'); myContent.setAttribute('id',name+'_Content'); myContent.value = content; myGlobalContainer.appendChild(myContent); realname = tinyMCE.entityDecode(realname); if(overBorder != 0) { if(IEversion > 1 && IEversion < 7) { myGlobalContainer.style.border = 'none'; } else { myGlobalContainer.onmouseover = function() { myGlobalContainer.style.backgroundColor = overBorderBackground; myGlobalContainer.style.border = overBorderColor; myIconText.innerHTML = ""; myIconText.appendChild(document.createTextNode(realname)); } myGlobalContainer.onmouseout = function() { myGlobalContainer.style.border = '1px solid transparent'; myGlobalContainer.style.backgroundColor = 'transparent'; myIconText.innerHTML = ""; myIconText.appendChild(document.createTextNode(text)); } myGlobalContainer.style.border = '1px solid transparent'; } } createWidget(name+'_Container',father,myGlobalContainer,horiz,vert,x,y,-1,-1,"eyeIcon",0,'px',visible); var globalContainer = xGetElementById(name+'_Container'); globalContainer.checknum = checknum; globalContainer.style.color = textColor; if (draggable==1) { makeDrag(name+'_Container',father,'iconDragUpdate',checknum,content,1); } if(onclick==1){ myGlobalContainer.onclick = function(){ var myContent = getArrayArg(content); var result = ''; for (var i in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[i])); } sendMsg(checknum,'Icon_Clicked',result); } } } widgetDrop_behaviours = []; widgetDrops_ie = []; dropIndex = 400; function WidgetDrop_show(params,name,father,x,y,horiz,vert,checknum){ //I don't know how it works under ie 8 if(IEversion > 1 && IEversion < 8){ if(!widgetDrops_ie[checknum]){ widgetDrops_ie[checknum] = []; } widgetDrops_ie[checknum].push(father); } var widget = xGetElementById(father); var cOrder = params['cOrder']; var callback = params['callback']; var signal = params['signal']; var sender = params['sender']; var mySelf = params['mySelf']; //This is a wrapper function for handle the differents options when drop happens var widgetDrop = function widgetDrop(drop,drag,x,y,event){ //If cOrder is 1 or 3, callback is called before send the msg. if(drag.id && drop.id){ if(drag.id == drop.id && mySelf == false){ return true; } } if((cOrder == 1 || cOrder == 3) && callback){ _execDropCallback(callback,drop,drag,x,y,event,checknum,1); } //If sendMsg is true, a msg will be send if(signal){ if(drop.content){ var myContent = getArrayArg(drop.content); var result = ''; for (var i in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[i])); } sendMsg(checknum,signal,result); } } if(sender){ if(drag.content){ var myContent = getArrayArg(drag.content); var result = ''; for (var i in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[i])); } sendMsg(drag.checknum,sender,result); } } if(widgetDrop_behaviours[name]){ try{ eval("var behaviour = new "+widgetDrop_behaviours[name][0]+"('"+name+"');"); behaviour.start(drop,drag,x,y,event,checknum); }catch(err){ //waiting to eyeOS debug system } } //If cOrder is 2 or 3, callback is called after sendMsg if((cOrder == 2 || cOrder == 3) && callback){ _execDropCallback(callback,drop,drag,x,y,event,checknum,2); } } function _execDropCallback(callback,drop,drag,x,y,event,checknum,num){ if(typeof(callback) == 'string'){ try{ eval(callback); }catch(err){ } }else{ callback(drop,drag,x,y,event,checknum,num); } } xEnableDrop(widget,widgetDrop); } function addDropBehaviour(params,name,type){ //Adding the behaviour to behaviour array try{ //NOTE: I eval the classes directly for javascript load problems (in each browser is different) widgetDrop_behaviours[name] = []; widgetDrop_behaviours[name][0] = type; widgetDrop_behaviours[name][1] = params; }catch(err){ //Waiting to eyeOS debug try{ console.log(err); }catch(err){ //none } } } function widgetDrop_simpleMenu(name){ this.params = widgetDrop_behaviours[name][1]; this.start = function start(drop,drag,x,y,event,checknum){ this.action(drop,drag,x,y,event,checknum); } this.action = function (drop,drag,x,y,event,checknum){ //If drag have content if(drop.father == drag.father){ return false; } var result = ''; var i = 1; if(drag.content){ var myContent = getArrayArg(drag.content); for (var x in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[x])); i++; } } //if simpleMenu behaviour if(this.params['content']){ var myContent = getArrayArg(this.params['content']); for (var x in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[x])); i++; } } sendMsg(checknum,this.params['signal'],result); //mostramos menu showSimpleMenu(event,this.params['widgetId']); } } function widgetDrop_simpleMsg(name){ this.params = widgetDrop_behaviours[name][1]; this.start = function start(drop,drag,x,y,event,checknum){ this.action(drop,drag,x,y,event,checknum); } this.action = function (drop,drag,x,y,event,checknum){ //If drag have content if(drop.father == drag.father || !drag.myPid){ return false; } var result = ''; var i = 0; if(drag.content){ var myContent = getArrayArg(drag.content); for (var x in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[x])); i++; } } if(this.params['content']){ result += eyeParam('arg'+i,tinyMCE.entityDecode(this.params['content'])); i++; } sendMsg(checknum,this.params['signal'],result); } } function moveAndClick(name){ this.params = widgetDrop_behaviours[name][1]; this.start = function start(drop,drag,x,y,event,checknum){ if(!drag.myPid){ return false; } var dropPid = this.params['pid']; var iconPid = drag.myPid; //If drag is an eyeFiles icon child, only move it //If not is a child, trhow th emenu if(dropPid == iconPid){ this.moveAction(drop,drag,x,y,event,checknum); }else{ this.menuAction(drop,drag,x,y,event,checknum); } } this.moveAction = function moveAction(drop,drag,x,y,event,checknum){ this.moveUpdate(drag.id,xLeft(drag),xTop(drag),drag.diffX,drag.diffY,drag.checknum,drag.content); drag.style.left = drag.diffX+'px'; drag.style.top = drag.diffY+'px'; } this.menuAction = function menuAction(drop,drag,x,y,event,checknum){ var result = ''; var i = 0; if(drag.content){ var myContent = getArrayArg(drag.content); for (var x in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[x])); i++; } } if(this.params['content']){ result += eyeParam('arg'+i,tinyMCE.entityDecode(this.params['content'])); i++; } sendMsg(checknum,this.params['signal'],result); } this.moveUpdate = function moveUpdate(widgetid,ancientX,ancientY,newX,newY,checknum,content) { var minDiff = 0;//hardcoded at the moment var movedX = newX - ancientX; var movedY = newY - ancientY; var myContent = getArrayArg(content); /*var result=""; for (var i in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[i])); }*/ if ((movedX > minDiff || movedX < (minDiff)) || ((movedY > minDiff || movedY < minDiff))) { var sendxml = eyeParam('eyeArg',eyeParam('content',myContent[0])+eyeParam('newX',newX)+eyeParam('newY',newY)+eyeParam('rName',myContent[4]),1); sendMsg(checknum,'Icon_Moved',sendxml); } } } //Handle drag and drop callbacks //ele = the element that the callback will be applied //dragWidget = the widget that will be moved with drag & drop action //contnet = the information that will recive the drop object //checknum = checknum, needed for sendMsg //clickCallback = if the user only click, it can activate a callback //clickSignal = if the user only click, a msg is send //cursor = the cursor that will be setted on global father (eyeapps) //cursorPos = 0: natural position, 1: the mouse is in the top-left corner. //overload = When overload is true, only the *Back functions are called. //params,name,father,x,y,horiz,vert,checknum function WidgetDrag_show(params,name,father,x,y,horiz,vert,checknum,cent){ //Initialing some local vars, needed in some browsers for share it between subfunctions var widget= xGetElementById(father); var dragWidget = xGetElementById(father).cloneNode(true); var dragCssNames = getArrayArg(params['dragCssNames']); var dragCssContent = getArrayArg(params['dragCssContent']); var content = params['content']; var clickCallback = params['clickCallback']; var clickSignal = params['clickSignal']; var cursor = params['cursor']; var cursorPos = params['cursorPos']; var dragAlpha = params['dragAlpha']; var myPid = params['myPid']; widget.myPid = myPid; widget.drag = dragWidget; widget.father = father; widget.content = content; var startX = 0; var startY = 0; var cursorBack = ''; var xBack = widget.style.left; var yBack = widget.style.top; var dragStarted = false; //This is called when user mousedown in a drag element var widgetDragStart = function widgetDragStart(ele,mouseX,mouseY,event){ //If overLoad is true, call only the start callback function //Restarting the initial values dragWidget.style.left = xBack; dragWidget.style.top = yBack; startX = 0; startY = 0; widget.diffX = xLeft(widget); widget.diffY = xTop(widget); //The drag don't start if the mouse isn't moved dragStarted = false; //Respect where de user click in the drag object try{ var left = xGetElementById('eyeApps').style.marginLeft; left = left.substr(0,left.length - 2); }catch(err){ var left = null; } if(cursorPos == 0 && !left){ startX = mouseX-event.offsetX; startY = mouseY-event.offsetY; //Position the mouse in the corner }else if(cursorPos == 0 && left){ startX = mouseX-event.offsetX; startX = startX -left; startY = mouseY-event.offsetY; }else if(cursorPos == 1){ startX = mouseX; startY = mouseY; } } //Called when dragWidget is moved (onmousemove) var widgetDragMove = function widgetDragMove(ele,mouseDX,mouseDY,bWithinRect,xEventObj){ //If the drag isn't started, start it. Set some vars and create the real dragWidget if(dragStarted == false){ dragStarted = true;//Now drag is started because mouse is moved var eyeApps = xGetElementById('eyeApps');//Getting global father //Setting the style eyeApps.style.cursor = cursor; dragWidget.style.cursor = cursor //Moving the dragWidget to start position xMoveTo(dragWidget,startX,startY); //Adding it to global father dragWidget.setAttribute('id',father+'_drag');//Setting a unique id eyeApps.appendChild(dragWidget); xZIndex(dragWidget, zindex);zindex++;//Moving it on top of layers //updating the css style if it is set if(dragCssNames){ for (var i in dragCssNames) { updateCss(dragWidget.id,dragCssNames[i],dragCssContent[i]); } } if(dragAlpha){ updateOpacityOnce(dragAlpha,dragWidget.id); } //If drag is started, only move the dragWidget }else{ //Moving seamless widget.diffX += mouseDX; widget.diffY += mouseDY; xMoveTo(dragWidget,xLeft(dragWidget)+mouseDX,xTop(dragWidget)+mouseDY); } } //This is called when user "mouseup" the cursor. var widgetDragEnd = function widgetDragEnd(ele,mouseX,mouseY,xEventObj){ //If drag isn't started, only simulate a click with a custom function. if(dragStarted == false){ //If callback is passed as argument, call it if(clickCallback){ _execDragCallback(clickCallback,ele,mouseX,mouseY,xEventObj); } var myContent = getArrayArg(content); var result = ''; for (var i in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[i])); } if(clickSignal){ sendMsg(checknum,clickSignal,result); } //If drag started, restart the initial values }else{ dragWidget.parentNode.removeChild(dragWidget); } xGetElementById('eyeApps').style.cursor=cursorBack; } xEnableDrag(widget,widgetDragStart,widgetDragMove,widgetDragEnd,'eyeApps'); } function _execDragCallback(clickCallback,ele,mouseX,mouseY,xEventObj){ if(typeof(callback) == 'string'){ try{ eval(callback); }catch(err){ } }else{ callback(ele,mouseX,mouseY,xEventObj); } } function iconDragUpdate(widgetid,ancientX,ancientY,newX,newY,checknum,content) { var movedX = newX - ancientX; var movedY = newY - ancientY; myContent = getArrayArg(content); var result=""; for (var i in myContent) { result += eyeParam('arg'+i,tinyMCE.entityDecode(myContent[i])); } if (movedX < 1 && movedX > (-1) && movedY < 1 && movedY > (-1)) { sendMsg(checknum,'Icon_Clicked',result); } else { var sendxml = eyeParam('eyeArg',eyeParam('content',content)+eyeParam('newX',newX)+eyeParam('newY',newY),1); sendMsg(checknum,'Icon_Moved',sendxml); } } function Iframe_show(params,name,father,x,y,horiz,vert,checknum,cent) { var url = params["url"]; var myheight = params["height"]; var mywidth = params["width"]; var visible = params["visible"]; var scroll = params["scroll"]; var myFrame = document.createElement('iframe'); myFrame.setAttribute('id',name); myFrame.setAttribute('name',name); myFrame.setAttribute('src',url); myFrame.setAttribute('width',mywidth); myFrame.setAttribute('height',myheight); myFrame.style.border='0px solid black'; myFrame.frameBorder='no'; if(scroll == 0) { myFrame.setAttribute('scrolling','no'); } createWidget(name+'_Container',father,myFrame,horiz,vert,x,y,-1,-1,"eyeIframe",cent,'px',visible); } function Imagebox_show(params,name,father,x,y,horiz,vert,checknum,cent) { var url = params["url"]; var visible = params["visible"]; var alt = params["alt"]; var myWidth = params["width"]; var myHeight = params["height"]; var myClass = params["cssClass"]; var sig = params["signal"]; var sync = params["sync"]; var dis = params["disableMsg"]; var myImage = document.createElement('img'); myImage.src=url; myImage.setAttribute('alt',alt); if(myWidth > 0) { myImage.setAttribute('width',myWidth); } if(myHeight > 0) { myImage.setAttribute('height',myHeight); } myImage.setAttribute('id',name); if(dis == 0) { myImage.onclick = function(){sendMsg(checknum,sig,eval(sync))}; } if(myClass != '') { createWidget(name+'_Container',father,myImage,horiz,vert,x,y,myWidth,myHeight,myClass,cent,'px',visible); } else { createWidget(name+'_Container',father,myImage,horiz,vert,x,y,myWidth,myHeight,"eyeImagebox",cent,'px',visible); } } function Label_show(params,name,father,x,y,horiz,vert,checknum,cent) { var text = params["text"]; var visible = params["visible"]; var sync = params["sync"]; var dis = params["disablemsg"]; var sig = params["signal"]; var myLabel = document.createElement('div'); myLabel.setAttribute('id',name); if(dis == 0) { myLabel.onclick = function() {sendMsg(checknum,sig,eyeParam(name,text)+eval(sync))}; } text = tinyMCE.entityDecode(text); myLabel.appendChild(document.createTextNode(text)); createWidget(name+'_Container',father,myLabel,horiz,vert,x,y,-1,-1,"eyeLabel",cent,'px',visible); } function Radio_show(params,name,father,x,y,horiz,vert,checknum,cent) { var checked = params["checked"]; var enabled = params["enabled"]; var visible = params["visible"]; var content = getArrayArg(params["content"]); var myDiv = document.createElement("div"); var myRadio; var currentValue; for(i=0;i 0) { mySelect.style.width = mywidth+'px'; } mySelect.setAttribute('id',name); mySelect.className = 'eyeSelect'; createWidget(name+'_Container',father,mySelect,horiz,vert,x,y,-1,-1,"",cent,'px',visible); } function Sortabletable_show(params,name,father,x,y,horiz,vert,checknum,cent) { var visible = params["visible"]; var myTheader = getArrayArg(params["theader"]); var width = params["width"]; var height = params["height"]; var sizeUnit = params["sizeUnit"]; var signal = params["signal"]; var dsignal = params["doubleClickSignal"]; var sortypes = getArrayArg(params["sortypes"]); var master = params["master"]; var realName = params["realName"]; var tBorder = params["border"]; var oTable = document.createElement("TABLE"); var oTHead = document.createElement("THEAD"); var oTBody = document.createElement("TBODY"); var widget = document.createElement('div'); widget.style.width=width+sizeUnit; widget.style.height=height+sizeUnit; widget.className='sort-table-container'; widget.setAttribute('id',name+'_generalContainer'); if(tBorder != 1) { widget.style.border = '0px'; } var oRow, oCell; var i,j; var myRows; var strSortypes = '['; var myHiddens = new Array(); for(keyVar in sortypes) { if(sortypes[keyVar] == 'Hidden') { myHiddens[keyVar] = 1; } else { myHiddens[keyVar] = 0; } if(strSortypes == '[') { strSortypes += '"'+sortypes[keyVar]+'"'; } else { strSortypes += ',"'+sortypes[keyVar]+'"'; } } strSortypes += ']'; //create the header oRow = document.createElement("TR"); for(i=0;i descending, false -> ascending SortableTable.prototype.defaultDescending = false; // shared between all instances. This is intentional to allow external files // to modify the prototype SortableTable.prototype._sortTypeInfo = {}; SortableTable.prototype.setTable = function (oTable) { if ( this.tHead ) this.uninitHeader(); this.element = oTable; this.setTHead( oTable.tHead ); this.setTBody( oTable.tBodies[0] ); }; SortableTable.prototype.setTHead = function (oTHead) { if (this.tHead && this.tHead != oTHead ) this.uninitHeader(); this.tHead = oTHead; this.initHeader( this.sortTypes ); }; SortableTable.prototype.addEntry = function(entry) { var myEntry = getArrayArg(entry); var oRow = document.createElement("TR"); var i=0; var oCell=0; var sortypes = this.normalSort; var myHiddens = new Array(); var myHtml = new Array(); for(keyVar in sortypes) { if(sortypes[keyVar] == 'Hidden') { myHiddens[keyVar] = 1; } else { myHiddens[keyVar] = 0; } if(sortypes[keyVar] == 'Html') { myHtml[keyVar] = 1; } else if(sortypes[keyVar] == 'HtmlButNoSort') { myHtml[keyVar] = 1; } else { myHtml[keyVar] = 0; } } for(i=0;i