/*
	Swwwing Common Javascipt Lib
	Author: Frans Andersson, Unknown
	$Id: common.js,v 1.29 2008/04/20 20:13:56 frans Exp $
	$Revision: 1.29 $
*/


function Open_DateSelector(target,at,format)
{
   var cal = new CalendarPopup();
   cal.showYearNavigation();
   cal.select(target,at,format)
}

function submitForm(form,field,value,validateobj)
{
  res = true;
  var validator;
  if (validateobj)
  {
    validator = validateobj
  }
  else if (typeof(validate) != "undefined")
  {
  	validator = validate;
  }
  
  if (validator && validator.doValidate)
  {
    if (typeof top.js != "undefined" && typeof top.js.formEdit != "undefined" && typeof top.js.formEdit != "unknown")
    {
      top.js.formEdit = false;
    }
    for (var i in validator)
    {
      if (i == 'doValidate') { continue }
      validator[i].obj = document.forms[form].elements[i];
      res &= eval("isValid" + validator[i].type + "(validator[i])");	
      if (!res) { break } // get all errors or stop if one is found?		
    }
  }

  if (res)
  {
    if (document.forms[form].elements[field])
    {
      document.forms[form].elements[field].value = value;
    }
    document.forms[form].submit();
  }
  else
  {
    validator.doValidate = false;
  }
}


function doAction(form,avalue,xvalue)
{
    document.forms[form].elements["XID"].value = xvalue;
    submitForm(form,"action",avalue)
}

// Use to deny forms submission with [Enter]
function noenter() 
{
  return !(window.event && window.event.keyCode == 13); 
}


function openTargetTree(entity, doInfoTarget, recurse, timelimit) 
{
  openWin('/swwwing/app/targetTree.jsp?action=poptree&entity='+entity+'&infoTarget='+doInfoTarget+'&recurse='+recurse+'&timelimit='+timelimit,11,'targetTree');
}

function getLayer(layerid, retstyle)
{
	var retLayer = eval(pre + layerid + post);

	if (retstyle==true && !NS4)
		retLayer=retLayer.style;

	return retLayer;
}

function showHideLayers(showLayer, hideLayer)
{
	if (typeof(hideLayer)!='undefined')
		getLayer(hideLayer,true).visibility = 'hidden';
	if (typeof(showLayer)!='undefined')
		getLayer(showLayer,true).visibility = 'visible';
}

function MM_displayStatusMsg(msgStr)
{ //v1.0
	self.status = msgStr;
  return true;
}

function setSelectedOption( formname, selectName, selValue, defValue )
{
	// SELECT object
	var oSelect = eval('document.' + formname + '.elements["' + selectName + '"]');
	if (typeof(defValue)=='undefined')
		defValue = "";
	
	if ( selValue == "" || typeof(selValue)=='undefined')
		selValue = defValue;

	if ( selValue != "" ) 
	{
		arrValue = selValue.split(',');
		for ( i = 0; i < oSelect.options.length; i++ ) 
		{
			for (j = 0; j < arrValue.length; j++) 
			{
				if ( oSelect.options[i].value == arrValue[j] ) 
				{
					oSelect.options[i].selected = true;
				}
			}
		}
	}
}

function doCheckOption( formname, checkName)
{
	var oCheck = eval('document.' + formname + '.elements["' + checkName + '"]'); // CHECKBOX object
	    oCheck.value = "1";
	    alert('Value is: ' + oCheck.value);
}

function submitDelete()
{
	if (confirm('Are you sure you want to delete this record ?!')) 
  {
    deleteform.submit();
	}
}

function printFlags(langs, link)
{
	xlangx = /xlangx/gi;
	xflagx = /xflagx/gi;
	if (langs!="") {
		arrLang = langs.split(',');
		for (i=0; i<arrLang.length; i++) {
			strFlag = "flag_" + arrLang[i];
			newLink = link.replace(xlangx,arrLang[i]);
			document.writeln(newLink.replace(xflagx,strFlag));
		}
	}
}

