/*
 * -----------------------------------------
 * popup element start
 * -----------------------------------------
 */

var CXcurrentVisbleMenu;
var CXSelectedDropdown = new Array();
var CXimagesPath = '/WCUIcom/';
var CXframeworkformpath = '/WCUIcom/forms/';
var CXlastnode = null;
var isgridpanel=false;
var makingvisible=false;
var editinstance = null;

function CXMakeVisible(elementid) { 
	CXHideCurrent();
	CXcurrentVisbleMenu=elementid;
	var obj = document.getElementById(elementid);
	if (obj) {
		makingvisible=true;
		obj.style.visibility = 'visible';
		var obj2 = document.getElementById(elementid+'A');
		if (obj2) {
			obj2.className='CXselectboxTOPOpen';
		}
	}
}

function CXDefineRequiredFields(field, val) {
}

function CXHideCurrent() {
	if (CXcurrentVisbleMenu) {
		var obj = document.getElementById(CXcurrentVisbleMenu);
		if (obj) {
			obj.style.visibility = 'hidden';
			var obj2 = document.getElementById(obj.id+'A');
			if (obj2) {
				obj2.className='CXselectboxTOP';
			}
		}
	}
}

/*
 * -----------------------------------------
 * popup element END
 * -----------------------------------------
 */

/*
 * -----------------------------------------------
 * Dropdown list start
 * -----------------------------------------------
 */
function CXFindCurrentSelected(id) {
	for (i=0;i<CXSelectedDropdown.length;i++) {
		if (CXSelectedDropdown[i].id==id) {
			return CXSelectedDropdown[i].element; 
		} 
	}
	return null;
}

function CXMarkSelected(id, element) {
	var i=0;
	for (i=0;i<CXSelectedDropdown.length;i++) {
		if (CXSelectedDropdown[i]) {
			if (CXSelectedDropdown[i].id==id) { 
				CXSelectedDropdown[i].element = element;
				return;
			}
		} 
	}
	CXSelectedDropdown[CXSelectedDropdown.length] = {id: id, element:element};
}

function CXSelectMouseOver(id, element) {
	var obj = CXFindCurrentSelected(id);
	if (obj) {
		obj.className='CXdropdownitem';
	}

	element.className='CXdropdownitemSelected';
	CXMarkSelected(id, element);
}

function CXSelectOnClick(id, element, val) {
	var obj_xx = document.getElementById(id+'_text');
	obj_xx.innerHTML = element.innerHTML;
	obj_xx = document.getElementById(id);
	obj_xx.value = val;
	CXHideCurrent();
}
/*
 * -----------------------------------------------
 * Dropdown list end
 * -----------------------------------------------
 */

/*
 * -----------------------------------------------
 * Tabbed panel start
 * -----------------------------------------------
 */
function CXtabGlow(id) {
	var obj = document.getElementById(id+'GLOW');
	if (obj) {
		obj.style.visibility='visible';
	}
}

function CXtabGlowOut(id) {
	var obj = document.getElementById(id+'GLOW');
	if (obj) {
		if (obj.className != 'CXtabglowOpen') {
			obj.style.visibility='hidden';
		}
	}
}

function CXtabClick(id,tno,element) {
	CXtabHideCurrent(id);
	element.className='CXtabOpen';
	element.style.backgroundImage='';
	var obj2 = document.getElementById(id+tno+'GLOW');
	if (obj2) {
		obj2.className='CXtabglowOpen';
	}
	obj2 = document.getElementById(id+tno+'BODY');
	if (obj2) {
		obj2.style.visibility='visible';
	}
	obj2 = document.getElementById(id);
	if (obj2) {
		obj2.value = tno;
	}
	element.tno = id+tno;
	CXMarkSelected(id, element);
}

function CXtabHideCurrent(id) {
	var obj = CXFindCurrentSelected(id);
	if (obj) {
		obj.className='CXtab';
		obj.style.backgroundImage='url('+CXimagesPath+'_imgs/TabBackground.gif)';
		obj2 = document.getElementById(obj.tno+'GLOW');
		if (obj2) {
			obj2.className='CXtabglow';
			obj2.style.visibility='hidden';
		}
		obj2 = document.getElementById(obj.tno+'BODY');
		if (obj2) {
			obj2.style.visibility='hidden';
		}
	}
}

