/*********************************************************************/
/*                                                                   */
/* IBM Confidential                                                  */
/*                                                                   */
/* OCO Source Materials                                              */
/*                                                                   */
/* Copyright IBM Corp. 2005, 2010                                    */
/*                                                                   */
/* The source code for this program is not published or otherwise    */
/* divested of its trade secrets, irrespective of what has been      */
/* deposited with the U.S. Copyright Office.                         */
/*                                                                   */
/*********************************************************************/

//-------------------------------------------------------------
//  Quickplace common folder display functions
//-------------------------------------------------------------

dojo.addOnLoad(function(){
	if(isHijri){dojo.require("dojox.date.IslamicDate");}
	if(isHebrew){dojo.require("dojox.date.HebrewDate");}
});

function returnSaveDateTime(date){
	return convertDate(date) + " " + convertTime(date);
}

function convertDate(date){
	var ret = "";
	var sep = haiku.h_Intl_DateString;
	var year = date.getFullYear();

	if(isHijri){
			date = new dateHijri().gregorianToHijri(date);
			year = date.getFullYear();
		}
	if(isHebrew){
				date = new dateHebrew().gregorianToHebrew(date);
				year = date.getFullYear();
			}
	
	var month =(((date.getMonth()+1) < 10) ? "0" : "") + (date.getMonth()+1);
	var day =((date.getDate() < 10) ? "0" : "") + date.getDate();
	if(haiku.h_Intl_DateFormat == haiku.kszDMY) {
		ret = day + sep + month + sep + year;
	}else if(haiku.h_Intl_DateFormat == haiku.kszYMD){
		ret = year + sep + month + sep + day;
	}else{
		ret = month + sep + day + sep + year;
	}
	return ret;
}

function convertTime(date){
	var ret = "";
	var am_pm = "";
	var hrs = date.getHours();
	var mins = date.getMinutes();
	var mins = ((mins < 10) ? "0" : "") + mins;
	if(!haiku.h_Intl_MilitaryTime){
		am_pm = ((hrs >= 12) ? ' ' + haiku.h_Intl_PMString : ' ' + haiku.h_Intl_AMString);
		hrs  = ((hrs > 12) ? hrs - 12 : hrs);
		if(hrs == 0) hrs = 12;
	}
	return (hrs + haiku.h_Intl_TimeString + mins + am_pm);
}


//-----------------------------------------------------------------
// FUNCTIONS USED TO IMPLEMENT FOLDER SCENE SKIN COMPONENTS

function FolderItemsPerPageLink(n, szN, szTitle)
{
	var cnt = h_FolderNavBaseURL.indexOf("&Count="); 
	var url = h_FolderNavBaseURL.substring(0, cnt+7);
	 
	document.write('<a '
						+ '" alt="' + szTitle + '" title="' + szTitle 
						+ '" href="' + url + n
						+ '&PresetFields=h_SetReadScene;' + h_SetReadScene
						+ '">' + szN + '</a>');
}

var h_F_MyPlacesParms = new Array("&PresetFields=h_SetReadScene;h_MyPlacesList","&PresetFields=h_SetReadScene;h_MyPlacesDetails");

function FolderShowHideDetailsLink(szShow, szHide, szShowTitle, szHideTitle)
{
	var fS = getFolderStyle();
	if (fS == 'h_MyPlaces') {
		// My Places listing
		var loc = location.href;
		var l=m=n=-1;

		// Get which parm if any, and parm's length
		for (var i=0; i<h_F_MyPlacesParms.length; i++) {
			if ((m=loc.indexOf(h_F_MyPlacesParms[i])) != -1) {
				l=h_F_MyPlacesParms[i].length;
				break;
			}
		}

		if ((n=m+l)>0) {
			// Strip param from current URL
			loc = loc.substring(0, m) + loc.substring(n);
		}

        //SPR:#XZSU7WY874
		document.write('<a href="'
							+ loc + '&PresetFields=h_SetReadScene;'
							+ 'h_MyPlacesDetails'
							+ '"'
							+ ' title="' + (h_SetReadScene == 'h_MyPlacesDetails' ? szHideTitle : szShowTitle) + '"'
							+ ' alt="'   + (h_SetReadScene == 'h_MyPlacesDetails' ? szHideTitle : szShowTitle) + '"'
							+ '>'
							+ (h_SetReadScene == 'h_MyPlacesDetails' ? szHide : szShow)
							+ '</a>');
	}
	else {
		// Folder listing
		document.write('<a href="'
							+ '../../h_Toc/' + h_FolderDoc.h_Unid + '/?OpenDocument&Start=' + h_FolderStart
							+ '&Count=' + (h_SetReadScene == 'h_AbstractsFolderRead' ? 20 : 10)
							+ '&PresetFields=h_SetReadScene;'
							+ (h_SetReadScene == 'h_AbstractsFolderRead' ? 'h_StdFolderRead' : 'h_AbstractsFolderRead')
							+ '"'
							+ ' title="' + (h_SetReadScene == 'h_AbstractsFolderRead' ? szHideTitle : szShowTitle) + '"'
							+ ' alt="'   + (h_SetReadScene == 'h_AbstractsFolderRead' ? szHideTitle : szShowTitle) + '"'
							+ '>'
							+ (h_SetReadScene == 'h_AbstractsFolderRead' ? szHide : szShow)
							+ '</a>');
	}
}