function printText(inStr)
{
	imgPos = 0;
	while (imgPos+6<inStr.length)
  {
		if (inStr.substring(imgPos, imgPos+5)=="[IMG:") {
			endPos = 1;
			while (inStr.charAt(imgPos+5+endPos)!=']' && endPos<inStr.length) endPos++;
			endPos+=imgPos+5;
			imgVal = inStr.substring(imgPos+5,endPos).replace(' ','');
			if (typeof(img[imgVal])!='undefined')
				inStr = inStr.substring(0,imgPos) + img[imgVal] + inStr.substring(endPos+1);
			else
				inStr = inStr.substring(0,imgPos) + inStr.substring(endPos+1);
		}

		if (inStr.substring(imgPos, imgPos+7)=="[LINK:[") {
			endPos = 1;
			endLink = 1;
			while (inStr.charAt(imgPos+7+endLink)!=']' && endLink<inStr.length) endLink++;
			endLink+=imgPos+7;
			while (inStr.charAt(endLink+2+endPos)!=']' && endPos<inStr.length) endPos++;
			endPos+=endLink+2;
			inStr = inStr.substring(0,imgPos) + '<a href="' + inStr.substring(imgPos+7,endLink) + '" onMouseOver="return MM_displayStatusMsg(\'\');">' + inStr.substring(endLink+2,endPos) + '</a>' + inStr.substring(endPos+2);
		}

		imgPos++;
	}

	document.writeln(inStr);
}

function SetStatusPopup() 
{
	var strURL = "/swwwing/app/modules/UserStatus.jsp?action=UPDATE_VIEW&popupmode=normal";

	var iTop = (screen.height-230)/2;
	var iLeft = (screen.width-400)/2;
	winPopup = window.open(strURL, "window_popup", "screenX="+iLeft+",screenY="+iTop+",left="+iLeft+",top="+iTop+",height=230,width=400,alwaysRaised=yes,scrollbars=yes,directories=no,location=no,menubar=no,resizable=yes,status=no,toolbar=no");
	winPopup.focus();
	winPopup.js = top.js;
}

function NotifyPopup() 
{
	var strURL = "/swwwing/app/modules/Notify.jsp?action=DIALOG";

	var iTop = (screen.height-200)/2;
	var iLeft = (screen.width-600)/2;
	winPopup = window.open(strURL, "window_popup", "screenX="+iLeft+",screenY="+iTop+",left="+iLeft+",top="+iTop+",height=250,width=600,alwaysRaised=yes,scrollbars=yes,directories=no,location=no,menubar=no,resizable=yes,status=no,toolbar=no");
	winPopup.focus();
	winPopup.js = top.js;
}

strDeactivate = "Swwwing's help mode is now deactivated!\nThe help mode can be activated again by clicking on the questionmark again.";
strActivate = "Swwwing's help mode is now activated!\n\nOn each screen page you will now see a help text which will explain the functions.\nThe help mode can be deactivated by clicking on the questionmark again.";
var swwwingHistory = new Array;
var iLockEditPresenter = 0;

function isChanged()
{
  if (top.js.formEdit && top.js.formEdit == true)
  {
    top.js.formEdit = false;
    return "Note! all changes will be lost!";
  }
}


function swwwingGo(strURL,type,strFrame) 
{
 if (typeof(strFrame) == "undefined" || strFrame=="") strFrame = "window_main";
 if (!top.js.formEdit || (top.js.formEdit && confirm("Warning! Any changes made will be lost! Continue?")))
	{
   formEdit = false;
   if (type=="logout")
   {
     top.window.location.href = strURL;
   }
   else if (type=="link")
   {
     if (strFrame == "window_main")
     {
       swwwingAppend(strURL, strFrame);
       top.window_main.location.href = strURL;
     }
     else if (strFrame == "_top")
       top.window.location.href = strURL;
     else if (strFrame == "_blank")
       window.open(strURL);
     else 
     {
       swwwingAppend(strURL, strFrame);
       top.window_main.frames[strFrame].location.href = strURL;
     }
   }
   else
   {
     swwwingAppend(strURL, strFrame);
     if (strFrame == "window_main")
       top.window_main.location.href = strURL;
     else
       top.window_main.frames[strFrame].location.href = strURL;
   }
	}
	return false;
}

function swwwingAppend(strURL, strFrame) 
{
	if (typeof(swwwingHistory[strFrame]) == "undefined") 
	{
		swwwingHistory[strFrame] = new Array(20);
		swwwingHistory[strFrame].top = 0;
		swwwingHistory[strFrame].stop = 0;
	}
	if (strURL.charAt(0) == "/")
		strURL = "http://"+location.host+strURL;
	if (strURL != swwwingHistory[strFrame][swwwingHistory[strFrame].top]) 
	{
		iNext = swwwingHistory[strFrame].top+1;
		if (iNext == swwwingHistory[strFrame].length)
			iNext = 0;
		if (iNext == swwwingHistory[strFrame].stop) 
		{
			swwwingHistory[strFrame].stop++;
			if (swwwingHistory[strFrame].stop == swwwingHistory[strFrame].length)
				swwwingHistory[strFrame].stop = 0;
		}
		swwwingHistory[strFrame][iNext] = strURL;
		swwwingHistory[strFrame].top = iNext;
	}
 }
     

