var CONST_CURRENTGFID;
var CONST_MODULE_ID;
var idbmsDelay = 800; //miliseconds
var iCurrentGFID = 0;
var rpwReusable;
var GetRichPanel = null;


//this updates the grouping name
function UpdateName(sPrmGroupingsFormId, sPrmLabel) 
{
	//alert('update ' + sPrmGroupingsFormId + ' to ' + sPrmLabel);
	
	//replace gfid token
	sPrmGroupingsFormId = sPrmGroupingsFormId.replace('gfid_', '');
	//show loading
	ShowHideToolbarLoading(true, sPrmGroupingsFormId, true);
	
	//create dummy object to pass to ajax runner
	var objDummy = {};
	objDummy.ID = sPrmGroupingsFormId;

	var ar = new AjaxRunner();
	ar.Url = "/idbms/ui/ajax/vg_handler.aspx";
	ar.Querystring = GroupQueryString + "&gfid=" + sPrmGroupingsFormId; // GroupQueryString is defined by vg2
	ar.AddFormValue("cmd", "updategroupingname");
	ar.AddFormValue("label", sPrmLabel);
	ar.OnSuccess = UpdateNameSuccess;
	ar.Execute(null, objDummy);
} // UpdateName


//this is after the grouping name is successfully updated
function UpdateNameSuccess(sPrmResponse, oEventArgs)
{
	if (sPrmResponse.trim().toLowerCase() != "true")
	{
		alert("Error saving changes (" + sPrmResponse + ")!");
		ShowHideToolbarLoading(false, oEventArgs.ID); //hide both loading and success
	}
	else
	{
		ShowHideToolbarLoading(true, oEventArgs.ID, false); //hide loading show success
		setTimeout(function () { ShowHideToolbarLoading(false, oEventArgs.ID); }, idbmsDelay); //delay hide success
	}
} //UpdateNameSuccess


function MenuItemOn(prmMenuItem)
{
	if (prmMenuItem.className == 'idbmsMenuItem') prmMenuItem.className = 'idbmsMenuItemHover';
}


function MenuItemOff(prmMenuItem)
{
	if (prmMenuItem.className == 'idbmsMenuItemHover') prmMenuItem.className = 'idbmsMenuItem';
}


function ShowHideElement(bShow, sPrmId)
{
	var element = document.getElementById(sPrmId);
	if (element && element.style)
	{
		if (bShow)
			element.style.display = '';
		else
			element.style.display = 'none';
	}
} //ShowHideElement


function RemoveGrouping(gfid, miid)
{
	if (confirm('Are you sure?'))
	{
		//ajax
		var ar = new AjaxRunner();
		ar.Url = '/idbms/ui/ajax/rg_handler.aspx';
		ar.Querystring = GroupQueryString + '&cid=' + FormId + '&action=remove&gfid=' + gfid + "&miid=" + miid;
		//show loading
		ShowHideToolbarLoading(true, gfid, true);
		ar.OnSuccess = RemoveGroupingSuccess;
		//create dummy object to pass to execute()
		var oDummy = {};
		oDummy.ID = gfid;
		ar.Execute(null, oDummy);
	}
} //RemoveGrouping

function RemoveStep()
{
	if (confirm('Are you sure?'))
	{
		//ajax
		var ar = new AjaxRunner();
		ar.Url = '/idbms/ui/ajax/rg_handler.aspx';
		ar.Querystring = GroupQueryString + '&cid=' + FormId + '&action=stepremove&gfid=' + CONST_CURRENTGFID + "&miid=" + CONST_MODULE_ID;
		//show loading
		ShowHideToolbarLoading(true, CONST_CURRENTGFID, true);
		//ar.OnSuccess = RemoveGroupingSuccess;
		//create dummy object to pass to execute()
		var oDummy = {};
		oDummy.ID = CONST_CURRENTGFID;
		
		ar.Execute(null, oDummy);
		
		if(window.location.href.indexOf("&fid") == -1)
		{
		//window.location.href = GetCurrentUrlWithoutGFID() + '&fid=' + FormId;
			setTimeout(function() { window.location.href = GetCurrentUrlWithoutGFID() + '&fid=' + FormId; } , 500);
		}
		else
		{	
		//window.location.href = GetCurrentUrlWithoutGFID();
		
			setTimeout(function() { window.location.href = GetCurrentUrlWithoutGFID(); } , 500);
			}
	}
} //RemoveGrouping