// Same as above, for 8.1/8.2 theme
function qp_folder_SetView(details)
{
	location.href='../../h_Toc/'+h_FolderDoc.h_Unid+'/?OpenDocument&Start='+h_FolderStart
		+ '&Count='+(details ? 10 : 20)
		+ '&PresetFields=h_SetReadScene;'
		+ (details ? 'h_AbstractsFolderRead' : 'h_StdFolderRead');
}

function FolderShowHideResponsesLink(szShow, szHide, szShowTitle, szHideTitle)
{
	if (h_SetReadScene != 'h_AbstractsFolderRead') {
		var i = location.href.indexOf("&Collapse");
		var bShow = (i > -1);
		document.write('<a href="' + (bShow ? location.href.substring(0,i) : location.href+"&CollapseView") + '"'
							+ ' title="' + (bShow ? szShowTitle : szHideTitle) + '"'
							+ ' alt="'   + (bShow ? szShowTitle : szHideTitle) + '"'
							+ '>'
							+ (bShow ? szShow : szHide)
							+ '</a>');
	}
}

function FolderShowingItemsText(szFmt) 
{ 
	if (h_FolderDocCount > 0)
	{
		var s = szFmt;
			  
		var iEndIndex =  h_FolderStart.indexOf( ".");
		if	( iEndIndex == -1) {
			iEndIndex = h_FolderStart.length;
		}
		 
		// The thread start (1 in the above string
		var iThreadStart = h_FolderAbsoluteStartPosition;
		// The last thread in the list
		var rangeEnd = h_FolderAbsoluteStartPosition + iTotNumOfDocs - 1;
		 
		// replace the string which has the following syntax	
		s = s.replace( /\%d/, iThreadStart);
		s = s.replace( /\%d/, rangeEnd);
		s = s.replace( /\%d/, h_FolderDocCount);
		document.write(s);
	}
};


//------------------------------------------------------------------------------------
//

function FolderHideIdIfBlank(sId, fFunct) {
	var preloadid = document.getElementById(sId);
	if (preloadid) {
	
		var bHide = true;
		for (var i = 0; i < preloadid.childNodes.length; i++) {
			if (typeof(preloadid.childNodes[i].tagName) != "undefined" && typeof(preloadid.childNodes[i].innerHTML) != "undefined" && preloadid.childNodes[i].tagName != "SCRIPT") {
				bHide = false;
			}
			if (typeof(fFunct) != "undefined") {
				if (fFunct() == "") {
					bHide = true;
				}
			}
		}
		
		if (bHide) {
			preloadid.style.display = "none";
		}
	}
}

function FolderAlternateTableRowsBackground(sId, sClassName) {
	if (sClassName == null) sClassName = "h-folderitem-bg";
	var mydetailslist = document.getElementById(sId);
	if (mydetailslist) {
		var onoffswitch = false;
		var alltrs = mydetailslist.getElementsByTagName("tr");
		for (var idx = 0; idx < alltrs.length; idx++) {
			if (alltrs[idx].className.toLowerCase() == sClassName.toLowerCase()) {
				if (onoffswitch) {				
					alltrs[idx].className += " h-folderItem-bg-alt";
				}
				onoffswitch = !onoffswitch;
			}
		}
	}
}

// "Stretch" button support
function changeWidth(widthSet)
{
	var cookieName = haiku.userName  +'Width';
	if(widthSet=="fluid"){
		document.body.style.width=100+'%';
		document.getElementById("widthPage").style.display="none";
		document.getElementById("widthPageFixed").style.display="inline";
		setCookie(cookieName,'fluid',7);
	}
	else {
		document.body.style.width=900+'px';
		document.getElementById("widthPageFixed").style.display="none";
		document.getElementById("widthPage").style.display="inline";
		removeCookie(cookieName);
		  
		var mainSize = document.getElementById("portletRenderWidth").offsetWidth;
		var bodySize = document.body.offsetWidth;
		if(mainSize>bodySize){
			document.body.style.width = mainSize +50+'px';
		}
	}
}