function swwwingReplaceTop(strURL) 
{
	if (strURL.charAt(0) == "/")
		strURL = "http://"+location.host+strURL;
	swwwingHistory["window_main"][swwwingHistory["window_main"].top] = strURL;
}


function swwwingBack(iBack, strFrame) 
{
  if (typeof(iBack) == "undefined") iBack = 1;
  if (typeof(strFrame) == "undefined") strFrame = "window_main";
  if (!top.js.formEdit || (top.js.formEdit && confirm("Warning! Any changes made will be lost! Continue?")))
  {
	  if (typeof(swwwingHistory[strFrame]) != "undefined") 
	  {
	    while (swwwingHistory[strFrame].top != swwwingHistory[strFrame].stop && iBack--)
	    {
	      swwwingHistory[strFrame].top--;
	      if (swwwingHistory[strFrame].top < 0)
	        swwwingHistory[strFrame].top = swwwingHistory[strFrame].length-1;
	    }
	    if (swwwingHistory[strFrame].top != swwwingHistory[strFrame].stop)
	    {
	      if (strFrame == "window_main")
	      {
	        top.window_main.location.href = swwwingHistory[strFrame][swwwingHistory[strFrame].top];
	      }
	      else
	      {
	        top.window_main.frames[strFrame].location.href = swwwingHistory[strFrame][swwwingHistory[strFrame].top];
	      }
	    }
	    else
	    {
	      // Old "GET only" requests via swwwingGo is not used very much in Swwwing 3000! 
	      // if (confirm("This will end your session and logout! Continue?"))
	      //  top.window_main.location.href = "main.jsp?action=LOGOUT";
	      top.window_main.history.back();
	    }
	  }
	  else
	  {
	    top.window_main.history.back();
	  }
	  top.js.formEdit = false;
	}
}


/*******************************/
/* Button JavaScript functions */

function DropItem(iButton, iItem, strURL, strTarget, strCaption, iItemType, iItemCount, iPreSelect) 
{
	var strDropDown = "dropdown"+iButton;
	var strDropItem = "dropitem"+iButton+"_"+iItem;
	var strDropImg = strDropDown+"_"+iItem;
	var str = "";
	str += "<div id="+strDropItem+" class=dropitem><a href=\""+strURL+"\" ";
	if (strTarget.length > 0)
		str += "target=\""+strTarget+"\" ";
	if (iItemType == 2)
		var strOnClick = "DropDownToggle("+strDropDown+")";
	else
		var strOnClick = "SelectItem("+strDropDown+","+iItem+","+iItemCount+")";
	str += "onClick=\""+strOnClick+"\" onMouseOver=\"top.js.HighlightOn("+strDropItem+")\" onMouseOut=\"top.js.HighlightOff("+strDropItem+")\">";
	if (iItemType == 3) 
	{
		// Add image for drop-down select buttons - based on preselect value
		if (iPreSelect)
			var strImg = "check.gif";
		else
			var strImg = "onepix.gif";
		str += "<img name="+strDropImg+" src=\"/pics/common/"+strImg+"\" border=0 width=8 height=10>";
	}
	str += "&nbsp;"+strCaption+"</a></div>\n";
	return str;
}

function SrcDropDownLoaded() 
{
	loading_menu.innerHTML = top.window_hidden.document.body.innerHTML;
	loading_menu.style.visibility = "visible";
}

function SrcDropDownToggle(menu,event,url) 
{
	if (menu.style.visibility == "visible")
		menu.style.visibility = "hidden";
	else 
	{
		if (menu.innerHTML.length == 0) 
		{
			top.window_hidden.location.href = url;
			loading_menu = menu;			
		}
		else
			menu.style.visibility = "visible";
	}
}

function DropDownToggle(menu,event) 
{
    if (menu.style.visibility == "visible")
	{
	    menu.style.visibility = "hidden";
	}
    else 
	{
	    menu.style.visibility = "visible";
	}
}

function SelectItem(menu,iItem,iItems) 
{
	for (var i=0; i<iItems; i++) 
	{
		if (menu.all[menu.id+"_"+i].src.indexOf("onepix.gif") < 0) 
		{
			menu.all[menu.id+"_"+i].src = "/pics/common/onepix.gif";
			break;
		}
	}
	menu.all[menu.id+"_"+iItem].src = "/pics/common/check.gif";
	menu.style.visibility = "hidden";
}