function RemoveGroupingSuccess(response, oPrmEventArgs)
{
	var gfid = oPrmEventArgs.ID;
	if (response == 'False')
	{
		//show error
		alert('error'); //todo fix
	}
	else if (response == 'True')
	{
		//show success
		ShowHideToolbarLoading(true, gfid, false);
		//delay
		var url = GetCurrentUrlWithoutGFID() + '&gfid=' + CONST_CURRENTGFID;		
		setTimeout(function () { ShowHideToolbarLoading(false, gfid); window.location = url; }, idbmsDelay);
	}
} //RemoveGroupingSuccess


function ShowHideToolbarLoading(bShow, gfid, bLoading)
{
	var loading = document.getElementById('imgGroupingToolbarLoading_' + gfid);
	var success = document.getElementById('imgGroupingToolbarSuccess_' + gfid);
	if (loading && success)
	{
		if (!bShow)
		{
			//hide both
			loading.style.display = 'none';
			success.style.display = 'none';
		}
		else if (bLoading)
		{
			//show loading, hide success
			loading.style.display = '';
			success.style.display = 'none';
		}
		else
		{
			//show success, hide loading
			loading.style.display = 'none';
			success.style.display = '';
		}
	} //null check
} //ShowHideToolbarLoading


function GetCurrentUrlWithoutGFID()
{
	var currentURL = window.location.href;
	// if the current url has a gfid on it already, remove it
	var markerStart = currentURL.indexOf("&gfid=");
	// if the current url has gfid at the beginning, it will be "?gfid=" -- so accomodate for that here
	if (markerStart == -1) { markerStart = currentURL.indexOf("gfid="); }
	if (markerStart > -1)
	{
		var markerEnd = currentURL.indexOf("&", markerStart+1);
		if (markerEnd > -1)
		{
			currentURL = currentURL.slice(0, markerStart) + currentURL.slice(markerEnd);
		}
		else
		{
			currentURL = currentURL.slice(0, markerStart);
		}
	}
	//if (_DebugMode) alert("currentURL=" + currentURL);
	return currentURL;
} // GetCurrentUrlWithoutGFID


function GetCurrentUrlWithoutTTID(prmUrl)
{
	var currentURL = window.location.href;
	//if a url is passed in, use that
	if (prmUrl) { currentURL = prmUrl; }
	// if the current url has a fid on it already, remove it
	var markerStart = currentURL.indexOf("&ttid=");
	// if the current url has ttid at the beginning, it will be "?ttid=" -- so accomodate for that here
	if (markerStart == -1) { markerStart = currentURL.indexOf("ttid="); }
	if (markerStart > -1)
	{
		var markerEnd = currentURL.indexOf("&", markerStart+1);
		if (markerEnd > -1)
		{
			currentURL = currentURL.slice(0, markerStart) + currentURL.slice(markerEnd);
		}
		else
		{
			currentURL = currentURL.slice(0, markerStart);
		}
	}
	//if (_DebugMode) alert("currentURL=" + currentURL);
	return currentURL;
} // GetCurrentUrlWithoutTTID


