XFormsFile.prototype = new XFormsGroup;
function XFormsFile (strParentId, strAlert, strHelp, strHint, strText, strAccesskey, strBind, strClass, bDisabled, strId, strItemMargin, nNavindex,
strOverflow, bPopup, strRef, strScroll, strShowEffect, bShowList, strStyle, strTag, strVisibility, strUserDefineAttrib)
{
if (!strId)
{
return;
}
XFormsGroup.call(this, strParentId, strAlert, strHelp, strHint, strAccesskey, strBind, strClass, bDisabled, strId, nNavindex, strOverflow, bPopup, strRef, strScroll, strShowEffect, strStyle, strTag, strVisibility, strUserDefineAttrib);
this.m_nAttachHeight;
this.m_nAttachWidth;
/**
* Attribute
*/
this.attribute["text"] = strText;
this.attribute["itemmargin"] = strItemMargin;
this.attribute["showlist"] = String(bShowList);
/**
* Property
*/
};
XFormsFile.prototype.init = function ()
{
XFormsGroup.prototype.init.call(this);
var xnFrame = document.getElementById("HE___TF_UploadFrame");
if (xnFrame)
{
if (xnFrame.attachEvent)
{
xnFrame.attachEvent("onload", XFormsFile.uploadTempComplete);
}
else
{
xnFrame.addEventListener("load", XFormsFile.uploadTempComplete, false);
}
}
var objAttach = new XFormsButton(this.id, "", "", "", "", "", false, "", "", false, false, "", "", "", this.id+".attach", -1, "", "", -1, false, "", "xforms:button", "visible");
objAttach.init();
this.m_nAttachHeight = objAttach.m_heControl.offsetHeight;
this.m_nAttachWidth = objAttach.m_heControl.offsetWidth;
objAttach.m_heControl.style.marginTop = "-"+(this.m_nAttachHeight/2)+"px";
if (this.attribute["showlist"] == "false")
objAttach.m_heControl.style.marginLeft = "-"+(this.m_nAttachWidth/2)+"px";
if (objAttach.m_heControl.style.borderStyle || objAttach.m_heControl.style.backgroundColor || objAttach.m_heControl.style.backgroundImage)
{
var xnVitualButton = document.getElementById("HE_"+this.id+".virtual");
xnVitualButton.style.borderStyle = "none";
}
var nItemMargin = parseInt(this.attribute["itemmargin"].replace("px","").replace("%",""));
if (this.attribute["showlist"] == "true")
{
var xnFileList = document.createElement("div");
xnFileList.id = "HE_"+this.id+".list";
xnFileList.style.position = "absolute";
xnFileList.style.border = "1px solid #000000";
xnFileList.style.backgroundColor = "#FFFFFF";
xnFileList.style.left = nItemMargin+"px";
xnFileList.style.top = nItemMargin+"px";
xnFileList.style.wordWrap = "break-word";
xnFileList.style.overflowX = "hidden";
xnFileList.style.overflowY = "auto";
this.m_heControl.appendChild(xnFileList);
this.resizeList();
var objList = new XFormsGroup(this.id, "", "", "", "", "", "", false, this.id+".list", -1, "scroll", false, "", "auto", "blend 300", "", "xforms:group", "visible");
objList.init();
}
this.createRealButton();
};
XFormsFile.prototype.applyDefaultStyle = function ()
{
XFormsGroup.prototype.applyDefaultStyle.call(this);
if (!this.attribute["border-style"])
{
this.m_heControl.style.borderStyle = "solid";
}
};
XFormsFile.prototype.createRealButton = function ()
{
var xnFileButtonReal = document.createElement("input");
xnFileButtonReal.id = "HE_"+this.id+".button";
xnFileButtonReal.name = "HE_"+this.id+".button";
xnFileButtonReal.type = "file";
xnFileButtonReal.onchange = function ()
{
var objParent = document.controls.item(this.id.substring(3, this.id.lastIndexOf(".")));
document.getElementById("HE___TF_UploadForm").appendChild(this);
document.getElementById("HE___TF_UploadForm").submit();
this.parentNode.removeChild(this);
objParent.createRealButton();
};
xnFileButtonReal.style.position = "absolute";
document.getElementById("HE_"+this.id).appendChild(xnFileButtonReal);
this.resizeRealButton ();
};
XFormsFile.prototype.setAttachedFile = function (strFileName, strTempName)
{
if (this.attribute["ref"] != "")
{
var strInstance = model.getValue(this.attribute["ref"]);
if (strInstance != "") strInstance += "?";
strInstance += strFileName;
strInstance += "|";
strInstance += strTempName;
model.setValue(this.attribute["ref"], strInstance);
this.refresh();
}
};
XFormsFile.prototype.resizeRealButton = function ()
{
var xnFileButtonReal = document.getElementById("HE_"+this.id+".button");
var heAttach = document.getElementById("HE_"+this.id+".attach");
xnFileButtonReal.style.filter = "alpha(opacity=0)";
xnFileButtonReal.style.opacity = 0;
xnFileButtonReal.style.height = this.m_nAttachHeight + "px";
xnFileButtonReal.style.top = heAttach.style.top;
xnFileButtonReal.style.right = heAttach.style.right;
xnFileButtonReal.style.width = heAttach.style.width;
xnFileButtonReal.style.marginTop = heAttach.style.marginTop;
};
XFormsFile.prototype.resizeList = function ()
{
var xnFileList = document.getElementById("HE_"+this.id+".list");
var nCurrentWidth = this.m_heControl.clientWidth;
var nCurrentHeight = this.m_heControl.clientHeight;
var nItemMargin = parseInt(this.attribute["itemmargin"].replace("px","").replace("%",""));
xnFileList.style.width = (nCurrentWidth-(nItemMargin*3)-this.m_nAttachWidth)+"px";
xnFileList.style.height = (nCurrentHeight-(nItemMargin*2))+"px";
};
XFormsFile.prototype.refresh = function ()
{
};
XFormsFile.prototype.refresh = function ()
{
if (this.attribute["showlist"] == "true")
{
var objList = document.controls.item(this.id+".list");
var clListChildren = objList.children;
var nListChildrenCount = clListChildren.length;
for (var i = 0; i < nListChildrenCount; i++)
{
var objChild = clListChildren.item(0);
objList.removeChild(objChild.id);
}
var strAttachedFile = model.getValue(this.attribute["ref"]);
if (strAttachedFile != "")
{
var arAttachedFile = strAttachedFile.split("?");
for (var i = 0; i < arAttachedFile.length; i++)
{
var arFileName = arAttachedFile[i].split("|");
var strFileName = arFileName[0];
var xnListItem = document.createElement("span");
xnListItem.id = "HE_"+this.id+".item"+i;
xnListItem.innerHTML = i == 0 ? ""+strFileName+" " :" "+ strFileName+" ";
xnListItem.style.cursor = "default";
objList.m_heControl.appendChild(xnListItem);
var objListItem = new XFormsCaption(objList.id, "", "", "", strFileName, "", false, "", "", false, false, "", this.id+".item"+i, -1, "", "", 0, "", "xforms:caption", "visible");
objListItem.init();
var xnListItemDetach = document.createElement("button");
xnListItemDetach.id = "HE_"+this.id+".detach"+i;
xnListItemDetach.style.width = "12px";
xnListItemDetach.style.height = "12px";
xnListItemDetach.style.backgroundColor = "transparent";
xnListItemDetach.style.backgroundImage = "url(" + __getAppName() + "/kr/comsquare/image/file/detach.gif)";
xnListItemDetach.style.backgroundRepeat = "no-repeat";
xnListItemDetach.style.borderStyle = "none";
xnListItemDetach.style.verticalAlign = "middle";
xnListItemDetach.onclick = function ()
{
var nIndex = parseInt(this.id.substring(this.id.lastIndexOf(".")+7, this.id.length));
var strObjId = this.id.substring(3, this.id.lastIndexOf("."));
document.controls.item(strObjId).detachFile(nIndex);
};
objList.m_heControl.appendChild(xnListItemDetach);
var objListItemDetach = new XFormsButton(objList.id, "", "", "", "", "", false, "", "", false, false, "", "", "", this.id+".detach"+i, -1, "", "", -1, false, "", "xforms:button", "visible");
objListItemDetach.init();
}
}
}
};
XFormsFile.prototype.detachFile = function (nIndex)
{
var strInstance = model.getValue(this.attribute["ref"]);
var arInstance = strInstance.split("?");
strInstance = "";
for (var i = 0; i < arInstance.length; i++)
{
if (nIndex == i) continue;
if (strInstance != "")
{
strInstance += "?";
}
strInstance += arInstance[i];
}
model.setValue(this.attribute["ref"], strInstance);
this.refresh();
this.dispatch("onfiledeselected");
};
XFormsFile.prototype.getBindingType = function ()
{
return BT_SINGLE;
};
XFormsFile.uploadTempComplete = function ()
{
var xnFrameDoc = document.getElementById("HE___TF_UploadFrame").contentWindow.document;
var strReturnXML;
if (is_ie)
{
if (xnFrameDoc.XMLDocument)
{
strReturnXML = xnFrameDoc.XMLDocument.xml;
}
else
{
var serializer = new XMLSerializer();
strReturnXML = serializer.serializeToString(xnFrameDoc);
}
}
else
{
var serializer = new XMLSerializer();
strReturnXML = serializer.serializeToString(xnFrameDoc);
}
if (strReturnXML)
{
var xnReturn = XmlLib.loadXMLFromString(strReturnXML);
if (xnReturn.selectSingleNode("/root"))
{
var xnTagName = xnReturn.selectSingleNode("/root/tagName");
var xnFileName = xnReturn.selectSingleNode("/root/fileName");
var xnTempName = xnReturn.selectSingleNode("/root/tempName");
var xnFilePath = xnReturn.selectSingleNode("/root/filePath");
var strTagName = XmlLib.getTextValue(xnTagName);
var strFileName = XmlLib.getTextValue(xnFileName);
var strTempName = XmlLib.getTextValue(xnTempName).replaceAll(XmlLib.getTextValue(xnFilePath), "");
var objFile = document.controls.item(strTagName.substring(3,strTagName.lastIndexOf(".")));
objFile.setAttachedFile(strFileName, strTempName);
}
objFile.dispatch("onfileselected");
}
};