function CXBorderOver(element) {
	element.style.borderColor="#00377A";
	element.style.backgroundColor="#64799C";
}

function CXBorderOut(element) {
	element.style.borderColor="#7288AC";
	element.style.backgroundColor="#7288AC";
}

/*
 * -------------------------------------
 * Tabbed Panel END
 * -------------------------------------
 */

/*
 * -------------------------------------
 *  Action menu start
 * ------------------------------------
 */
function CXgridactionover(element) {
	var obj = document.getElementById(element.id+'BLUE');
	obj.className='CXgridactionblueOVER';
	obj = document.getElementById(element.id+'TEXT');
	obj.className='CXgridactiontextOVER';
}

function CXgridactionout(element) {
	var obj = document.getElementById(element.id+'BLUE');
	obj.className='CXgridactionblue';
	obj = document.getElementById(element.id+'TEXT');
	obj.className='CXgridactiontext';
}

function CXActionVisible(id) {
	makingvisible=true;
	CXHideCurrent();
	var obj=document.getElementById(id+'ACTIONDROPDOWN');
	if (obj) {
		obj.style.visibility='visible';
		CXcurrentVisbleMenu=obj.id;
	}
}

/*
 * -------------------------------------
 *  Action menu end
 * ------------------------------------
 */

/*
 * -----------------------------------------------------
 * Checkbox start
 * -----------------------------------------------------
 */
function CXovercheck(element) {
  var obj = document.getElementById(element.id+"GLOW");
  obj.style.visibility='visible';
}

function CXoutcheck(element) {
  var obj = document.getElementById(element.id+"GLOW");
  obj.style.visibility='hidden';
}

function CXonclickcheck(elementid) {
	var obj = document.getElementById(elementid);
	if (obj.value=='true') {
		CXcheckuncheck(elementid);
	} else {
		CXcheckcheck(elementid);
	}
}

function CXcheckuncheck(elementid) {
	var obj = document.getElementById(elementid);
	var aar = document.getElementById(elementid+'BCHECK');
	obj.value='false';
	aar.style.visibility='hidden';
}

function CXcheckcheck(elementid) {
	var obj = document.getElementById(elementid);
	var aar = document.getElementById(elementid+'BCHECK');
	obj.value='true';
	aar.style.visibility='visible';
}

/*
 * ----------------------------------
 * Grid letter START
 * ----------------------------------
 */


function CXletterOVER(element) {
	element.style.color='Black';
}
function CXletterOUT(element) {
	if (element.className=='CXfON') {
		//elx.className = 'CXfON';
		element.style.color='#000088';
	} else {
		//elx.className = 'CXf';
		element.style.color='#74736B';
	}
}
/*
 * ----------------------------------
 * Grid letter END
 * ----------------------------------
 */


/*
 * -----------------------------------
 * Grid Client event handlers
 * -----------------------------------
 */
 
 /*  SEARCH */
 function CXsearch(gridid) {
	var obj = document.getElementById(gridid);
	var action = frames[gridid].document.getElementById('GDATAACTION');
	action.value='';
	if (obj) {
		if (obj.value != '') {
			CXsubmitgrid(gridid, 'search', obj.value );
			return;
		}
	}
	alert('Please provide a search value before search GO is pushed.');
 }

 /* Select view */ 
 function CXView(gridid, val) {
	var view = frames[gridid].document.getElementById('GDATAVIEW');
	view.value = val;
	frames[gridid].CXsubmit();
 }

/* Browse page back */
function CXprevpage(gridid) {
	var page = frames[gridid].document.getElementById('GDATAPAGE');
	if (page) {
		if (page.value>1) {
			page.value=eval(page.value-1);
			frames[gridid].CXsubmit();
		}
	}
}

/* Browse page forward */
function CXnextpage(gridid) {
	var rt = document.getElementById(gridid+'NEXTPAGE');
	if (rt.className=='CXgridnobrowse') {
		return;
	}
	var page = frames[gridid].document.getElementById('GDATAPAGE');
	if (page) {
		page.value=eval(page.value-(-1));
		frames[gridid].CXsubmit();
	}
}