function GetCurrentUrlWithoutFID(prmUrl)
{
	var currentURL = window.location.href;
	//if a url is passed in, use that
	if (prmUrl) { currentURL = prmUrl; }
	// if the current url has a fid on it already, remove it
	var markerStart = currentURL.indexOf("&fid=");
	// if the current url has fid at the beginning, it will be "?fid=" -- so accomodate for that here
	if (markerStart == -1) { markerStart = currentURL.indexOf("fid="); }
	if (markerStart > -1)
	{
		var markerEnd = currentURL.indexOf("&", markerStart+1);
		if (markerEnd > -1)
		{
			currentURL = currentURL.slice(0, markerStart) + currentURL.slice(markerEnd);
		}
		else
		{
			currentURL = currentURL.slice(0, markerStart);
		}
	}
	//if (_DebugMode) alert("currentURL=" + currentURL);
	return currentURL;
} // GetCurrentUrlWithoutFID


function ShowHideGroupingSettings(bShow, gfid)
{
	var div = document.getElementById('divGroupingSettings_' + gfid);
	var error = document.getElementById('divGroupingError_' + gfid);
	if (div && error)
	{
		if (bShow) { div.style.display = ''; error.style.display = 'none'; } //hide error
		else { div.style.display = 'none'; }
	}
} //ShowHideGroupingSettings


function ShowHideGroupingError(bShow, gfid, text, oPanel)
{
	var error = document.getElementById('divGroupingError_' + gfid);
	if (error && oPanel)
	{
		if (bShow) { error.style.display = ''; error.innerHTML = text; oPanel.ToggleDropPanel(true); } //need to force show drop panel
		else { error.style.display = 'none'; error.innerHTML = ''; oPanel.ToggleDropPanel(false, true); } //need to force hide drop panel
	}
} //ShowHideGroupingError


function GroupingBeforeDock(prmDrag, prmDock, prmOver)
{
	var gfidover = -1;
	//var oldSort = prmDrag.GetOrderId(); //current sort (before dock)
	var gfid = prmDrag.GetAttribute('GFID');
	if (gfid > 0)
	{
		//get order id
		if (prmOver != null)
		{
			gfidover = prmOver.GetAttribute('GFID');
		}
		//don't sort if they are trying to put it in the same place
		if (gfid != gfidover)
		{
			//show loading
			ShowHideToolbarLoading(true, gfid, true);
			//ajax
			var ar = new AjaxRunner();
			ar.Url = '/idbms/ui/ajax/vg_handler.aspx';
			//alert('sortgrouping');
			ar.Querystring = GroupQueryString + '&cmd=sortgrouping&gfid=' + gfid + '&gfidover=' + gfidover;
			ar.OnSuccess = GroupingSortFinish;
			//create dummy object to pass to execute()
			var EventArgs = {"ID":gfid}; 
			ar.Execute(null, EventArgs);
		} // sort is different
	} //gfid check
} //GroupingBeforeDock


function GroupingSortFinish(response, EventArgs)
{
	var gfid = EventArgs.ID;
	if (response == 'true')
	{
		//hide loading, show success
		ShowHideToolbarLoading(true, gfid, false);
		//delay hide success
		setTimeout(function () { ShowHideToolbarLoading(false, gfid); window.location = window.location; }, idbmsDelay);
	}
	else
	{
		alert(response); //todo?
	}
} //GroupingSortFinish

/*
//This code is used to provide a reference to the radwindow "wrapper"
function GetRadWindow()
{
	var oWindow = null;
	if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
	else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz az well)
	return oWindow;
}
*/

function CloseOnReload()
{
	//dj 2008-0917: added window.opener check
	//dj 2008-1002: fixed permission denied error

	if (window.opener) {
		self.close();
	}
	/*
	if (window.opener) {
		if (window.opener.CloseChild)
			window.opener.CloseChild();
		else
			self.close();
	}
	*/
	else {
		if (!GetRichPanel)
		{
			//not ready, delay
			setTimeout(CloseOnReload,1);
		}
		else
		{
			//GetRadWindow().Close();
			GetRichPanel().Close();
		}
	}
} //CloseOnReload


