/* ____ _____ / __ \ / ____| ___ _ _ ___| | | | (___ / _ \ | | |/ _ \ | | |\___ \ | __/ |_| | __/ |__| |____) | \___|\__, |\___|\____/|_____/ __/ | |___/ 1.8 Web Operating System eyeOS.org eyeOS Engineering Team - www.eyeos.org/team 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-2009 eyeOS Team (team@eyeos.org) */ focusWindow = ''; txtAreas = new Object(); 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 || IEversion > 8) { 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,'Box'); } 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.className = 'eyeLine'; myLine.style.fontSize = '1px'; myLine.style.width = mywidth+'px'; myLine.style.height = myheight+'px'; createWidget(name+'_Container',father,myLine,horiz,vert,x,y,-1,-1,'eyeLineContainer',cent,'px',visible,'Line'); } 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?version='+EXTERN_CACHE_VERSION+'&extern=libs/eyeWidgets/getMultipleFile.eyecode&type=dynamic¶ms[]='+checknum+'¶ms[]='+callback+'¶ms[]='+filename+'¶ms[]='+pid) }else{ myIframe.setAttribute('src','index.php?version='+EXTERN_CACHE_VERSION+'&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,'File'); } 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){ divBox.className = "eyeSimplebox"; } createWidget(name+'_Container',father,divBox,horiz,vert,x,y,-1,-1,"eyeSimpleboxNoBorder",cent,'px',visible,'Simplebox'); } function Listbox_show(params,name,father,x,y,horiz,vert,checknum,cent) { var myheight = params["height"]; var mywidth = params["width"]; var visible = params["visible"]; var orientation = params["orientation"]; var divBox = document.createElement('div'); divBox.setAttribute('id',name); divBox.setAttribute('lastFocus',''); divBox.setAttribute('orientation',orientation); divBox.style.width = mywidth+'px'; divBox.style.height = myheight+'px'; divBox.className = "eyeListbox_box"; if(params["border"] == 1){ createWidget(name+'_Container',father,divBox,horiz,vert,x,y,-1,-1,"eyeSimplebox",cent,'px',visible,'Listbox'); }else{ createWidget(name+'_Container',father,divBox,horiz,vert,x,y,-1,-1,"eyeSimpleboxNoBorder",cent,'px',visible,'Listbox'); } } function Listbox_addItem(pid,name,checknum,sig,rowSize,text,id,image) { var obj = document.getElementById(pid+'_'+name); var orientation = obj.getAttribute('orientation'); if (orientation == 'vertical') { var divBox = document.createElement('div'); divBox.setAttribute('id',pid+'_'+id); divBox.style.height = rowSize + 'px'; if (image!=0) { var divImage = document.createElement('img'); divImage.setAttribute('src',image); divImage.className = "eyeListbox_img"; divBox.appendChild(divImage); } var divText = document.createElement('div'); divText.appendChild(document.createTextNode(text)); divText.className = "eyeListbox_txt"; divText.setAttribute('id','txt_'+id); divBox.appendChild(divText); obj.appendChild(divBox); divBox.onmouseover = function() { var lastFocus = obj.getAttribute('lastFocus'); if (lastFocus.length == 0 || lastFocus != id) { this.className = "eyeListbox_over"; } } divBox.onmouseout = function() { var lastFocus = obj.getAttribute('lastFocus'); if (lastFocus.length == 0 || lastFocus != id) { this.className = "eyeListbox_out"; } } divBox.onmousedown = function() { var lastFocus = obj.getAttribute('lastFocus'); if (lastFocus.length == 0) { obj.setAttribute('lastFocus',id); } else { var lastObj = document.getElementById(pid+'_'+lastFocus); if(lastObj) { lastObj.className = "eyeListbox_out"; } obj.setAttribute('lastFocus',id); } this.className = "eyeListbox_focus"; } divBox.onmouseup = function() { sendMsg(checknum,sig,eyeParam('id',id)); } } else { } } function Button_show(params,name,father,x,y,horiz,vert,checknum,cent) { var highlight = params['highlight']; 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 imgWidth = params["imgWidth"]; var imgHeight = params["imgHeight"]; 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; myButton.setAttribute('id',name+'_cpt_img'); if (imgWidth > 0) { myButton.style.width = imgWidth + 'px'; } if (imgHeight > 0) { myButton.style.height = imgHeight + 'px'; } 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(highlight == 1) { myButton.style.fontWeight = "bold"; } if(enabled == 0) { myButton.disabled=1; } if(myWidth > 0) { if(myImg != null) { myContainer.style.width = myWidth+'px'; myContent.style.width = (myWidth - imgWidth) + '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,'Button'); if (myImg != null) { fixPNG(myButton); } } function Calendar_show(params,name,father,x,y,horiz,vert,checknum,cent) { var myWidth = params['width']; var myPid = params['myPid']; 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 startMonday = params['startMonday']; 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,'Calendar'); function getRowsAndDate() { var rowsAndDate = document.createElement('div'); rowsAndDate.setAttribute('id',name+'rowsAndDate'); rowsAndDate.style.color = params['rowsAndDate']; rowsAndDate.className = 'calendar_rowsAndDate'; var rowLeft = document.createElement('div'); rowLeft.setAttribute('id',name+'rowLeft'); rowLeft.className = 'calendar_rowLeft'; xAddEventListener(rowLeft,'click',previousMonth); var text = document.createTextNode('<<'); rowLeft.appendChild(text); var dateMiddle = document.createElement('div'); dateMiddle.setAttribute('id',name+'dateMiddle'); dateMiddle.className = 'calendar_dateMiddle'; text = document.createTextNode(monthNames[globalMonth]+' '+globalYear); dateMiddle.appendChild(text); var rowRight = document.createElement('div'); rowRight.setAttribute('id',name+'rowRight'); rowRight.className = 'calendar_rowRight'; 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.className = 'calendar_weekDaysNames'; 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.color = params['dayName']; dayName.className = 'calendar_dayName'; 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.className = 'calendar_calendarBody'; //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); var dayIds = new Array(0); var discount = 1; if(startMonday == 1){ if(dayOfWeek == 0){ dayOfWeek = 7; }else if(dayOfWeek == 6){ dayOfWeek = 0; } discount = 2; } for(x=dayOfWeek-discount;x>=0;x--) { dayNums.push(preMonthLenght-x); dayIds.push(name+'_'+(preMonthLenght-x)+'_pre'); dayColors.push(params['preMonthDays']);//Hardcoded at the moment } //Fill all month day for(x=1;x<=monthLenght;x++) { dayNums.push(x); dayIds.push(name+'_'+x+'_current'); 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 = 42-dayNums.length; for(x=1;x<=rest;x++) { dayNums.push(x); dayIds.push(name+'_'+x+'_rest' ); 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<6;x++) { var weekMonth = document.createElement('div'); weekMonth.className = 'calendar_weekMonth'; weekMonth.style.top = top+'%'; /*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.className = 'calendar_weekDay'; weekDay.style.left = left+'%'; weekDay.style.color = dayColors[count]; weekDay.setAttribute('id',dayIds[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.className = 'calendar_weekDayToday'; weekDay.style.borderColor = params['todayBorder']; weekDay.style.color = params['todayFontColor']; weekDay.style.backgroundColor = params['todayBackground']; weekMonth.className = 'calendar_weekMonthToday'; weekMonth.style.backgroundColor = params['toWeekBackground']; weekMonth.style.borderColor = params['toWeekBackground']; weekMonth.current = true; weekDay.current = true; weekHighlight = x; } if(drawServerDate != ''){ if(dayNums[count] == drawServerDate.getDate() && globalMonth == drawServerDate.getMonth() && globalYear == drawServerDate.getFullYear()){ weekDay.className = 'calendar_weekDayClicked'; weekDay.style.borderColor = params['clickedBorder']; weekMonth.className = 'calendar_weekMonthClicked'; weekMonth.style.backgroundColor = params['clickedWeek']; weekMonth.style.borderColor = params['clickedWeek']; 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 myWidth = params["width"]; var myCheckbox = document.createElement('input'); myCheckbox.setAttribute('type', 'checkbox'); var myContainer = document.createElement('div'); myContainer.setAttribute('id',name+'_textContainer'); if(checked == 1) { if(IEversion && IEversion < 8) { myCheckbox.defaultChecked = true; } else { myCheckbox.setAttribute('checked',true); } } if (enabled == 0) { myCheckbox.disabled = 1; } if (myWidth > 0) { myContainer.style.width = myWidth + 'px'; } 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,'Checkbox'); } 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,'Container'); } 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 || IEversion > 7) { 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,'Flash'); } 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,'Hidden'); } 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 useClass = params["useClass"]; overClass = params["overClass"]; 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 && 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'; } } if(useClass != 0){ myGlobalContainer.onmouseover = function() { myIconText.innerHTML = ""; myIconText.appendChild(document.createTextNode(realname)); } myGlobalContainer.onmouseout = function() { myIconText.innerHTML = ""; myIconText.appendChild(document.createTextNode(text)); } } createWidget(name+'_Container',father,myGlobalContainer,horiz,vert,x,y,-1,-1,'eyeIcon_blank',0,'px',visible,'Icon'); xGetElementById(name + '_globalContainer').className = overClass; 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); } } else if (onclick == 2) { myGlobalContainer.ondblclick = 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); } } fixPNG(myImage); } widgetDrop_behaviours = []; dropIndex = 400; function WidgetDrop_show(params,name,father,x,y,horiz,vert,checknum){ //I don't know how it works under ie 8 var widget = xGetElementById(father); if(widget.xDropEnabled == true){ return false; } 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){ if (this.params['moveType'] < 2) { this.moveUpdate(drag.id,xLeft(drag),xTop(drag),drag.diffX,drag.diffY,drag.checknum,drag.content); } if (this.params['moveType'] < 3) { 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))) { if (!this.params['moveMaster']) { this.params['moveMaster'] = 0; } var sendxml = eyeParam('eyeArg',eyeParam('content',myContent[this.params['moveMaster']])+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 var left = xLeft('eyeApps'); if(!left){ left = 0; } var top = xTop('eyeApps'); if(!top){ top = 0; } mouseX -= left; mouseY -= top; if(cursorPos == 0){ startX = mouseX-event.offsetX; 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(widget,zindex); zindex++; 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])); } xZIndex(xGetElementById(widgetid),zindex); zindex++; 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,'Iframe'); } 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,'Imagebox'); } else { createWidget(name+'_Container',father,myImage,horiz,vert,x,y,myWidth,myHeight,"eyeImagebox",cent,'px',visible,'Imagebox'); } fixPNG(myImage); } 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,'Label'); } 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 group = params["group"]; var text = params["text"]; var myContainer = document.createElement('div'); var myRadio = document.createElement('input'); myContainer.setAttribute('id', name+'_textContainer'); myRadio.setAttribute('name',group); myRadio.setAttribute('id', name); myRadio.setAttribute('type','radio'); myContainer.appendChild(myRadio); if (IEversion && IEversion < 8) { myRadio.onclick = function() { this.checked = 1; inputs = document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].type == 'radio' && inputs[i].name == this.name && inputs[i].id != this.id) { inputs[i].checked = 0; } } }; } myContainer.appendChild(document.createTextNode(text)); if(checked == 1) { myRadio.setAttribute('checked','checked'); myRadio.setAttribute('defaultChecked','true'); } if(enabled == 0) { myRadio.setAttriute('disabled', 'true'); } createWidget(name+'_Container',father,myContainer,horiz,vert,x,y,-1,-1,"eyeRadio",cent,'px',visible,'Radio'); } function Select_show(params,name,father,x,y,horiz,vert,checknum,cent) { var visible = params["visible"]; var mywidth = params["width"]; var enabled = params["params"]; var mySelect = document.createElement("select"); if(enabled == 0) { mySelect.disabled = 1; } if(mywidth > 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,'Select'); } 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 i = this.lastID; this.lastID++; var oRow = document.createElement("TR"); oRow.setAttribute('id',this.entName+'_row_'+i); 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