/* Action executer */
function CXAction(gridid, engine, act) {
	var win = window.open(CXframeworkformpath+"GridSelectActionScope.aspx?gridid="+gridid+"&purpose=action&engine="+engine+"&action="+act ,null,
    "height=200,width=400,status=no,toolbar=no,menubar=no,location=no");
    win.moveTo(250, 250);
}


function CXActionPrint(gridid, engine, pp) {
	
	var win = window.open(CXframeworkformpath+"GridSelectActionScope.aspx?gridid="+gridid+"&purpose=print&engine="+engine+pp ,null,
    "height=200,width=400,status=no,toolbar=no,menubar=no,location=no");
    win.moveTo(250, 250);
}

function CXSetActionScope(gridid, scope) {
	var action = frames[gridid].document.getElementById('GDATAACTIONSCOPE');
	action.value = scope;
}

function CXdoPrint(gridid, scope,pp) {
	CXSetActionScope(gridid, scope);
	var win2 = window.open(CXframeworkformpath+'GridPrint.aspx?scope='+scope+pp ,'print',
    "height=600,width=600,status=no,toolbar=no,menubar=no,location=no,resizable=yes");
    win2.moveTo(100, 100);
    win2.focus();
}


function CXActionExcel(gridid, engine) {
	var win = window.open(CXframeworkformpath+"GridSelectActionScope.aspx?gridid="+gridid+"&purpose=excel&engine="+engine ,null,
    "height=200,width=400,status=no,toolbar=no,menubar=no,location=no");
    win.moveTo(250, 250);
}


function CXdoExcel(gridid, scope) {
	CXSetActionScope(gridid, scope);
	if (frames[gridid]) {
		action = frames[gridid].document.getElementById('GDATAACTION');
		var remember = action.value;
		action.value = 'excel';
		frames[gridid].CXsubmit();
		action.value = remember;
	}
}


 /* Search go and filter go */
 function CXsubmitgrid(gridid, thefunc, theparam) {
	if (frames[gridid]) {
		var func = frames[gridid].document.getElementById('GDATA');
		if (func) {
			func.value = thefunc;
			var para = frames[gridid].document.getElementById('GDATAPARAME');
			para.value = theparam;
			frames[gridid].CXsubmit();
		}
	}
 }

/* Action executer */
function CXactionExecute(gridid, engine,action) {
	CXHideCurrent();
	CXAction(gridid, engine, 'action&actionmenu='+action );
}

/* Simple, just do it action executer .. no message no nothing ... just do it */
function CXactionExecuteSimple(gridid, act) {
	CXHideCurrent();
	CXSetActionScope(gridid, 'selected');
	action = frames[gridid].document.getElementById('GDATAACTION');
	var remember = action.value;
	action.value = 'action:'+act;
	frames[gridid].CXsubmit();
	action.value = remember;
}

function CXdoAction(gridid, act, scope) {
	CXSetActionScope(gridid, scope);
	if (frames[gridid]) {
		action = frames[gridid].document.getElementById('GDATAACTION');
		var remember = action.value;
		action.value = 'action:'+act;
		frames[gridid].CXsubmit();
		action.value = remember;
	}
}


/*
 * ---------------------------------------------------
 * Grid client action handler end
 * ---------------------------------------------------
 */
 

/* 
 *  ------------------------------------------------
 *  Drag drop right click END
 *  ------------------------------------------------
 */
 