// IBM Footer
function toggleFooter() {
	var footerL = document.getElementById('footerMain');
	var footerS = document.getElementById('footerSmall');

	if (footerL.style.display == "none"){
		footerS.style.display="none";
		footerL.style.display="block";
		document.getElementById("footerLinkIDExpand").style.display='none';
		document.getElementById("footerLinkIDCollapse").style.display='block';
	}
	else{
		footerL.style.display="none";
		footerS.style.display="block";
		document.getElementById("footerLinkIDExpand").style.display='block';
		document.getElementById("footerLinkIDCollapse").style.display='none';
	}

	var cookieName = haiku.userName +'Footer';
	var x = getCookie(cookieName);
	if (x=="small") {
		removeCookie(cookieName);
	}else{
		setCookie(cookieName,'small',7);
	}
}



///added by bob/mlr for group expansion
/* START
 * NEW CODE TO SHOW MEMBERS OF A GROUP
 */

function showLinkIfGroup (type, id, name, checkboxname, valueSuffix)
{
	if (typeof(valueSuffix) == "undefined") valueSuffix = "#h_Person";
	
	if (typeof(checkboxname) == "undefined" || checkboxname == null) {
		checkboxname = "h_getEntryNames";
	}
	var ALTTEXT_SHOWMEMBERS = QuickrLocaleUtil.getStringResource("FOLDER.SHOWMEMBERS");

	var retStr = "";
	if ( type == "h_ExternalGroup" )
	{		
		var srcid = escape(id).replace(/%/g,"_").replace(new RegExp("\/","g"),"__");
		
		retStr = "<a style=\"text-decoration:underline;font-weight:bold;\" title=\"" + ALTTEXT_SHOWMEMBERS + "\" id=\"" + srcid + "\" href=\"javascript: void expandMemberGroup(&quot;" + id + "&quot;,&quot;" + srcid + "&quot;,&quot;" + checkboxname + "&quot;,&quot;" + valueSuffix + "&quot;);\">" + name + "</a>";
	}
	else if ((type == "h_Person") || (type == "h_Group")  || (type == "h_Unknown"))
		retStr = name;
	return retStr;

};


/*******************************
* BB - Code goes through the 
* name and replaces commas with 
* slashes for the separatorsin 
* the canonical name.
*******************************/
function NormalizeCanonical(inStr)
{

	if (inStr.indexOf("=") == -1 || inStr.indexOf(",") == -1) return inStr;

	var bReplace = false;
	var outStr = "";
	
	
	/* loop through the string backwards and replace commas with slashes but only if before equals...*/
	for (var i = inStr.length - 1; i >= 0; i--) {
		var tmp = inStr.substring(i,i+1);

		if (tmp == "=") {
			bReplace = true;
		}
		else
		if (tmp == "/") {
			bReplace = false;
		}
		else
		if (tmp == "," && bReplace) {
			tmp = "/";
			if (outStr.substring(0,1) == " ") {  //remove any trailing spaces in between values
				outStr = outStr.substring(1);
			}			
			bReplace = false;
		}

		outStr = tmp + outStr;


	}

	return outStr;
	
	
}



function expandMemberGroup(unid, srcid, checkboxname, valueSuffix)
{
	if (typeof(valueSuffix) == "undefined") valueSuffix = "#h_Person";

	var ALTTEXT_SHOWMEMBERS = QuickrLocaleUtil.getStringResource("FOLDER.SHOWMEMBERS");
	var ALTTEXT_HIDEMEMBERS = QuickrLocaleUtil.getStringResource("FOLDER.HIDEMEMBERS"); 
	var srcid_new = "new_" + srcid;
	
	var el = document.getElementById(srcid);
	var el_new = document.getElementById(srcid_new);
	
	if (el_new) {
		el_new.parentNode.parentNode.removeChild(el_new.parentNode);
		el.setAttribute("title", ALTTEXT_SHOWMEMBERS);
		return;	
	}
	
	
	el.setAttribute("title", ALTTEXT_HIDEMEMBERS);
	
	while (el && el.tagName.toLowerCase() != "tr") {
		el = el.parentNode;
	}
	
	var el_tr = document.createElement("tr");
	el_tr.appendChild(document.createElement("td"));
	
	var el_td = document.createElement("td");
	el_td.setAttribute("colspan","7");
	el_td.setAttribute("id",srcid_new);
	el_tr.appendChild(el_td);
		
	el.parentNode.insertBefore(el_tr,el.nextSibling);
	 
	
//	dojo.require("dojo.widget.*");
//	dojo.require("dojo.widget.TreeV3");
//	dojo.require("dojo.widget.TreeNodeV3");
//	dojo.require("dojo.widget.TreeBasicControllerV3");
//	dojo.hostenv.writeIncludes();
	
	var htmltemplate = "<input type=\"checkbox\" value=\"{0}" + valueSuffix + "\" name=\"" + checkboxname + "\"/> {1}";

	showGroupMembership(unid, srcid_new, htmltemplate, false, false);
	


}