function ToggleItem(menu,iItem) 
{
	if (menu.all[menu.id+"_"+iItem].src.indexOf("onepix.gif") < 0)
		menu.all[menu.id+"_"+iItem].src = "/pics/common/onepix.gif";
	else
		menu.all[menu.id+"_"+iItem].src = "/pics/common/check.gif";
}


function RefReset() 
{
	varrRefStrings = new Array();
}
	
function CollectRef(strRefString) 
{
	varrRefStrings[varrRefStrings.length] = strRefString;
	alert("Reference copied.");
}
	
function OpenRefEdit(opener, strNodeId) 
{
	var strURL = "/intrascr/references.php3?iNodeId="+strNodeId+"&strRefStrings="+opener.document.infoform.strRefStrings.value;
	for (var i = 0; i < varrRefStrings.length; i++)
		strURL += "&varrRefStrings[]="+varrRefStrings[i];

	var iTop = (screen.height-400)/2;
	var iLeft = (screen.width-450)/2;
	winPopup = window.open(strURL, "window_refs", "screenX="+iLeft+",screenY="+iTop+",left="+iLeft+",top="+iTop+",height=400,width=450,alwaysRaised=yes,scrollbars=yes,directories=no,location=no,menubar=no,resizable=yes,status=no,toolbar=no");
	winPopup.focus();
	winPopup.js = top.js;
		winPopup.opener = opener;
}

function OpenDateSelector(opener, iTimeStamp)
{
	top.js.JavaDialog('_blank','/intrascr/expire.php3?Mode=SelectDate&iTimeStamp=' + iTimeStamp,225,225,'no','no');	
	winPopup.opener = opener;			
}

function OpenFieldSelector(opener, strName, strUrl)
{
	top.js.JavaDialog(strName,strUrl,600,550);
	winPopup.opener = opener;	
}

function OpenUserAttach(opener, strNodeId, strUsers) 
{
	top.js.JavaDialog('userattach','/intrascr/attachusers.php3?Mode=Setup&iNodeId='+strNodeId+'&strUsers='+strUsers,500,210);
	winPopup.opener = opener;
}

function OpenKeywordEdit(opener, strNodeId) 
{
	var strURL = "/intrascr/keywords.php3?Mode=Popup&iNodeId="+strNodeId+"&strKeywords="+opener.document.infoform.strKeywords.value;

	var iTop = (screen.height-400)/2;
	var iLeft = (screen.width-450)/2;
	winPopup = window.open(strURL, "window_keywords", "screenX="+iLeft+",screenY="+iTop+",left="+iLeft+",top="+iTop+",height=400,width=450,alwaysRaised=yes,scrollbars=yes,directories=no,location=no,menubar=no,resizable=yes,status=no,toolbar=no");
	winPopup.focus();
	winPopup.js = top.js;
		winPopup.opener = opener;
}

function OpenTodoEdit(opener, strEditNodeId, strDate, strDefaultText, iReload) 
{
	var strURL = "/intrascr/calendar.php3?Mode=EditTodo&strDate=" + strDate + "&iReload=" + iReload;
	if (strEditNodeId != "0")
		strURL = strURL + "&iEditNodeId=" + strEditNodeId;
	if (strDefaultText != "")
		strURL = strURL + "&strText=" + strDefaultText;
	top.js.JavaDialog('Todo',strURL,300,350);
	winPopup.opener = opener;
}
function OpenComments(opener, iAppId, strViewName, strParentNodeId) 
{
	top.js.JavaDialog('comment_edit','/intrascr/comments.php3?Mode=ListComments&iAppId='+iAppId+'&strViewName='+strViewName+'&iParentNodeId='+strParentNodeId,600,560);
	winPopup.opener = opener;
}

function SaveAsNew(winEdit) 
{
	if (confirm("Are you sure you wan't save the information as a new copy?")) 
	{
		winEdit.document.infoform.iNodeId.value = "-6";
		winEdit.document.infoform.Mode.value = "Insert";
		if (winEdit.parent.frameTargeter)
			winEdit.parent.frameTargeter.iUnchanged = 0;
		winEdit.sendForm();
	}
}

function swapHelp(url,mode,language) {
	if (url == "")
		url = "/help/error_"+language+".html"; //url to the helpfile
	newWindow = open(url+"#"+mode,"newWindow","toolbar=no,location=0,directories=no,status=no,menubar=0,scrollbars=yes,resizable=1,copyhistory=no,width=700,height=350");
	newWindow.focus();
}