function CXSHH(panel) {
	if (panel.makingvisible) {
	} else {
		panel.CXHideCurrent();
 	}
	panel.makingvisible=false;
}
  
  /*
   *  ----------------------------------------------
   * 
   *  ----------------------------------------------
   */
   
   function CXTransferState(gridid, xform) {
		frames[gridid].CXGridTransferForm(xform);
   }
   
   /*
    * --------------------------------------------------
    * Explore tree expand colapse function
    */
    
   		function CXtreeshow(elm) {
			document.getElementById(elm).className='CXtreeblockON';
		}

		function CXtreehide(elm) {
			document.getElementById(elm).className='CXtreeblock';
		}
			
		function CXtreeshowhide(elm) {
			var obj = document.getElementById(elm);
			var hideit=false;
			if (obj) {
				if (obj.className=='CXtreeblockON') {
					CXtreehide(elm);
					hideit=true;
				} else {
					CXtreeshow(elm);
				}
			}
			obj = document.getElementById('ec_'+elm);
			if (obj) {
				if (hideit) {
					obj.src = CXplus.src;
				} else {
					obj.src = CXminus.src;
				}
			}
			obj = document.getElementById('ecf_'+elm);
			if (obj) {
				if (hideit) {
					obj.value='false';
				} else {
					obj.value='true';
				}
			}
		}
			
   
   
   
   /*
    * --------------------------------------------------
    *  Public methods
    *  The follow methods is to be used for integration
    *  with the framework from outside the framework it
    *  self. Therefor the method do not have the CX
    *  name prefix
    *  -------------------------------------------------
    */
   
   
   /*
    * -----------------------------------------------
    * This method should be called by action popup to
    * set action parameters.
    * -----------------------------------------------
    */
   function AddActionParameter(gridid, name, value) {
		frames[gridid].CXAddActionParameter(name, value);
   }
   
   /*
    * -------------------------------------------------
    * This method should be called by action popup to
    * sent the action back to the server for execution
    * -------------------------------------------------
    */
    
   function ActionExecute(gridid, act) {
	CXHideCurrent();
	var action = frames[gridid].document.getElementById('GDATAACTIONSCOPE');
	if (!action.value || action.value=='') {
		action.value = 'selected';
	}
	action = frames[gridid].document.getElementById('GDATAACTION');
	var remember = action.value;
	action.value = 'action:'+act;
	frames[gridid].CXsubmit();
	action.value = '';
   }

   /*
    *  --------------------------------------------
    *  Count the number of selected rows in a grid 
    *  --------------------------------------------
    */  
   function GridCountSelected(gridid) {
	var gf = frames[gridid];
	if (gf) {
		return gf.CXCountSelected();
	}
	return 0;
   }
   
   /*
    * -----------------------------------------------
    * Open a popup window
    * -----------------------------------------------
    */
    
    function OpenPopup(url) {
		var win = window.open(url ,'',
		"height=600,width=800,status=no,toolbar=no,menubar=no,location=no,resizable=yes");
		win.moveTo(50, 50);
    }
    
    /*
     * -------------------------------------------------
     *  Refresh the grid, ex. when adding a record etc.
     * -------------------------------------------------
     */
	function RefreshGrid(gridid) {
		if (frames[gridid]) {
			frames[gridid].CXexecuteRefresh();
		} else {
			CXexecuteRefresh();
		}

	}
	
	function SetSearchString(gridid, val) {
		var obj = document.getElementById(gridid);
		if (obj) {
			obj.value = val;
		}
	}
	
	function GetCurrentView(gridid) {
		var obj = document.getElementById(gridid+'gridsel');
		if (obj) {
			return obj.value;
		} else {
			obj = parent.getElementById(gridid+'gridsel');
			if (obj) {
				return obj.value;
			}
		}
		return '';
	}
	
	
	function LoadFramePage(targetid, url) {
		var obj = document.getElementById(targetid);
		if (obj) {
			obj.src = url;
		}
	}


/*
*  Toggle Select Control Begin
*/
function CXSelectOptions(fromControlID, toControlID, controlID)
{
	var fromControl = document.getElementById(fromControlID);
	var toControl = document.getElementById(toControlID);
	
	var oldLength = fromControl.options.length;
	var delim = "";
	for (var i = 0; i < oldLength ; i ++) 
	{
		if (fromControl.options[i].selected == true)
		{
			toControl.add(new Option(fromControl.options[i].text,fromControl.options[i].value));
		}
	}
	
	for (var i = oldLength - 1; i >= 0 ; i --) 
	{
		if (fromControl.options[i].selected == true)
		{
			fromControl.remove(i);
		}
	}
	
	document.getElementById(controlID).value = GetAvailableKeyValues(controlID);
	document.getElementById(controlID + "SELECTED").value = GetSelectedKeyValues(controlID);
	
}