function RefreshParentPage(prmGFID)
{
	if (prmGFID)
	{
		//GetRadWindow().BrowserWindow.location = GetRadWindow().BrowserWindow.GetCurrentUrlWithoutGFID() + '&gfid=' + prmGFID;
		window.parent.location = window.parent.GetCurrentUrlWithoutGFID() + '&gfid=' + prmGFID;
	}
	else
	{
		//GetRadWindow().BrowserWindow.location.reload();
		window.parent.location = window.parent.location; //.reload(); 07/23/2007 - JM - reload() was causing postback msg to show up.
	}
} //RefreshParentPage


function CloseAndRefreshParent(sPrmValue, sPrmExtraQs)
{
	//dj 2008-0917:  Added window.opener check
	if (window.opener) {
		if (window.opener.CloseChild)
			window.opener.CloseChild();
		else {
			window.opener.location = window.opener.location;
			self.close();
		}
	}
	else {
		if (!GetRichPanel)
		{
			//not ready, delay
			setTimeout(function () { CloseAndRefreshParent(sPrmValue, sPrmExtraQs); }, 1);
		}
		else
		{
			if (sPrmExtraQs) { GetRichPanel().ExtraQS = sPrmExtraQs; } //so we can pass something else on the qs
			GetRichPanel().RefreshGFID = sPrmValue;
			GetRichPanel().Argument = -2;
			GetRichPanel().Close();
		}
	}
} // CloseAndRefreshParent


function CloseAndRedirectToForm(sPrmFormId)
{
	//dj 2008-0917:  Added window.opener check
	if (window.opener) {
		if (window.opener.CloseChild)
			window.opener.CloseChild();
		else {
			window.opener.location = window.opener.location;
			self.close();
		}
	}
	else {
		if (!GetRichPanel)
		{
			//not ready, delay
			setTimeout(function () { CloseAndRedirectToForm(sPrmFormId); }, 1);
		}
		else
		{
			GetRichPanel().RefreshFID = sPrmFormId;
			GetRichPanel().Argument = -3;
			GetRichPanel().Close();
		}
	}
} //CloseAndRedirectToForm


function SetRedirectFormId(sPrmFormId, sPrmUrl) //if the window is closed early in a wizard flow, it will redirect them to this form id
{
	if (!GetRichPanel)
	{
		//not ready, delay
		setTimeout(function () { SetRedirectFormId(sPrmFormId, sPrmUrl); }, 1);
	}
	else
	{
		GetRichPanel().RefreshFID = sPrmFormId;
		GetRichPanel().Argument = -3;
		//now redirect
		if (sPrmUrl && sPrmUrl != '') { window.location = sPrmUrl; }
	}
} //SetRedirectFormId


function CloseWithSuccess(sPrmValue)
{
	if (!GetRichPanel)
	{
		//not ready, delay
		setTimeout(function () { CloseWithSuccess(sPrmValue); }, 1);
	}
	else
	{
		GetRichPanel().Argument = sPrmValue;
		GetRichPanel().Close();
	}
	//var oWindow = GetRadWindow();
	//alert("closing with value: " + sPrmValue);
	//Variant1: Passing the argument to the Close method will result in the same behavior
	//oWindow.Argument = sPrmValue;
	//oWindow.Close();
	//Variant2: Invoke the calback function, pass it the result as an argument
	//oWindow.CallBack(oNewText);
	//Variant3: Possible to set the Argument property of RadWindow here, and read it in the OnClientClose event handler!
	//oWindow.Argument = oNewText;
} //CloseWithSuccess


function CloseAndRedirectToUrl(sPrmUrl)
{
	if (!GetRichPanel)
	{
		//not ready, delay
		setTimeout(function () { CloseAndRedirectToUrl(sPrmUrl); }, 1);
	}
	else
	{
		GetRichPanel().Argument = -4;
		GetRichPanel().RedirectURL = sPrmUrl;
		GetRichPanel().Close();
	}
} //CloseAndRedirectToUrl