function showGroupMembership(groupName, rootDivName, htmltemplate, isExpanded, showTopLevel) {

	if (typeof(isExpanded) == "undefined") isExpanded = true;
	if (typeof(showTopLevel) == "undefined") showTopLevel = true;

	var root = document.getElementById(rootDivName);
	
	if (root && root.style.display == "none") {
		root.style.display = "block";
	}
	
	var placeName = window.location.href;
	

	placeName = placeName.substring(0, placeName.toLowerCase().indexOf(".nsf"));
	placeName = placeName.substring(0, placeName.lastIndexOf("/"));
	placeName = placeName.substring(placeName.lastIndexOf("/") + 1);

	// service api has changed, please refer to spr #KHUU86NDDE
	var loc = "/dm/atom/library/@P{0}/action?action=ldapgetgroupmembers&query={1}";
	
	loc = loc.replace("{0}", placeName);
	loc = loc.replace("{1}", encodeURIComponent(groupName.replace(new RegExp("\/","g"), ",")));
	
	var subNodes = new Array();
	
	dojo.xhrGet ({
		url: loc,
		handleAs: "text",
		load: function (data, ioArgs) {
					
				var xmldata = _qp_getXMLDocFromString(data);
				
				var eroot = xmldata.getElementsByTagName('viewentries')[0];
				
				var entries = eroot.getElementsByTagName("entrydata");
				
				for (var i = 0; i < entries.length; i++) {
					var xname = entries[i].getAttribute('name');
					xname = NormalizeCanonical(xname);
					var xval = _qp_getNodeValue(entries[i]);
					
					var retStr = "";
					
					
					if (typeof(htmltemplate) != "undefined" && htmltemplate != null) {
						retStr = htmltemplate;
						retStr = retStr.replace("{0}", xname);
						retStr = retStr.replace("{1}", xval);
					}
					
					subNodes[subNodes.length] = {
						title: retStr
					};
					
				}
				
				var ul = document.createElement("ul");
				ul.style.listStyleType  = "none";
				root.appendChild(ul);
				for (var node in subNodes) {					
					if (subNodes[node] && subNodes[node].title) {
						var li = document.createElement("li");
						ul.appendChild(li);
						li.innerHTML = subNodes[node].title;
					}	
				}			
//			var controller = dojo.widget.createWidget("TreeBasicControllerV3");
//
//			var treeNodes;
//			
//			if (showTopLevel) {
//				treeNodes = [
//					{
//						title: groupName ,
//						expandLevel: (isExpanded)?1:0,
//						children: subNodes
//					}
//				]
//			} else {
//				treeNodes = subNodes;			
//			}
//
//
//			var tree = dojo.widget.createWidget("TreeV3", {listeners: [controller.widgetId]});
//
//			tree.setChildren(treeNodes);
//
//			root.appendChild(tree.domNode);	

		},
		
		error: function (err) {
				console.error(err);
				var ul = document.createElement("ul");
				ul.style.listStyleType  = "none";
				root.appendChild(ul);
				for (var node in subNodes) {					
					if (subNodes[node] && subNodes[node].title) {
						var li = document.createElement("li");
						ul.appendChild(li);
						li.innerHTML = subNodes[node].title;
					}
				}		
//			var controller = dojo.widget.createWidget("TreeBasicControllerV3");
//
//			var treeNodes = [
//				{
//					title: groupName ,
//					expandLevel: 1,
//					children: subNodes
//				}
//			]
//
//
//			var tree = dojo.widget.createWidget("TreeV3", {listeners: [controller.widgetId]});
//
//			tree.setChildren(treeNodes);
//
//			root.appendChild(tree.domNode);	
			
		}
	});






}

function _qp_getXMLDocFromString(stext) {
	var doc;

	// code for IE
	if (window.ActiveXObject)
	{
		doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async="false";
		doc.loadXML(stext);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else
	{
		var parser=new DOMParser();
		doc=parser.parseFromString(stext,"text/xml");
	}

	return doc;
}

function _qp_getNodeValue(node) {
	try {
		return node.childNodes[0].nodeValue;
	} catch (e) {
		return node.textContent;
	}
}
/* END
 * NEW CODE TO SHOW MEMBERS OF A GROUP
 */