function GetSelectedKeyValues(controlID)
{
	var selectControl = document.getElementById(controlID + "SelectedSelect");
	
	var keyValues = "";
	var delim = "";
	for (var i = 0; i < selectControl.options.length ; i ++) 
	{
		keyValues = keyValues + delim + selectControl[i].value;
		delim = ":";

	}
	return keyValues;
}

function GetAvailableKeyValues(controlID)
{
	var availControl = document.getElementById(controlID + "AvailbleSelect");
	
	var keyValues = "";
	var delim = "";
	for (var i = 0; i < availControl.options.length ; i ++) 
	{
		keyValues = keyValues + delim + availControl[i].value;
		delim = ":";
	}
	return keyValues;
}

/*
*  Toggle Select Control End
*/

/*
 *  -----------------------------------------------
 *  Edit framework method begin
 *  -----------------------------------------------
 */

	function CXEditSave(id) {
		document.getElementById(id).value = 'save';
		CXChangedEditField(id);
		document.forms[0].submit();
	}
	
	function CXEditSaveAndClose(id) {
		document.getElementById(id).value = 'saveandclose';
		CXChangedEditField(id);
		document.forms[0].submit();
	}

	function CXChangedEditField(id) {
		var obj = document.getElementById(id + '_CHANGEDFIELD');
		if (obj) {
			var i = 0;
			var res = '';
			var sep = '';
			for (i=0;i<editinstance.fieldchanged.length;i++) {
				if (editinstance.fieldchanged[i]=='true') {
					res = res + sep + editinstance.fieldname[i] + ':==:' + editinstance.fieldvalue[i];
					sep = '[<><>]';
				}
			}
			obj.value = res;

		}
	}


	function CXDefineEditValue(field, value, cm) {
		while(value.indexOf("[<>CRG_RTN<>]") != -1)
		{value = value.replace("[<>CRG_RTN<>]", "\r\n");
		}
		while(value.indexOf("[<>DBQUOTE<>]") != -1)
		{
			value = value.replace("[<>DBQUOTE<>]", "\"");
		}
		if (editinstance) {
			var i = 0;
			var found = false;
			for (i=0;i<editinstance.fieldname.length;i++) {
				if (field==editinstance.fieldname[i]) {
					editinstance.fieldvalue[i] = value;
					editinstance.fieldchanged[i] = cm;
					found=true;
					break;
				}
			}
			if (!found) {
				editinstance.fieldname[editinstance.fieldname.length] = field;
				editinstance.fieldvalue[editinstance.fieldvalue.length] = value;
				editinstance.fieldchanged[editinstance.fieldchanged.length] = cm;
			}
		}
	}

	/*
	 * ----------------------------------------------
	 * Table checkbox list handler (START)
	 * ----------------------------------------------
	 */
	function CXTableCheckAll(elmid) {
		var obj = document.forms[0][elmid];
		var sel = document.getElementById(elmid+'CHECKALL');
		if (obj) {
			if (!sel.checked) {
				if (obj.length) {
					for (i=0;i<obj.length;i++) {
						obj[i].checked = false;
					}
				} else {
					obj.checked = false;
				}
			} else {
				if (obj.length) {
					for (i=0;i<obj.length;i++) {
						obj[i].checked = true;
					}
				} else {
					obj.checked = true;
				}
			}
			CXCheckboxSetParent(elmid);
		}
	}

	function CXMarkAll(elm, elmid) {
		var obj = document.forms[0][elmid];
		var sel = document.getElementById(elmid+'CHECKALL');
		if (obj) {
			if (obj.length) {
				for (i=0;i<obj.length;i++) {
					if (!obj[i].checked) {
						sel.checked = false;
						CXCheckboxSetParent(elmid);
						return;
					}
				}
			} else {
				if (!obj.checked) {
					sel.checked = false;
					CXCheckboxSetParent(elmid);
					return;
				}
			}
			sel.checked = true;	
			CXCheckboxSetParent(elmid);
		}
	}
	
	function CXCheckboxSetParent(elmid) {
		var obj = document.forms[0][elmid];

		if (parent && parent.editinstance) {
			var val = ''
			var cma = '';
			for (var i=0;i<obj.length;i++) {
				if (obj[i].checked) {
					val = val + cma + '{' + obj[i].value + '}';
					cma = ',';
				}
			}
			parent.SetEditValue(elmid, val);
		}
	}
	
	/*
	 * ----------------------------------------------
	 * Table checkbox list handler (END)
	 * ----------------------------------------------
	 */


	function SetEditValue(field, value) {
	//debugger;
		CXDefineEditValue(field, value, 'true');
	}

	function SetDateEditVal(field)
	{
		//debugger;
		var dateVal = GetStandardDateString(field);
		SetEditValue(field, dateVal);
	}

	function LoadEditData() {
		//debugger;
		if (parent && parent.editinstance) {
			var i=0;
			for (i = 0; i < parent.editinstance.fieldname.length; i++) 
			{
				var obj = document.getElementById(parent.editinstance.fieldname[i]);
				if (obj) 
				{
					if(obj.type == "radio")
					{
						var radios = document.forms[0].elements[parent.editinstance.fieldname[i]]
						for(var j = 0; j < radios.length; j++) 
						{
							radios[j].checked = false;
							if(radios[j].value.toLowerCase() == parent.editinstance.fieldvalue[i].toLowerCase()) 
							{
								radios[j].checked = true;
							}
						}
					}
					else
					if (obj.type == "checkbox") {
						var checks = document.forms[0][parent.editinstance.fieldname[i]];
						if (checks.length) {
							for(var j = 0; j < checks.length; j++) 
							{
								checks[j].checked = false;
								if(parent.editinstance.fieldvalue[i].indexOf('{'+checks[j].value+'}')>=0) 
								{
									checks[j].checked = true;
								}
							}
						} else {
							if (parent.editinstance.fieldname[i]==obj.value) {
								obj.checked = true;
							} else {
								obj.checked = false;
							}
						}
					}	
					else
					{
						obj.value = parent.editinstance.fieldvalue[i];
					}
				}
			}
		}
	}