// JDB 6/25/2008 # 4045 - adding control field id to function call in order to update the correct data
function CeebCloseAndRefresh(sControlFieldId,sSchoolName,sCity,sState,sSchoolId,sEditUrl,isHighSchool)
{
		if (window.opener != null)
		{
			var pnlShow;
			var lblSchool;
			var lblState;
			var lblCity;
			var lblSchoolId;
			var hidden ;
			var SchoolLink;

			if(isHighSchool == 'True')
			{
				// begin - JDB 6/25/2008 # 4045 - updated variable names to be grouping instance specific
				pnlShow = window.opener.$(eval('window.opener.hs_panel'+sControlFieldId));
				lblSchool = window.opener.$(eval('window.opener.hs_schoolName'+sControlFieldId));
				lblState = window.opener.$(eval('window.opener.hs_State'+sControlFieldId));
				lblCity = window.opener.$(eval('window.opener.hs_City'+sControlFieldId));
				lblSchoolId = window.opener.$(eval('window.opener.hs_schoolId'+sControlFieldId));
				hidden = window.opener.$(eval('window.opener.hs_hiddenSchoolId'+sControlFieldId));
				SchoolLink = window.opener.$(eval('window.opener.hs_ShowSchoolLink'+sControlFieldId));
				// end - JDB 6/25/2008 # 4045
			}
			else
			{
				// begin - JDB 6/25/2008 # 4045 - updated variable names to be grouping instance specific
				pnlShow = window.opener.$(eval('window.opener.cl_panel'+sControlFieldId));
				lblSchool = window.opener.$(eval('window.opener.cl_schoolName'+sControlFieldId));
				lblState = window.opener.$(eval('window.opener.cl_State'+sControlFieldId));
				lblCity = window.opener.$(eval('window.opener.cl_City'+sControlFieldId));
				lblSchoolId = window.opener.$(eval('window.opener.cl_schoolId'+sControlFieldId));
				hidden = window.opener.$(eval('window.opener.cl_hiddenSchoolId'+sControlFieldId));
				SchoolLink = window.opener.$(eval('window.opener.cl_ShowSchoolLink'+sControlFieldId));
				// end - JDB 6/25/2008 # 4045
			}

			if(sEditUrl)
			{
				sEditUrl = sEditUrl.replace("##OPENSUBWIN##","OpenCEEBUrl('");
				sEditUrl = sEditUrl.replace("##CLOSESUBWIN##","');");
			}
			if(SchoolLink)
			{
				SchoolLink.style.display='none';
			}
			if(pnlShow)
			{
				pnlShow.style.display='';
			}
			if(lblSchool)
			{
				lblSchool.innerHTML = sSchoolName + " " + sEditUrl;
			}
			if(lblState)
			{
				lblState.innerHTML = sState ;
			}
			if(lblCity)
			{
				lblCity.innerHTML = sCity;
			}
			if(sSchoolId)
			{
				lblSchoolId.innerHTML = sSchoolId;
				hidden.value = sSchoolId;
			}
			else
			{
				lblSchoolId.innerHTML = "N\A";
				hidden.value = sSchoolName + "~" + sCity + "~" + sState;
			}
				
			window.opener.focus();
		} // (window.opener != null)
		
		self.close();
} //CeebCloseAndRefresh

function ToggleDiv(prmTargetId, sender) {

	if (imod$(prmTargetId).style.display == "none") {
		jQuery("#" + prmTargetId).slideDown('slow');
		if (sender) {
			jQuery(sender).removeClass("div-toggle-closed");
			jQuery(sender).addClass("div-toggle-opened");
		 }
	}
	else {
		jQuery("#" + prmTargetId).slideUp('slow');
		if (sender) {
			jQuery(sender).removeClass("div-toggle-opened");
			jQuery(sender).addClass("div-toggle-closed");
		}

	}
}