/*
 *  -----------------------------------------------
 *  Edit framework method End
 *  -----------------------------------------------
 */


function DeleteText(control)
{
	if (event.keyCode==46)
	{
		control.value = "";
	}
}

function CXOpenImageSearch(pageURL, id)
{
	var win = window.open(pageURL+"?controlID="+id, "SelectImage", "height=450,width=600,status=no,toolbar=no,menubar=no,location=no, resizable=1");
	win.moveTo(250, 100);
}
/*
*  Image Lookup Control End
*/

/*
*  Utility methods Begin
*/
   /*
    *  --------------------------------------------
    *  Pads a specific character at the beginning of 
    *  stringObj until its length becomes equal to 
    *  specified length
    *  --------------------------------------------
    */  

function PrependChars(stringObj, totalLengthReq, charPrepend)
{
	stringObj = "" + stringObj;
	var returnString = stringObj;
	if(stringObj.length < totalLengthReq && charPrepend != null && charPrepend.length <= 1)
	{
		for(i = 0; i < totalLengthReq - stringObj.length; i++)
		{
			returnString = charPrepend + returnString;
		}
	}
	return returnString;
}


function CheckIsNumber(obj, min, max)
{
	if(isNaN(obj.value)==false && obj.value > min && obj.value < max)
	{
		return true;
	}
	obj.value = "";
	alert("You must enter a number between " + min + " and " + max + ".");
	return false;
}

/*
*  Utility methods End
*/


/*
*  Radio Methods Start
*/
function GetRadioValue(obj)
{
	for(i = 0; i < obj.length; i++)
	{
		if(obj[i].checked == true)
		{
			return obj[i].value;
		}
	}
}

function CXrequired(elm) {
	if (elm.value == '') {
		alert('Feltet skal udfyldes');
		return false;
	}
	return true;
}


function imposeMaxLength(Object, MaxLen){
	var ret = (Object.value.length <= MaxLen);
	return ret;
}

/*
*  Radio Methods End
*/

