/*
    multipart js library portabilitiy code.
    then emptor.js is used, following two functions and single import call
    will 
*/

// BEGINNING OF PORTABILITY LAYER CODE

// if $include is not defined then this library is called from 
// old projects, so we ave to define $include and include Tigris.js
// which is the main script file
if ( typeof( $include ) === "undefined" )
{

function getAbsoluteUrl(path)
{
    var img = new Image();
    img.src = path;
    return img.src;
}

// imports a js file
function $include( path )
{
	var newScript;
   	var scripts = document.getElementsByTagName( "script" );
   
   	for( var n = 0; n < scripts.length; n++)
   	{
   		var source = scripts[ n ].src;
       	if( source && source.indexOf(path) > 0 ||
            source && source.indexOf( getAbsoluteUrl( "scripts/" + path) ) > 0 )
       	{
        	return;
       	}
   	}

   	newScript = document.createElement("script");
   	newScript.type = "text/javascript";
   	newScript.src = "scripts/" + path;
   
	var head = document.getElementsByTagName( "head" )[ 0 ];
   	head.appendChild( newScript );
}

}
$include( "Tigris.js" );

// END OF PORTABILITY LAYER CODE

/*
************************************************************************************************
*********************************  G L O B A L  V A R I A B L E S  *****************************
************************************************************************************************
*/ 
//window.onerror = showerror;

var BACKCOLOR_FOCUS = 'Khaki';
var BACKCOLOR_BLUR = "White";
var BACKCOLOR_ERRORFOCUS ='#FFE8E8';

BACKCOLOR_FOCUS = document.styleSheets('stylefocus').rules(0).style.backgroundColor;
BACKCOLOR_BLUR = document.styleSheets('stylefocus').rules(1).style.backgroundColor; 
BACKCOLOR_ERRORFOCUS = document.styleSheets('stylefocus').rules(2).style.backgroundColor; 

var submitLoad = true; 
var PAGING_REQUESTEDPAGENUMBER = '_PAGENUMBER', PAGING_GOTOPAGEELEMENTSUFFIX = '_GOTOPAGE',	
	PAGING_FIRSPAGE = 1;
var LNG_TR = 'TR', LNG_EN = 'EN', LNG_DE = 'DE', LNG_FR = 'FR';
var LNG_ARR = new Array("TR","EN","DE","FR","RU");
var MSG_SIZE = 54;
var MSG_REQUIRED = 1, MSG_MINVALUE = 2, MSG_MAXVALUE = 3, MSG_MINLENGTH = 4, 
    MSG_MAXLENGTH = 5, MSG_NAN = 6, MSG_CONFIRMPASSWORD = 7, MSG_EMAIL = 8, 
    MSG_DATE = 9, MSG_TIME = 10, MSG_CHECKBOX_SELECTED = 11, MSG_CHECKBOX_UNSELECTED = 12,
    MSG_LOGOUTCONFIRM = 13, MSG_DATEBETWEEN = 14, MSG_FILEPATHREQUIRED = 15, MSG_FILENAMEREQUIRED = 16,
    MSG_CHECKOUTMETADATA = 17, MSG_SELECTPARAMETER = 18, MSG_MINIMUMNUMBER = 19, MSG_MINIMUMLETTER = 20,
    MSG_MONTHARRAY = 21, MSG_MONTHARRAYSHORT = 22,
    MSG_DAYARRAY = 23, MSG_WEEKSTRING = 24, MSG_TODAY = 25, MSG_PROCESSING = 26,
    MSG_BUTTONDELETE = 27, MSG_CONFIRMDELETE = 28, MSG_PRIMARYCOLUMNREQUIRED = 29,
    MSG_AREYOUSURE = 30, MSG_CONTINUEPOPULATETABLES = 31, MSG_NOMODIFICATION = 32,
    MSG_DESIGNEXITWITHOUTSAVE = 33, MSG_CURRENCYUNSELECTED = 34, MSG_LISTISCHANGED = 35,
    MSG_REQUIRED_MULTILINGUAL = 36, MSG_COMPATIBLEBROWSER = 37, MSG_SELECTMENUITEM = 38,
    MSG_CHECKOUTMENU = 39, MSG_PHONECOUNTRYCODE = 40, MSG_PHONEAREACODE = 41, MSG_PHONELENGTH = 42,
    MSG_DURATIONREQUIRED = 43, MSG_HTTPPOSTERROR = 44, MSG_CONFIRMDELETEASSIGNMENT = 45,
    MSG_ASSIGNMENTEXISTS = 46, MSG_SELECTASSIGNMENT = 47, MSG_ATLEASTONEASSIGNMENT = 48,
    MSG_WFSELFPOSITION = 49, MSG_WFSELFUSER = 50, MSG_SENDBACKERROR=51, MSG_HASNOSENDBACKSTEP=52,
    MSG_LOCKCOLUMNS = 53, MSG_UNLOCKCOLUMNS = 54;
var msg = Array(MSG_SIZE); 
var customMessageCodes = new Array();
var customMessages = new Array();
var pageElementModifiers = new Array();
var ELEMENT_LETTERFILTER = "LETTERFILTER";
var processingPopup = window.createPopup();
var PROCESSING_POPUP_WIDTH = 300, PROCESSING_POPUP_HEIGHT = 150;
var processing = false;
var pleaseWaitImg = new Image();
pleaseWaitImg.src = "images/pleasewait.gif";
var CUSTOMDISABLE = "customDisable";
var oFCKeditor;

var SEPARATORTIME = ":" ;
var childWindows = new Array();
var DESCRIPTIONSUFFIX = '_D';
var quickSearchOpenerElement = null;
var PAGEUP = 33, PAGEDOWN = 34;
var KEYUP = 38, KEYDOWN = 40;
var HOME = 36, END = 35;
var ENTER = 13, TAB = 9, ESC = 27;
var parameterIndex;
var disableElementFocusChange = 0;

var SCREENPARTPREFIX = 'ScreenPart';
var ELEMENTGROUPPREFIX = 'ElementGroup';


/* BEGIN FUNCTIONS ABOUT WORKFLOW SEND, FORWARD, COMMENT, HELP REQUESTS */

/*
    This method is used to open a popup page to cancel
    an assignment from the waiting box page.
*/
function WFCancel(stepid)
{
    openScreen('SCRWFCANCELASSIGNMENT.xml',true,'','ScreenPartEdit','STEPID', stepid,'0','','','',500,170,1);
}
/* 
    Copies the text to clipboard of Metadata Comparision Screen
*/
function Copy()
{
    if( window.clipboardData && clipboardData.setData ) 
    { 
        clipboardData.setData("text", document.getElementById('txtScript').value); 
    } 
    else 
    { 
        alert("Internet Explorer required"); 
    } 
} 
/*
    This is the javascript function called by the send
    button on a formpart. This function is created because
    sending should behave differently for different types
    of steps.
*/
function WFSend(screenpartname)
{
    var WFSTEPTYPECODE = "_X_WFSTEPTYPECODE";
    var WFSTEPTYPE_COMMENTREQ = "COMMENTREQ";
    var WFSTEPTYPE_HELPREQ = "HELPREQ";
    
    var stepcodeelementname = screenpartname + WFSTEPTYPECODE;
    var stepcodeelement = document.getElementById(stepcodeelementname);
    var stepcodeelementvalue = stepcodeelement.value;
    
    var submit = true;
    
    if((stepcodeelementvalue == WFSTEPTYPE_COMMENTREQ)  
        ||(stepcodeelementvalue == WFSTEPTYPE_COMMENTREQ))
    {
        submit = false;
    }
    
    submitform(screenpartname, 'WFSend', '', submit);
}



/* 

*/
function OpenSendBackPage(screenpartname)
{
    var WFSENDBACKSTEPID = "X_WFSENDBACKSTEPID";
    var wfStepId = document.getElementById(screenpartname + "X_WFSTEPID").value;
    var wfInstanceId = document.getElementById(screenpartname + "X_WFINSTANCEID").value;
    openScreen('SCRWFSENDBACKLIST.xml',true,'','ButtonPart~ButtonPart','STEPID~INSTANCEID', wfStepId+'~'+wfInstanceId,'0~0','','','',550,515,1);
    var elementValue = document.getElementById(WFSENDBACKSTEPID).value;
    
    if(elementValue != "")
    {
        submitform(screenpartname, 'WFSendBack', '', false);
    }
}

/*
    This method is called by the add new assignment button
    in waiting box. It is used to select new audience to
    create new assignment.
*/
function OpenAddNewAssignment(screenpartname)
{    
    var buttonid = event.srcElement.id;
    var index = parseInt(buttonid.split('_')[2], 10);
    
    buttonid = buttonid.replace(screenpartname + "_", "");
    var WFASSIGNMENTSTEXT = "X_WFASSIGNMENTSTEXT";
    var Url = 'WFSelectAudience.aspx';  
    var arguments = new Object(); 
    arguments.window =  window;
    arguments.screenpartname = screenpartname;
    var DialogArguments = window;    
    var sFeatures = 'dialogHeight:550px;dialogWidth:515px;center:yes;resizable:yes;scroll:no;status:no;';
    var postback = false;
    openPopupModal(Url, arguments, sFeatures, postback);
    var elementValue = document.getElementById(WFASSIGNMENTSTEXT).value;
    
    if(elementValue != "")
    {        
        submitformbyrow(screenpartname, buttonid, '', true, 'CHKID', index);
    }
}

/*
    This method opens the page WFSelectAudience.aspx to select
    the audience to which forward operation is to be performed.
*/
function OpenForwardPage(screenpartname)
{
    var WFASSIGNMENTSTEXT = "X_WFASSIGNMENTSTEXT";
    var Url = 'WFSelectAudience.aspx';  
    var arguments = new Object(); 
    arguments.window =  window;
    arguments.screenpartname = screenpartname;
    var DialogArguments = window;    
    var sFeatures = 'dialogHeight:550px;dialogWidth:515px;center:yes;resizable:yes;scroll:no;status:no;';
    var postback = false;
    openPopupModal(Url, arguments, sFeatures, postback);
    var elementValue = document.getElementById(WFASSIGNMENTSTEXT).value;
    
    if(elementValue != "")
    {
        submitform(screenpartname, 'WFForward', '', false);
    }
}

/*
    This method opens the page WFSelectAudience.aspx to select
    the audience to which request comment operation is to be performed.
*/
function OpenRequestCommentPage(screenpartname)
{
    var WFASSIGNMENTSTEXT = "X_WFASSIGNMENTSTEXT";
    var Url = 'WFSelectAudience.aspx';  
    var arguments = new Object(); 
    arguments.window =  window;
    arguments.screenpartname = screenpartname;
    var DialogArguments = window;    
    var sFeatures = 'dialogHeight:550px;dialogWidth:515px;center:yes;resizable:yes;scroll:no;status:no;';
    var postback = false;
    openPopupModal(Url, arguments, sFeatures, postback);
    var elementValue = document.getElementById(WFASSIGNMENTSTEXT).value;
    
    if(elementValue != "")
    {
        submitform(screenpartname, 'WFRequestComment', '', false);
    }
}


/*
    This method opens the page WFSelectAudience.aspx to select
    the audience to which request help operation is to be performed.
*/
function OpenRequestHelpPage(screenpartname)
{
    var WFASSIGNMENTSTEXT = "X_WFASSIGNMENTSTEXT";
    var Url = 'WFSelectAudience.aspx';  
    var arguments = new Object(); 
    arguments.window =  window;
    arguments.screenpartname = screenpartname;
    var DialogArguments = window;    
    var sFeatures = 'dialogHeight:550px;dialogWidth:515px;center:yes;resizable:yes;scroll:no;status:no;';
    var postback = false;
    openPopupModal(Url, arguments, sFeatures, postback);
    var elementValue = document.getElementById(WFASSIGNMENTSTEXT).value;
    
    if(elementValue != "")
    {
        submitform(screenpartname, 'WFRequestHelp', '', false);
    }
}

/*
    This method opens the page WFRejectForward.aspx to write
    any notes about rejection.
*/
function OpenRejectForwardPage(screenpartname)
{   
    var now = new Date();
	var NOCACHE = 'time=' + now.toUTCString();
	var Url = 'WFRejectForward.aspx?' + NOCACHE;  
    var arguments = new Object(); 
    arguments.window =  window;
    arguments.screenpartname = screenpartname;
    // TASK(52010): cancel on rejectForward rejects forward
    arguments.submitParent = '0';
    
    var DialogArguments = window;    
    var sFeatures = 'dialogHeight:550px;dialogWidth:515px;center:yes;resizable:yes;scroll:no;status:no;';
    var postback = false;
    openPopupModal(Url, arguments, sFeatures, postback);
    
    // TASK(52010): cancel on rejectForward rejects forward
    if ( '1' == arguments.submitParent )
    submitform(screenpartname, 'WFRejectForward', '', false);
}

function OpenCancelInstancePage(screenpartname)
{    
    var now = new Date();
	var NOCACHE = 'time=' + now.toUTCString();
	var Url = 'WFRejectForward.aspx?' + NOCACHE;  
    var arguments = new Object(); 
    arguments.window =  window;
    arguments.screenpartname = screenpartname;
    arguments.submitParent = '0';
    var DialogArguments = window;    
    var sFeatures = 'dialogHeight:550px;dialogWidth:515px;center:yes;resizable:yes;scroll:no;status:no;';
    var postback = false;
    openPopupModal(Url, arguments, sFeatures, postback);
    if(arguments.submitParent == '1')
        submitform(screenpartname, 'WFCancel', '', false);
}

/* END   FUNCTIONS ABOUT WORKFLOW FORWARD, COMMENT, HELP REQUESTS */

/* BEGIN httppost xml schema tags & attributes */

var HTTPPOSTDONE = "HTTPPOSTDONE";
var HttpPostDocument;
var PARAMCOUNTERIND = "ctrInd";

var HPTAG_ROOT = "ROOT";
var HPTAG_PARAMETER = "P";
var HPTAG_SETACTION = "S";
var HPTAG_RESETACTION = "R";
var HPTAG_FILTER = "F";
var HPTAG_REQUEST = "RQ";
var HPATTR_SCREENPART = "s";
var HPATTR_ELEMENTNAME = "e";
var HPATTR_VALUENAME = "n";
var HPATTR_VALUE = "v";
var HPSOURCE_FILTER = "F";
var HPSOURCE_SCREEN = "S";
var HPTAG_SOURCE = "source";
    
/// This method returns the list of "button" elements
/// in the document.
function GetDocumentButtons()
{
    var BUTTONTAG = "BUTTON";
    var list = document.getElementsByTagName(BUTTONTAG);
    return list;
}

/// This method disables the buttons which are currently
/// enabled.
function DisableButtons()
{
    var list = GetDocumentButtons();
    if(list != null)
    {
        if(list.length > 0)
        {
            var i = 0;
            var button;
            
            for(i = 0; i < list.length; i++)
            {
                button = list[i];
                button.setAttribute(CUSTOMDISABLE, 1);
				button.disabled = true;
            }
        }
    }
}

/// This method enables the buttons which were disabled
/// by the method DisableButtons.
function EnableButtons()
{
    var list = GetDocumentButtons();
    if(list != null)
    {
        if(list.length > 0)
        {
            var i = 0;
            var button;
            
            for(i = 0; i < list.length; i++)
            {
                button = list[i];                				
				if (button.getAttribute(CUSTOMDISABLE) != null)
				{
					button.disabled = false;
				}
            }
        }
    }
}

/// This method redirects the user to the url specified
/// by the hidden value. It is set by bizcontext messagredirecturl.
/// When the user closes the popup this function is called.
function RedirectFromMessage()
{
    var MESSAGEREDIRECTURL = "X_MESSAGEREDIRECTURL";
    var elementMessageRedirectUrl = document.getElementById(MESSAGEREDIRECTURL);
    
    if(elementMessageRedirectUrl != null)
    {
        if(elementMessageRedirectUrl.value != "")					
        {
            window.location.href = elementMessageRedirectUrl.value;
        }
    }
}

/// This method creates a simple dialog object using the given parameters.
/// This dialog is used instead of messageshow.aspx. The initisystemmessage
/// method calls this method.
function initBlockerFreePopup(definition, body) 
{										
    YAHOO.namespace("example.container");
    
    var COMMA = ',';
    var YESNO = "YN";
			    
    var title = definition[1];
    var type = definition[2];
    var buttons = definition[3];
    var captionlist = definition[4].split(COMMA);        
    var messageBoxWidth = definition[5];
    var messageBoxHeight = definition[6];        
        
    // Define various event handlers for Dialog	
    				
    // this method implements what action to take
    // when the user presses the yes button
    var handleYes = function() 
    {		
        this.hide();        
	    submitYes();
	    
	    RedirectFromMessage();			
    };

    // this method implements what action to take
    // when the user presses the no or close button
    var handleNo = function() 
    {						
	    this.hide();	    
	    AndClose();
	    RedirectFromMessage();
    };	
    
    var buttonArray;
    
    if(buttons == YESNO)
    {
        buttonArray = [ 
	    { text:captionlist[0], handler:handleYes, isDefault:true },
	    { text:captionlist[1],  handler:handleNo } ];	
	}
	else
	{
	    buttonArray = [ { text:captionlist[0],  handler:handleNo } ];
	}			

    // Instantiate the Dialog					

    YAHOO.example.container.simpledialog1 = new YAHOO.widget.SimpleDialog("simpledialog1", 																							 
    { 
	    width: messageBoxWidth +"px",//"300px",
        height: messageBoxHeight+"px",
	    fixedcenter: true,
	    visible: false,
	    draggable: true,
	    close: true,
	    modal:true,
	    text: body,
	    icon: null,
	    constraintoviewport: true,
	    buttons: buttonArray,
	    zIndex: 999   
    } 
    );

    var kl = new YAHOO.util.KeyListener(document, { keys:27 , keys:13  },                                 
                                               { fn:YAHOO.example.container.simpledialog1.hide,   
                                                 scope:YAHOO.example.container.simpledialog1,   
                                                 correctScope:true } );   
    YAHOO.example.container.simpledialog1.cfg.queueProperty("keylisteners", kl);   

    YAHOO.example.container.simpledialog1.setHeader(title);

    // Render the Dialog					

    YAHOO.example.container.simpledialog1.render(document.body);    
}

/// This method creates a simple dialog object using the given parameters.
/// This dialog is used instead of messageshow.aspx. The initisystemmessage
/// method calls this method.
function initProcessingPopup(definition, body) 
{										
    YAHOO.namespace("example.container");
    
    var COMMA = ',';
    var YESNO = "YN";
			    
    var title = definition[1];
    var type = definition[2];
    var captionlist = definition[4].split(COMMA);        

    var cube = document.getElementById("DCube");
    if (cube != null)
        cube.style.visibility = "hidden";
        
    // Instantiate the Dialog
    YAHOO.example.container.simpledialog1 = new YAHOO.widget.SimpleDialog("simpledialog1", 																							 
    { 
	    width: "300px",
	    height: "200px",
	    fixedcenter: true,
	    visible: false,
	    draggable: false,
	    close: false,
	    modal:true,
	    text: body,
	    icon: null,
	    constraintoviewport: true
    });

    YAHOO.example.container.simpledialog1.setHeader(title);

    // Render the Dialog					

    YAHOO.example.container.simpledialog1.render(document.body);    
}
/// This method creates a simple dialog object using the given parameters.
/// This dialog is used instead of messageshow.aspx. The initisystemmessage
/// method calls this method.
function initIconDefContainer() 
{		
    YAHOO.namespace("example.container");

    // Instantiate a Panel from markup
    YAHOO.example.container.panel1 = new YAHOO.widget.Panel("iconPanel", { width:"174px", visible:false, constraintoviewport:false} );
    YAHOO.example.container.panel1.render();					
}

function AdjustAndShowIconPanelPosition(CallerName)
{
    if(CallerName == 'tooltipPanelIcon')
    {
        panelObj = document.getElementById('iconPanel');
        if(panelObj != null)
        {
        }
    }
    {
        YAHOO.example.container.panel1.show(YAHOO.example.container.panel1, true);
    }
}

/// This method creates a simple dialog object using the given parameters.
/// This dialog is used instead of PopupUrl.aspx.
/// openPopupSearch, openPopupMultipleSelectAdd, openPopupUploadAdd, openPopupLoad, openPopupMultipleListAdd 
/// methods call this method.
/// function initSearchPopup(definition, body) 
function initSearchPopup(definition, body, searchobject, width, height) 
{										
    YAHOO.namespace("example.container");
    
    var COMMA = ',';
    var YESNO = "YN";
			    
    var title = definition[0];

    var cube = document.getElementById("DCube");
    if (cube != null)
        cube.style.visibility = "hidden";
        
    // Instantiate the Dialog
    // searchobject is passed to the dialog to set SetActions, PopupActions etc.
    YAHOO.example.container.searchdialog = new YAHOO.widget.SimpleDialog("simpledialog1", 																							 
    { 
	    width: width,
	    height: height,
	    fixedcenter: true,
	    visible: false,
	    draggable: false,
	    close: true,
	    modal:true,
	    text: body,
	    icon: null,
	    constraintoviewport: true,
	    searchobject: searchobject,
	    zIndex: 999
    });

    YAHOO.example.container.searchdialog.setHeader(title);

    // Render the Dialog					

    YAHOO.example.container.searchdialog.render(document.body);    
}

/* END httppost xml schema tags & attributes */

/* BEGIN httppost xml schema functions */

/* initializes the HttpPostDocument with the root node */
function InitializeHttpPostDocument()
{
    HttpPostDocument = new ActiveXObject("Msxml.DOMDocument");
    HttpPostDocument.loadXML("<" + HPTAG_ROOT + "/>");
}

/* resets the HttpPostDocument */
function ResetHttpPostDocument(source)
{    
    if(HttpPostDocument == null)
    {
        HttpPostDocument = new ActiveXObject("Msxml.DOMDocument");
    } 
    HttpPostDocument.loadXML("<" + HPTAG_ROOT + "><" + HPTAG_SOURCE + ">" + source + "</" + HPTAG_SOURCE + "></" + HPTAG_ROOT + ">")
}

/* returns the inner xml of the HttpPostDocument */
function HttpPostString()
{
    var retval = "";
    if(HttpPostDocument != null)
    {
        retval = HttpPostDocument.xml;
    }
    return retval;
}

/* uses xmlhttp to post the given string to
 the server */
function HttpPost()
{
      var inputString = HttpPostString();
      
      if(inputString == "")
      {
           InitializeHttpPostDocument();
           inputString = HttpPostString();
      }
      
      try
      {
          var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
          xmlHttp.open("POST", "parameterpost.aspx", false)
          xmlHttp.send(inputString);
          if(xmlHttp.responseText.indexOf("lblSessionTimeOut") > 0)
          {
                return msg[MSG_HTTPPOSTERROR];
          }
          else
          {
                var AUTHMODE = 'X_AUTHMODE';
	            var authmode = '' ;
	            if( document.getElementById(AUTHMODE)!= null )
	            {
	                authmode = document.getElementById(AUTHMODE).value;
	            }
                if ( ( authmode === 'Windows' ) && ( !xmlHttp.responseText.startsWith( HTTPPOSTDONE )))
			        return msg[MSG_HTTPPOSTERROR];
                else
			        return xmlHttp.responseText;
          }
      }
      catch(e)
      {
          return msg[MSG_HTTPPOSTERROR];
      }
}

/* adds an element - value request parameter to the xmldocument */
function AddRequestItem(requestName, requestValue)
{
    var xmlNode = HttpPostDocument.createElement(HPTAG_REQUEST);
    
    xmlNode.setAttribute(HPATTR_VALUENAME, requestName);
    xmlNode.text = requestValue;
    
    HttpPostDocument.documentElement.appendChild(xmlNode);
}
/* adds an element - value parameter to the xmldocument */
function AddParameterItem(screenpart, elementname, elementvaluename, elementvalue)
{
    var xmlNode = HttpPostDocument.createElement(HPTAG_PARAMETER);
    
    xmlNode.setAttribute(HPATTR_SCREENPART, screenpart);
    xmlNode.setAttribute(HPATTR_ELEMENTNAME, elementname);
    xmlNode.setAttribute(HPATTR_VALUENAME, elementvaluename);
    xmlNode.setAttribute(HPATTR_VALUE, elementvalue);
    
    HttpPostDocument.documentElement.appendChild(xmlNode);
}

/* adds a set action item to the xmldocument */
function AddSetItem(itemValue)
{
    var xmlNode = HttpPostDocument.createElement(HPTAG_SETACTION);
    
    xmlNode.text = itemValue;
    
    HttpPostDocument.documentElement.appendChild(xmlNode);
}

/* adds a reset action item to the xmldocument */
function AddResetItem(itemValue)
{
    var xmlNode = HttpPostDocument.createElement(HPTAG_RESETACTION);
    
    xmlNode.text = itemValue;
    
    HttpPostDocument.documentElement.appendChild(xmlNode);
}

/* adds a filter item to the xmldocument */
function AddFilterItem(itemValue)
{
    var xmlNode = HttpPostDocument.createElement(HPTAG_FILTER);
    
    xmlNode.text = itemValue;
    
    HttpPostDocument.documentElement.appendChild(xmlNode);
}

/* END httppost xml schema functions */
/*
************************************************************************************************
*******************************  E X C E L    F U N C T I O N S ********************************
************************************************************************************************
*/
function ExcelUpload(url)
{		
	var iframe = document.all('frmExcelUpload');
	iframe.src = url;
}
/*
************************************************************************************************
*******************************  D E S I G N  F U N C T I O N S ********************************
************************************************************************************************
*/

function DesignExitWithoutSave()
{
	if (confirm(msg[MSG_DESIGNEXITWITHOUTSAVE]))
	{
		var screenpart = event.srcElement.id.split("_")[0];
		submitform(screenpart,'EDITSCREENEXITWITHOUTSAVE', '', true);
	}
}

function EditSelectedListColumn(xmlname, screenpartname, caption)
{
	var id = "Edit_" + screenpartname;
	var select = document.getElementById(id);
	var ColumnName = select.options[select.selectedIndex].value;
	if(ColumnName != "0")
	{
		openScreen('SCRDESIGNEDITLISTCOLUMN.xml',true,caption,'ScreenPartEdit~ScreenPartEdit~ScreenPartEdit','SCREENXMLNAME~SCREENPARTNAME~ITEMNAME', xmlname + '~' + screenpartname + '~' + ColumnName,'0~0~0','','','',800,800,1);
	}
}


function EditSelectedFilter(xmlname, screenpartname, caption)
{
	var id = "EditFilter_" + screenpartname;
	var select = document.getElementById(id);
	var ColumnName = select.options[select.selectedIndex].value;
	if(ColumnName != "0")
	{
		openScreen('SCRDESIGNEDITFILTER.xml',true,caption,'ScreenPartEdit~ScreenPartEdit~ScreenPartEdit','SCREENXMLNAME~SCREENPARTNAME~ITEMNAME', xmlname + '~' + screenpartname + '~' + ColumnName,'0~0~0','','','',480,450,1);
	}
}

/*
************************************************************************************************
*******************************  S T R I N G  F U N C T I O N S ********************************
************************************************************************************************
Revised By: MuratO;
*/

/*
 startsWith(str, prefix[, start[, end]]) -> bool

 Return true if str ends with the specified prefix, false otherwise.
 With optional start, test str beginning at that position.
 With optional end, stop comparing str at that position.
 prefix can also be an array of strings to try.
*/
function startsWith(str, prefix, start, end) {
    if (arguments.length < 2) {
        throw new TypeError('startsWith() requires at least 2 arguments');
    }
        
    // check if start and end are null/undefined or a 'number'
    if ((start == null) || (isNaN(new Number(start)))) {
        start = 0;
    }
    if ((end == null) || (isNaN(new Number(end)))) {
        end = Number.MAX_VALUE;
    }
    
    // if it's an array
    if (typeof prefix == "object") {
        for (var i = 0, j = prefix.length; i < j; i++) {
            var res = _stringTailMatch(str, prefix[i], start, end, true);
            if (res) {
                return true;
            }
        }
        return false;
    }
    
    return _stringTailMatch(str, prefix, start, end, true);
}

/*
 endsWith(str, suffix[, start[, end]]) -> bool

 Return true if str ends with the specified suffix, false otherwise.
 With optional start, test str beginning at that position.
 With optional end, stop comparing str at that position.
 suffix can also be an array of strings to try.
*/
function endsWith(str, suffix, start, end) {
    if (arguments.length < 2) {
        throw new TypeError('endsWith() requires at least 2 arguments');
    }
    
    // check if start and end are null/undefined or a 'number'
    if ((start == null) || (isNaN(new Number(start)))) {
        start = 0;
    }
    if ((end == null) || (isNaN(new Number(end)))) {
        end = Number.MAX_VALUE;
    }
    
    // if it's an array
    if (typeof suffix == "object") {
        for (var i = 0, j = suffix.length; i < j; i++) {
            var res = _stringTailMatch(str, suffix[i], start, end, false);
            if (res) {
                return true;
            }
        }
        return false;
    }
    
    return _stringTailMatch(str, suffix, start, end, false);
}

/*
 Matches the end (direction == false) or start (direction == true) of str
 against substr, using the start and end arguments. Returns false
 if not found and true if found.
*/
function _stringTailMatch(str, substr, start, end, fromStart) {
    var len = str.length;
    var slen = substr.length;
    
    var indices = _adjustIndices(start, end, len);
    start = indices[0]; end = indices[1]; len = indices[2];
    
    if (fromStart) {
        if (start + slen > len) {
            return false;
        }
    } else {
        if (end - start < slen || start > len) {
            return false;
        }
        if (end - slen > start) {
            start = end - slen;
        }
    }
    
    if (end - start >= slen) {
        return str.substr(start, slen) == substr;
    }
    return false;
}

function _adjustIndices(start, end, len)
{
	if (end > len) {
	    end = len;
	} else if (end < 0) {
	    end += len;
	}
    
    if (end < 0) {
        end = 0;
    }
	if (start < 0) {
	    start += len;   
	}
	if (start < 0) {
		start = 0;
	}
	
	return [start, end, len];
}

function isArray(obj) 
{ 
	if (obj == null)
		return false;
	else
		return (obj.constructor == Array); 
} 

/* STRING FUNCTIONS */
//Match spaces at beginning of text and replace with a null string
function ltrim(str) {
    return str.replace(/^\s+/,'');
} 

function replaceall(stringValue, sourceVal, destVal)
{	
	var retval;
	stringValue = stringValue.replace(sourceVal, destVal);
	retval = stringValue;
	if (stringValue.indexOf(sourceVal,0) >=0 )	
	{
		retval = replaceall(stringValue, sourceVal, destVal);
	}
	return retval;
}

//Match spaces at end of text and replace with a null string
function rtrim(str) {
    return str.replace(/\s+$/,'');
}

//Match spaces at beginning and end of text and replace
//with null strings
function trim(str) {
    return str.replace(/^\s+/,'').replace(/\s+$/,'');
}

//return left len characters of str
function leftstr(str, len)
{
	if (len > str.length)
		return str;
	else
		return str.substr(0, len);
}

//return right len characters of str
function rightstr(str, len)
{
	if (len > str.length)
		return str;
	else
		return str.substr(str.length - len, len);
}

function controlValueByArray(arrayValue)
{
	return controlValue(arrayValue[0], decodefiltervalue(arrayValue[1]));
}

function controlValue(id, value)
{
	var object = new Object();
	object.id = id;
	object.value = value;
	return object;
}

function CurrencycontrolValue(id, value, currencyid)
{
	var object = new Object();
	object.id = id;
	object.value = value;
	object.currencyid = currencyid;
	return object;
}

function SearchcontrolValue(id, value)
{
	var object = new Object();
	object.id = id;
	object.value = value;
	object.searchid = id;
	return object;
}

// this is the Javascript property given to the shortcuts
// in the list which displays the notes about a record
function OpenNoteInput(tablename, id, noteinputfile)
{
	var CONSTNAME = "ListPart_Table~~~";
	var INDEX = event.srcElement.id.replace(CONSTNAME, "");
	var PAGENUMBER = "_PAGENUMBER";
	var LISTPARTNAME = "ListPart";
	var pageNumber = document.getElementById(LISTPARTNAME + PAGENUMBER).value;	
	var NAME = "ListPart_ID" + pageNumber + "_";
	var HIDDEN = "_HIDDEN";
	var elementName = NAME + INDEX + HIDDEN;
					
	openScreen(noteinputfile,true,'','FormPart~FormPart~FormPart','PARENTNOTEID~RECID~TABLENAME',elementName + '~' + id + '~' + tablename,'value_general~0~0','','','',500,410,6);
}

// this is the Javascript property given to the shortcuts
// in the list which displays the notes about a record
function OpenNoteView()
{
	var CONSTNAME = "ListPart_Table~~~";
	var INDEX = event.srcElement.id.replace(CONSTNAME, "");
	var NAME = "ListPart_ID1_";
	var HIDDEN = "_HIDDEN";
	var elementName = NAME + INDEX + HIDDEN;
	
	openScreen('SCRVIEWNOTE.xml',true,'','FormPart','X_ID',elementName,'value_general','','','',500,410,1);						
}

// opens or closes the design mode
// shortcuts of elements which have hide=1
// attribute
function ToggleHiddenElements()
{	
	var HIDEHIDDENELEMENTS = "X_HIDEHIDDENELEMENTS";
	var CHKHIDEHIDDENELEMENTS = "HIDEHIDDENELEMENTS";
	var HIDEBUTTON = "HIDEBUTTON";
	var DENIEDIMAGE = "images/chkDenied.jpg";
	var GRANTEDIMAGE = "images/chkGranted.jpg";
	
	var hidehiddenelements = document.getElementById(HIDEHIDDENELEMENTS);
	
	if(hidehiddenelements != null)
	{
		var chkhidehiddenelements = document.getElementById(CHKHIDEHIDDENELEMENTS);
		var BUTTONTAG = "button";
		
		var buttons = document.getElementsByTagName(BUTTONTAG);
		var checked = false;
		
		if(hidehiddenelements.value == "1")
		{			
			checked = true;
		}
		
		if(event != null)
		{
			if(event.srcElement != null)
			{
				if(event.srcElement.id == HIDEBUTTON)
				{						
					if(chkhidehiddenelements.src.indexOf(DENIEDIMAGE,0) >= 0)
					{
						chkhidehiddenelements.src = GRANTEDIMAGE;
					}	
					else
					if(chkhidehiddenelements.src.indexOf(GRANTEDIMAGE,0) >= 0)
					{
						chkhidehiddenelements.src = DENIEDIMAGE;
					}
											
					checked = chkhidehiddenelements.src.indexOf(GRANTEDIMAGE,0) >= 0;
				}
			}
		}
		
		if(chkhidehiddenelements != null)
		{				
			checked = chkhidehiddenelements.src.indexOf(GRANTEDIMAGE,0) >= 0;
		}
		
		var i = 0;				
		
		if(checked)
		{			
			hidehiddenelements.value = "1";
		}
		else
		{			
			hidehiddenelements.value = "0";
		}		
		
		if(buttons != null)
		{				
			for(i = 0; i < buttons.length; i++)
			{		
				
				if(buttons[i].hide == "1")
				{								
					if(checked)
					{					
						buttons[i].style.visibility = "hidden";
					}
					else
					{
						buttons[i].style.visibility = "visible";
					}
				}
			}
		}
	}
}

function resizeSave()
{
	var WIDTH = 'X_WIDTH';
	var HEIGHT = 'X_HEIGHT';
	if (window.frames.length > 0)
	{
		var width,height ;
		if (window.frames(0).document.forms(0) !=null)
		{
			width = window.frames(0).document.forms(0).elements(WIDTH);
			height = window.frames(0).document.forms(0).elements(HEIGHT);
		}
		else
		{
			width = window.document.forms(0).elements(WIDTH);
			height = window.document.forms(0).elements(HEIGHT);			
		}
			
		if (width != null)
			width.value = window.top.dialogWidth.replace('px','');
		if (height != null)
			height.value = window.top.dialogHeight.replace('px','');
	}
}

function resizeWindow()
{
	var LOADPAGE = "load.aspx";
	var SEARCHPAGE = "search.aspx";
	var MULTIPLESELECTPAGE = "multipleselect.aspx";
	var MULTIPLELISTPAGE = "multiplelist.aspx";
	var PERSONALIZEPAGE = "personalize.aspx";
	var WFSELECTAUDIENCE = "wfselectaudience.aspx";
	
	var strLocation = location.href.toLowerCase();	
	strLocation = strLocation.toLowerCase();
	
	if ((strLocation.indexOf(LOADPAGE, 0) >= 0) || (strLocation.indexOf(SEARCHPAGE, 0) >= 0)
		|| (strLocation.indexOf(MULTIPLESELECTPAGE, 0) >= 0) || (strLocation.indexOf(MULTIPLELISTPAGE, 0) >= 0)
		|| (strLocation.indexOf(PERSONALIZEPAGE, 0) >= 0)
		|| (strLocation.indexOf(WFSELECTAUDIENCE, 0) >= 0))
	{
		return;
	}

	var WIDTH = 'X_WIDTH';
	var HEIGHT = 'X_HEIGHT';
	var width = document.forms(0).elements(WIDTH);
	var height = document.forms(0).elements(HEIGHT);
	var checkWin = window;
		
	if (window.top != null)
		checkWin = window.top;
	if ((checkWin.opener == null) && (checkWin.dialogArguments == null))
	{
		// window.resizeTo(width, heigth);
	}
	else
	{
		if (width != null)
			checkWin.dialogWidth = width.value + 'px';	
		if (height != null)
			checkWin.dialogHeight = height.value + 'px';
		checkWin.attachEvent('onresize', resizeSave);
	}
}

function CheckKeepWithPrevious( element )
{
    return Boolean( "1" === element.keepWithPrevious );
}

function CheckRequired(element)
{
	var returnValue = false;
	if (element.required != null)
		if (element.required == "1")
			returnValue = true;
	return returnValue;
}

function CheckPrimaryColumnRequired(element)
{	
	var returnValue = false;
	if (element.PrimaryColumnRequired != null)
		if (element.PrimaryColumnRequired == "1")
			returnValue = true;			
	return returnValue;
}

function TryFocus(focusElement)
{
	var result = true;
	
	try
	{
		ChangeStyleForEmptyRequiredFields(focusElement);
		focusElement.focus();
	}
	catch(e)
	{
		result = false;		
	}
	finally
	{
		return result;
	}
}

function Logout()
{
	var LOGOUTURL = 'ProceedLogout.aspx';
	if (confirm(msg[MSG_LOGOUTCONFIRM]))
		location.href = LOGOUTURL;
}

function ChangePassword(userID)
{
	// openScreen('SCRPASSWORDCHANGE.XML',true,'Password','ScreenPartPassword','X_ID',userID+'~','0','','','',400,300,1);
	
	openScreen('newpassword.aspx',false,'Password','','','','0','','','',400,400,1);
}

// Configures the layout of the table view in fullscreen sites.
function ResizeLayOutOnFullScreen()
{
   
	var tablecount = 0;
	
	for(i=0;i<document.all.length;i++)
	{
		if(document.all.item(i).name == "EmptorTableView" || document.all.item(i).name == "SizedTable")
			tablecount++;
			
		if(tablecount == 2)
		{
			if(document.all.item("EmptorTableView").clientHeight < document.body.clientHeight)			
				document.all.item("SizedTable").height = document.body.clientHeight-document.all.item("EmptorTableView").clientHeight+0;
			
			break;
		}		
	}
}

/*
************************************************************************************************
********************************* G L O B A L F U N C T I O N S********************************
************************************************************************************************
*/

/*
    This method is used to lock or unlock columns
    in a list when FreezeColumns is true.
*/
function LockUnlockColumn(tablename, columnIndex)
{
    var table = document.getElementById(tablename);
    var image = event.srcElement;
    var imagename = image.src;
    var frozen = imagename.indexOf("unlock") > 0;
    var cTR = table.getElementsByTagName('TR');
    var j = 0;
    var parentRow = cTR[0];
    var cellCount = parentRow.cells.length;
    var DATATABLE = "_datatable";
    var FROZENCOLUMNINDEX = "frozencolumnindex";
    var frozenindexname = tablename.replace(DATATABLE, "") + "_" + FROZENCOLUMNINDEX;
    var frozenindex = document.getElementById(frozenindexname);
        
    if (!frozen) 
    {
        frozenindex.value = columnIndex;
	    for (i = 0; i < cTR.length; i++)
	    {
	        var tr = cTR.item(i);
	        
	        for(j = 0; j <= columnIndex; j++)
	        {
	            if(tr.cells[j] != null)
	            {
	                tr.cells[j].className = tr.cells[j].className + '_locked';
	                if(i == 0)
	                {
	                    image = tr.cells[j].getElementsByTagName("img")[0];
	                    if(image != null)
	                    {
	                        image.src = "images/unlockcolumn.gif";
	                        image.alt = msg[MSG_UNLOCKCOLUMNS];
	                        if(j != columnIndex)
	                        {
	                            image.style.display = "none";
	                        }
	                    }
	                }
	            }
	        }
	        
	        if(columnIndex < (cellCount - 1))
	        {
	            for(j = columnIndex + 1; j < cellCount; j++)
	            {
	                if(i == 0)
	                {
	                    image = tr.cells[j].getElementsByTagName("img")[0];
	                    if(image != null)
	                    {
	                        image.src = "images/lockcolumn.gif";
	                        image.alt = msg[MSG_UNLOCKCOLUMNS];
	                        if(j != columnIndex)
	                        {
	                            image.style.display = "none";
	                        }
	                    }
	                }
	            }
	        }
		}
	    
	}
	else 
	{
	    frozenindex.value = "";
	    for (i = 0; i < cTR.length; i++)
	    {
	        var tr = cTR.item(i);
	        for(j = 0; j < cellCount; j++)
	        {
	            if(tr.cells[j] != null)
	            {
	                tr.cells[j].className = tr.cells[j].className.replace("_locked", "");
	                if(i == 0)
	                {
	                    image = tr.cells[j].getElementsByTagName("img")[0];
	                    if(image != null)
	                    {
	                        image.src = "images/lockcolumn.gif";
	                        image.style.display = "block";
	                        image.alt = msg[MSG_LOCKCOLUMNS];
	                    }
	                }
	            }
	        }
	    }	    
	}
}

/*
    This method is called at onkeyup events of elements in editable
    lists to achieve ms-excel like functionality. The upper or lower
    element is focused in the list.
*/
function focusUpperLower()
{
    var e = event;
    if(e.keyCode == 38)
    {
        var upper = document.getElementById(event.srcElement.upperelement);
        if(upper != null)
        {
            upper.focus();
        }
        return;
    }
    else if(e.keyCode == 40)
    {
        var lower = document.getElementById(event.srcElement.lowerelement);
        if(lower != null)
        {
            lower.focus();
        }
        return;
    }	
}

// A hidden element named X_PAGETITLE carries the title of
// the application. This method reads its value and sets it
// as the title of the Internet Explorer.
function setpagetitle()
{    
	var element = document.getElementById('X_PAGETITLE');
	if (element != null)
	{
		var page = window;
		if (page.parent != null)
			page = page.parent;
		page.document.title = element.value;	
	}
}

// returns the name of the login page for
// windows authentication
function GetLoginpageUrl()
{
	var loginpage = "loginpage.aspx";
	var HDNLOGINPAGE = "hdnLoginPage";
	var hdnLoginPage = document.getElementById(HDNLOGINPAGE);
	if(hdnLoginPage != null)
	{
		loginpage = hdnLoginPage.value;
	}
	return loginpage;
}

// redirects to login page
function GotoLoginPage()
{
	var loginpage = GetLoginpageUrl();
	loginpage += "?sto=4278";
	location.href = loginpage;
}

// posts the screen so that the context language
// changes
function ChangeContextLanguageTo(language, screenname)
{
	var submittername = "CHANGECONTEXTLANGUAGE";
	submitform(screenname, submittername, language, false);
}


// Retrieve the value of the cookie with the specified name.
function GetCookie(sName)
{
	// cookies are separated by semicolons
	var aCookie = document.cookie.split("; ");
	for (var i=0; i < aCookie.length; i++)
	{
		// a name/value pair (a crumb) is separated by an equal sign
		var aCrumb = aCookie[i].split("=");
		if (sName == aCrumb[0]) 
		return decodeURIComponent(aCrumb[1]);
	}

	// a cookie with the requested name does not exist
	return null;
}


// Create a cookie with the specified name and value.
// The cookie expires in the year 2020.
function SetCookie(sName, sValue)
{				
	date = new Date(2020, 1, 1);				
	document.cookie = sName + "=" + encodeURIComponent(sValue) + "; expires=" + date.toGMTString();				
}

// Delete the cookie with the specified name.
function DelCookie(sName, sValue)
{
	document.cookie = sName + "=" + encodeURIComponent(sValue) + "; expires=Fri, 31 Dec 1999 23:59:59 GMT;";
}

// used in scrmetadatatablelist.xml to open metadata table
// and fields summary. exports the information to excel.
function openMetadataTableSummary(mode)
{
	var MOD = 'mod';
	var LANG = 'lang';
	var lang = document.getElementById("X_LANGUAGE").value;
	var sFeatures = 'dialogHeight:400px;dialogWidth:400px;center:yes;resizable:yes;scroll:no;status:no;';
	var params  = 'Title=' + 'Metadata Table Summary';
	params += '&' + MOD + '=' + mode;
	params += '&' + LANG + '=' + lang;
	var page = 'metadatasummary.aspx';
	var iframe = document.all('frmExcelUpload');
	iframe.src = page + '?' + params;
}

// used in scrmetadatatablelist.xml to open metadata table
// and fields summary. exports the information to excel.
function openMetadataTableColumnsSummary(mode)
{	
	var MOD = 'mod';
	var LANG = 'lang';
	var lang = document.getElementById("X_LANGUAGE").value;
	var sFeatures = 'dialogHeight:400px;dialogWidth:400px;center:yes;resizable:yes;scroll:no;status:no;';
	var params  = 'Title=' + 'Metadata Table Summary';
	params += '&' + MOD + '=' + mode;
	params += '&' + LANG + '=' + lang;
	var page = 'MetadataColumnSummary.aspx';
	var iframe = document.all('frmExcelUpload');
	iframe.src = page + '?' + params;
}

// used in scrmetadatatablelist.xml to open metadata table
// and fields summary. exports the information to word.
function openMetadataTableColumnsSummaryWord(mode)
{	
	var MOD = 'mod';
	var LANG = 'lang';
	var lang = document.getElementById("X_LANGUAGE").value;
	var sFeatures = 'dialogHeight:400px;dialogWidth:400px;center:yes;resizable:yes;scroll:no;status:no;';
	var params  = 'Title=' + 'Metadata Table Summary';
	params += '&' + MOD + '=' + mode;
	params += '&' + LANG + '=' + lang;
	var page = 'metadatasummary.aspx';
	var iframe = document.all('frmExcelUpload');
	iframe.src = page + '?' + params;
}

function ToggleDependingRecords(divName)
{
//	var DIVNAME = "idDependingdiv";
	var DIVOPEN = "dependingdivOpen";
	var DIVCLOSED = "dependingdivClosed";
	
	var div = document.getElementById(divName);
	
	if(div != null)
	{			
		if(div.className == DIVCLOSED)
		{
			div.className = DIVOPEN;			
		}
		else
		{
			div.className = DIVCLOSED;			
		}
	}
}

function scrollTo_OnLoad()
{	
	if(document.getElementById("X_OFFSET") != null)
	{
		window.scrollTo(document.getElementById("X_OFFSET").value, document.getElementById("Y_OFFSET").value);        
	}
}

//checks if the ESC button is pressed
//and closes the current window
//designed to close dialog pages
function CheckForEscape()
{ 
    var key = event.keyCode; 
    
    if ( key==27)
    {         
        event.keyCode = 0; 
        window.close(); 
    }
}

function FocusTo(source, number, toFocus)
{
	if(source.value.length == number)
	{
		if(toFocus.style.visibility != "hidden")
		{
			toFocus.focus();
		}
	}
}

function ToPrinter()
{
	var elements = document.all;
	var i, j = 0;
	var visElements = new Array();
	for (i = 0; i < elements.length; i++)
		if (elements[i].printeroff != null)
		{
			visElements[j++] = elements[i];
			visible_element(elements[i], '0');
		}
	window.print();
	for (j = 0; j < visElements.length; j++)
		visible_element(visElements[j], '1');				
}

function disableStyle(element)
{
	if (element != null)
	{
		if (element.readOnly != null)
		{
			var originalClassName = null;
			var disabledClassName = 'disabledinput';
			if (element.readOnly)
			{
				if (element.className != null)
					if (element.className != '')
						if (element.className != disabledClassName)
							originalClassName = element.className;
				element.className = disabledClassName;
				if (originalClassName != null)
					element.originalClassName = originalClassName;		
			}
			else
			{
				if (element.originalClassName != null)
					originalClassName = element.originalClassName;
				element.className = originalClassName;
			}
		}
	}
}

/*
************************************************************************************************
********************************* E L E M E N T M O D I F I E R ********************************
************************************************************************************************
*/

function GetControlValue(elementValue)
{
	var SPLIT = '~';
	if ((elementValue.id == '') || (elementValue.id == null))
		return elementValue.value;
	else 
	{
		if(elementValue.currencyid == null)
		{
		    if (elementValue.searchid != null)
		    {
			    return elementValue.searchid;
		    }
		    else
		    {
			    return elementValue.id.split(SPLIT)[0];
			}
		}		
		else
		{
			return elementValue.id;
		}
	}
}

function MultipleSelectInCompare(value, tocomparevalue)
{
    var retval = false;
    var SPLITTER = ':';
    value = value.split(SPLITTER);
    tocomparevalue = tocomparevalue.split(SPLITTER);
    if(value.length <= tocomparevalue.length)
    {
        var i, j, myval;
        var found = true;
        for(i = 0; i < value.length; i++)
        {
            myval = value[i];
            if(found)
            {
                found = false;
                for(j = 0; j < tocomparevalue.length; j++)
                {
                    if(myval == tocomparevalue[j])
                    {
                        found = true;
                        break;
                    }
                }
            }
            else
            {
                break;
            }
        }
        retval = found;
    }     
    return retval;
}
// END TASKID : 46292
// END TASKID : 46292

function GetRealValueOfElement(elm, elmValue)
{
    var realValue;
    
    switch(elm.datatype)
    {
        case 'Currency': 
        case 'Float': 
        case 'Numeric': 
            if(elmValue.value.indexOf(":") < 0)
            {
   	            var decimalseparator = GetNumberDecimalSeperator();
                elmValue.value = elmValue.value.replace(decimalseparator, '.');
                elmValue.value = parseFloat(elmValue.value);
                realValue = elmValue;
                break;
            }
        default :
            realValue = elmValue;
            break;
    }

    var SPLIT = '~';
	if (!((realValue.id == '') || (realValue.id == null)))
	{
		if(realValue.currencyid == null)
		{
		    var MSSPLIT = '#';
            if(IsMultipleSelectElement(elm))
            {
	            realValue.value = realValue.id.split(MSSPLIT)[1];
	        }
	        else
	        {
			    realValue.value = realValue.id.split(SPLIT)[0];
			    if(realValue.value!= '' && realValue.value.indexOf(':') == -1)
		        {
		            if(IsNumeric(realValue.value))
                    {
                        realValue.value = parseInt(realValue.value);
                    }
		        }
		    }
		}
	}
	
    return realValue;
}


				


function ScreenPartReadOnly(screenpartObj, screenpartName, under, parentIsSubList) 
{
  var readonlyDiv = document.createElement('div');
  var divIdName = screenpartName + '_READONLY';
  screenpartObj.appendChild(readonlyDiv);
  PlaceObjAtParentPosition(screenpartObj,readonlyDiv, parentIsSubList); 
  readonlyDiv.style.zIndex = screenpartObj.style.zIndex + 2;     
  readonlyDiv.setAttribute('id',divIdName);
  readonlyDiv.className = 'readonly';

  /* iframe for combos */
  var  ifrm = document.createElement("IFRAME");
  ifrm.setAttribute("src", "");
  readonlyDiv.appendChild(ifrm);
  ifrm.style.zIndex = readonlyDiv.style.zIndex + 1; 
  PlaceObjAtParentPosition(readonlyDiv, ifrm, parentIsSubList);
}


function PlaceObjAtParentPosition(parentObj, objToPlace, parentIsSubList)
{
    var styleLeft = getPositionX( parentObj ) ;
    var styleTop = getPositionY(parentObj );
    if(parentIsSubList != null)
    {
        if(parentIsSubList)
        {
            styleLeft = 0;
            styleTop = 0;
        }
    }
    with ( objToPlace.style )
    {     
        left   = styleLeft;
        top    = styleTop;
        width = parentObj.offsetWidth ;
        height = parentObj.offsetHeight;
    }     
}   

function ScreenpartEnabled(screenpartObj, screenpartName)
{
	var divIdName = screenpartName + '_READONLY';
	divObjReadOnly = document.getElementById(divIdName);
	if(divObjReadOnly!= null)
		{screenpartObj.removeChild(divObjReadOnly);}
}

var sp_ajax = null;

function LoadScreenPart(xmlFilename, screenpartName, element, linkNode )
{

	if ( null != sp_ajax )
		return;

	var PREFIXSCREENPARTNAME = "ScreenPart_";
	var SCPARTFILEPREFIX = "X_SCPARTXMLFILENAME";
	
	var divObj = document.getElementById(PREFIXSCREENPARTNAME + screenpartName);
	
	if(screenpartName!= "")
	{
		if( xmlFilename != "")
		{
			var hiddenObj = $(screenpartName + SCPARTFILEPREFIX);
			if(hiddenObj != null)
			{
			    if(divObj.innerHTML == '' || divObj.innerHTML == null)
			    {
				    var submitterScreenPart = $( "X_SUBMITTERSCREENPART" );
				    if ( submitterScreenPart )
				    submitterScreenPart.value = screenpartName;
    			    
				    var formData  = Tigris.Ajax.LoadFormData();
					    formData += Tigris.Ajax.FormatField( { id: "__SUBMITTER" }, '');

				    if ( !submitterScreenPart )
					    formData += Tigris.Ajax.FormatField( { id: "X_SUBMITTERSCREENPART" }, screenpartName);
    			    
				    sp_ajax = new Tigris.Ajax.AjaxClient( "AjaxFunctions.aspx" );
				    sp_ajax.AddUrlParameter( "Function",   "GetScreenPart" );
				    sp_ajax.AddUrlParameter( "ScreenPartFileName", xmlFilename);
				    sp_ajax.AddUrlParameter( "ScreenPart", screenpartName );
				    sp_ajax.AddUrlParameter( "ScreenFileName", $("X_SCREENXMLFILENAME").value );
				    var linkNodeXML = '';
				    if(linkNode!= null)
				    {
					    linkNodeXML = linkNode.xml;
				    }
				    sp_ajax.AddUrlParameter( "Link", linkNodeXML);
				    sp_ajax.SetAction( Tigris.Ajax.ActionType.POST );
    				
				    sp_ajax.divObj = divObj;
				    hiddenObj.value = xmlFilename;
				    sp_ajax.hiddenElement = hiddenObj;
				    sp_ajax.formData = formData;
				    sp_ajax.scpartName = xmlFilename;
				    sp_ajax.screenpartName = screenpartName;
    				
				    showThrobber(null,'images/clockThrobber-trans.gif');
				    window.setTimeout( DeferredLoadScreenPart, 100 );			
			    }
			}
		}
		else
		{
			divObj.innerHTML = '';
		}
	}
}

function SetFilterValueFromListElement(filter, filterScreenPartName, filterValueElementName, pageIndex, uniqueIdValue)
{
    var SEPERATOR = "_";
    var valueObject = $(filterScreenPartName + SEPERATOR + filterValueElementName + pageIndex + SEPERATOR + uniqueIdValue)
    if(valueObject.tagName == "INPUT")
    {
        if(valueObject.elementType != null)
        {
            switch(valueObject.elementType)
            {
                
                case "Search":
                    filter.setAttribute("Value",valueObject.value);
                    break;
                case "CheckBox":
                    if(valueObject.checked)
                        filter.setAttribute("Value","1");
                    else
                        filter.setAttribute("Value","0");
                    break;
//                case "Currency":
//                case "Numeric":
//                case "DateTime":
                default:
                    filter.setAttribute("Value",GetElementValue(valueObject).value);
                    break;
            }
        }
    }
    else if(valueObject.tagName == "SPAN")
    {
        valueObject = $(valueObject.id + "_HIDDEN");
        var filerValue = GetElementValue(valueObject).value.split("~");
        if(filerValue.length > 1)
        {
            filter.setAttribute("Value",filerValue[1]);                                        
        }
        else
        {
            filter.setAttribute("Value",filerValue[0]);                                        
        }
    }
    filter.setAttribute("Source","Constant");
}
function DeferredLoadScreenPart()
{
	sp_ajax.Send( sp_ajax.formData );

	if ( sp_ajax.IsSuccess())
	{
		try
		{
			var xmlDoc = sp_ajax.GetXmlDoc();
			var htmlScreenPart = xmlDoc.selectSingleNode( "/Result" ).text;
			
			sp_ajax.divObj.innerHTML = htmlScreenPart;
			
			if(sp_ajax.hiddenElement != null)
			{
				sp_ajax.hiddenElement.value = sp_ajax.scpartName;
			}
		}
		catch ( err )
		{}
		AttachModifierEvents(sp_ajax.screenpartName);
	}
	else if(sp_ajax.m_objXML.responseText.indexOf("lblSessionTimeOut") > 0){
        alert(msg[MSG_HTTPPOSTERROR]);
    }
	hideThrobber();
	sp_ajax = null;
}


function GetModifierElement( raiseElement )
{
	var element = raiseElement || event.srcElement;
	var DEC = "_DEC";
	var CURID = "_CURID";
	var idValue = element.id;
	
	if(endsWith(idValue, DEC) || endsWith(idValue, CURID))
	{
		idValue = idValue.replace(DEC, "");
		idValue = idValue.replace(CURID, "");
		var testElement = $(idValue);
		if(testElement.currencyinputtype != null)
		{
			element = testElement;
		}
	}
	
	return element;
}


function MultiLingual(xmlNode)
{
	var values = new Array();
	var LANG_TR = 'TR';
	var LANG_ENG = 'EN';
	var LANG_DE = 'DE';				
	var ATTR_XMLLANG = 'lang';
	var ATTR_TEXT = 'text';
	if (xmlNode == null)
		values = null;
	else
	{
		var nodes = xmlNode.childNodes;
		var i, nextNode;
		for (i = 0; i < nodes.length; i++)
		{
			nextNode = nodes.nextNode;
			values[nextNode.getAttribute(ATTR_XMLLANG)] = nextNode.getAttribute(ATTR_TEXT);
		}
	}
	return values;	 
}

function ElementModifiers( xmlIsland )
{
	if (xmlIsland == null)
	{
		return null;
	}
	else
	{
		var ELEMENTTAG_ELEMENTMODIFIERS = 'ElementModifiers/ElementModifier';
		var elementModifiers = new Array();
		var nodes = xmlIsland.XMLDocument.selectNodes( ELEMENTTAG_ELEMENTMODIFIERS );
		for ( i = 0; i < nodes.length; i++ )
			elementModifiers[ i ] = new Tigris.Forms.ElementModifier( nodes.nextNode );
		return elementModifiers;
	}
}

/*
************************************************************************************************
****************************************  C H E C K B O X  *************************************
************************************************************************************************
*/

function checkboxReadOnly()
{
	if(event !=null)
	{
	    if (event.srcElement.readOnly != null)
		    if (event.srcElement.readOnly)
			    event.returnValue = false;
	}
}

function value_checkbox(element)
{
	var getvalue = element.checked ?  1 : 0;
	return controlValue('', getvalue);
}

function value_checkboxradio(element)
{
	var getvalue = '';
	var elementsRadio = element.form.elements(element.id);
	for (i = 0; i < elementsRadio.length; i++)
		if (elementsRadio(i).checked)
		{
			getvalue = elementsRadio(i).value;
			break;
		}
	return controlValue('', getvalue);	
}

function set_checkbox(element, setvalue)
{
	if (setvalue.value != null)
	{
		element.checked = (setvalue.value == '1') || (setvalue.value.toString().toUpperCase() == true.toString().toUpperCase());
		var caption = element.checked ? element.captiontrue : element.captionfalse ;
		if (setvalue.value == '')
			caption = '';
		set_elementlabel(element, controlValue('', caption));
	}
}

function set_checkboxradio(element, setvalue)
{
	if (setvalue.value == null)
		setvalue.value = '';	
	var elementsRadio = element.form.elements(element.id);	
	for (i = 0; i < elementsRadio.length; i++)
	{	
	    elementsRadio(i).checked = false;		
		if (elementsRadio(i).value == setvalue.value)
		{
			elementsRadio(i).checked = true;
		}
		elementsRadio(i).checkeditem = elementsRadio(i).checked ? "1": "0";
	}
}

function reset_checkbox(element)
{
	element.checked = false;
	reset_elementlabel(element);
}

function reset_checkboxradio(element)
{
	var elementsRadio = element.form.elements(element.id);
	for (i = 0; i < elementsRadio.length; i++)
		elementsRadio.checked = false;
}

function setvalue_checkbox(elementDest,elementSource)
{	
	elementDest.checked = elementSource.checked;
}

function setvalue_checkboxradio( elementDest, elementSource )
{
	elementDest.checked = elementSource.checked;
	elementDest.checkeditem = elementDest.checked ? "1": "0";
}

function validate_checkbox(elmCheck)
{
	try
	{
		var hasError = false;
		var caption = elmCheck.caption;
		var MINVALUE = "1", MAXVALUE = "0";
		//min value (should be checked)
		if (!hasError)
			if (elmCheck.minvalue != null)
			{	
				if (!elmCheck.checked && (elmCheck.minvalue == MINVALUE))
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_CHECKBOX_SELECTED]);
				}
			}

		//max value (should be unchecked)
		if (!hasError)
			if (elmCheck.maxvalue != null)
			{	
				if (elmCheck.checked && (elmCheck.maxvalue == MAXVALUE))
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_CHECKBOX_UNSELECTED]);
				}
			}
			
		if (hasError)
		{
			TryFocus(elmCheck);
		}
			
	}
	finally
	{
		return (!hasError);
	}
}

function validate_checkboxradio(elmCheckRadio)
{
	try
	{
		var hasError = false;
		var caption = elmCheckRadio.caption;

		if (!hasError)
			if (CheckRequired(elmCheckRadio))
			{	
				var check = false;
				var elementsRadio = elmCheckRadio.form.elements(elmCheckRadio.id);
				for (i = 0; i < elementsRadio.length; i++)
					if (elementsRadio[i].checked)
					{
						check = true;
						break;
					}			
				if (!check)
				{	
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_REQUIRED]);
				}
			}
		
		if (hasError)
			TryFocus(elmCheckRadio);
	}
	finally
	{
		return (!hasError);
	}
}

function enable_checkbox(element, value)
{
	element.readOnly = (value == "0");
}

function visible_checkboxradio(element, value)
{
    value = value == "1" ? true : false;

	var LEGEND = '_LEGEND';
	var elementsRadio = element.form.elements(element.id);
	var legends = document.all(element.id + LEGEND);
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
	for (var i = 0; i < elementsRadio.length; i++)
	{
		visible_element(elementsRadio(i), value);
		visible_element(legends(i), value);
	}
	visible_element(gettooltipElement(element), value);
	visible_element(getcaptionElement(element), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious );
	visible_element(getretainValueElement(element), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value);
	}
}

function enable_checkboxradio(element, value)
{
	element.enabled = value;
}

/*
************************************************************************************************
****************************************  T E X T B O X  ***************************************
************************************************************************************************
Revised By: MuratO; Nov 29, 2004
*/

/*
	Validate Text elements
	elmText: form Text element
	return true on succesful validation, false for unsuccessful validation
*/

function visible_element(element, value)
{
    if(value == "1") value = true;
    if(value == "0") value = false;
    
	if ((element != null) && (value != null))
	{
		if (value == true)
		{
			element.style.display = 'inline';
			element.style.visibility = 'inherit';
		}
		else
		{
			element.style.display = 'none';
			element.style.visibility = 'hidden';
		}
	}
}

function required_caption(elementCaption, value)
{
	if (elementCaption != null)
	{
		var CLASSCAPTION_REQUIRED = "captionreq";
		var CLASSCAPTION_NORMAL = "caption";
		elementCaption.className = (value == "1" ? CLASSCAPTION_REQUIRED : CLASSCAPTION_NORMAL);
	}
}

function required_requiredsymbol(elementRequiredSymbol, value)
{
	if (elementRequiredSymbol != null)
	{		
		var CLASSREQUIREDSYMBOL_VISIBLE = "requiredsymbolvisible";
		var CLASSREQUIREDSYMBOL_NOTVISIBLE = "requiredsymbolnotvisible";
		elementRequiredSymbol.className = (value == "1" ? CLASSREQUIREDSYMBOL_VISIBLE : CLASSREQUIREDSYMBOL_NOTVISIBLE);
		
		if(value == "0")
		{
			elementRequiredSymbol.style.display = "none";
		}
	}
}

function getretainValueElement(element)
{
	var CHECKBOX = '_CHECKBOX';
	var returnElement = document.getElementById(element.id + CHECKBOX);
	if (returnElement != null)
		if ((returnElement.keepwithprevious != null) || (returnElement.IsRetainValueForce != null))
			returnElement = null;
	return returnElement;
}

function getlabelElement(element)
{
	var LABELID_SUFFIX = '_LABELID';
	return document.getElementById(element.id + LABELID_SUFFIX);
}

function getcaptionElement(element)
{
	var CAPTION = "_CAPTION";
	return document.getElementById(element.id + CAPTION);
}

function getpostcaptionElement(element)
{
	var POSTCAPTION = "_POSTCAPTION";
	return document.getElementById(element.id + POSTCAPTION);
}

function gettooltipElement(element)
{
	var TOOLTIP = "_TOOLTIP";
	return document.getElementById(element.id + TOOLTIP);
}

function getRequiredSymbolElement(element)
{
	var REQUIREDSYMBOL = "_REQUIREDSYMBOL";
	return document.getElementById(element.id + REQUIREDSYMBOL);
}

function getLanguageSelectionElement(element)
{	
	var LANGSELECTBUTTON = "_LANGSELECTBUTTON";
	return document.getElementById(element.id + LANGSELECTBUTTON);
}

// for multilingual texts, it clears the contents
// of all controls for all languages
function ClearAllElements(language, elementName, alllanguages)
{
	var SEP = "_";
	var PAGENUMBER = "PAGENUMBER";
	var spName = elementName.split(SEP)[0];
	var isList = false;
	var index = "0";
	var pageNumber = "0";
	var pageNumberElement = document.getElementById(spName + SEP + PAGENUMBER);
	if(pageNumberElement != null)
	{
		isList = true;
		pageNumber = pageNumberElement.value;
		index = elementName.split(SEP)[3];
	}
	var langsuffix = SEP + language;
	var suffixLength = langsuffix.length;
	var originalName = elementName.substring(0, elementName.length - suffixLength);	
	if(isList)	
	{
		originalName = spName + SEP + elementName.split(SEP)[1];
	}
	
	var languages = alllanguages.split(',');
	var i = 0;
	var elementid;
	var element;

	for(i = 0; i < languages.length; i++)
	{
		langsuffix = SEP + languages[i];
		if(isList)
		{
			elementid = originalName + SEP + languages[i] + pageNumber + SEP + index + SEP + languages[i];
		}
		else
		{
			// elementid = originalName + langsuffix + langsuffix;	
			elementid = originalName + langsuffix;	
		}	
		element = document.getElementById(elementid);
		element.value = '';
	}
	
	RemoveMultilingualMenu();
	YAHOO.util.Event.preventDefault(event);
}

// for multilingual texts, it copies the contents of the selected control
// to the controls of all languages
function CopyToAllElements(language, elementName, alllanguages)
{
     var SEP = "_";
     var PAGENUMBER = "PAGENUMBER";
     var spName = elementName.split(SEP)[0];
     var isList = false;
     var index = "0";
     var pageNumber = "0";
     var pageNumberElement = document.getElementById(spName + SEP + PAGENUMBER);
     if(pageNumberElement != null)
     {
          isList = true;
          pageNumber = pageNumberElement.value;
          index = elementName.split(SEP)[3];
     }

     var langsuffix = SEP + language;     
     var suffixLength = langsuffix.length;
     var originalName = elementName.substring(0, elementName.length - suffixLength);  
     if(isList) 
     {
          originalName = spName + SEP + elementName.split(SEP)[1];
     }
     // elementName = elementName + langsuffix;     

     if(isList)
     {
         elementName = elementName + langsuffix;
         elementid = originalName + SEP + language + pageNumber + SEP + index + SEP + language;
     }
   
     var thiselement = document.getElementById(elementName);  
     var languages = alllanguages.split(',');
     var i = 0;
     var elementid;
     var element;
     
     for(i = 0; i < languages.length; i++)
     {
          langsuffix = SEP + languages[i];
          if(isList)
          {
                elementid = originalName + SEP + languages[i] + pageNumber + SEP + index + SEP + languages[i];
          }
          else
          {
                // elementid = originalName + langsuffix + langsuffix;         
                elementid = originalName + langsuffix;         
          }
          element = document.getElementById(elementid);
          
          if(element.disableTogglingMenu =="1" && element.autoCopy =="1")
          {
                element.value = thiselement.value;
          }
          else
          {
                if(element.value == '')
                {
                     element.value = thiselement.value;
                }
          }
     }
     if(element.autoCopy !=="1")
     {
         RemoveMultilingualMenu();
     }
     YAHOO.util.Event.preventDefault(event);
}

// sets the selected language's element visible and the others hidden
function setVisible(contextlanguage, language, elementName, otherlanguages)
{
	
	var SEP = "_";
	var PAGENUMBER = "PAGENUMBER";
	var spName = elementName.split(SEP)[0];
	var isList = false;
	var index = "0";
	var pageNumber = "0";
	var pageNumberElement = document.getElementById(spName + SEP + PAGENUMBER);
	if(pageNumberElement != null)
	{
		isList = true;
		pageNumber = pageNumberElement.value;
		index = elementName.split(SEP)[3];
	}
	var CAPTION = "_CAPTION";
	var ORIGINALCAPTION = "_ORIGINALCAPTION";
	var langsuffix = SEP + language;
	var suffixLength = langsuffix.length;
	var originalName = elementName.substring(0, elementName.length - suffixLength);
	if(isList)	
	{
		originalName = spName + SEP + elementName.split(SEP)[1];
	}
	// var elementid = originalName + langsuffix + langsuffix;	
	var elementid = originalName + langsuffix;	
	if(isList)
	{
		elementid = originalName + SEP + language + pageNumber + SEP + index + SEP + language;
	}
	
	var element = document.getElementById(elementid);
	// var contextcaptionname = originalName + SEP + contextlanguage + SEP + contextlanguage + CAPTION;	
	var contextcaptionname = originalName + SEP + contextlanguage + CAPTION;	
	var contextcaption = document.getElementById(contextcaptionname);
	// var originalcaptionelementname = originalName + SEP + contextlanguage + SEP + contextlanguage + ORIGINALCAPTION;
	var originalcaptionelementname = originalName + SEP + contextlanguage + ORIGINALCAPTION;
	var originalcaptionelement = document.getElementById(originalcaptionelementname);
		
	if(element != null)
	{				
		visible_languagetext(element, 1, contextcaption);
		var elementCaption = getcaptionElement(element);
		visible_element(elementCaption, 0);
		
		if(originalcaptionelement != null)
		{
			if(originalcaptionelement.value == '')
			{
				originalcaptionelement.value = contextcaption.innerText;
			}
		}		
		
		if(contextcaption != null)
		{
			if(language != contextlanguage)
			{
				contextcaption.innerText = elementCaption.innerText;
			}
			else
			{
				contextcaption.innerText = originalcaptionelement.value;
			}
		}
	}
	
	var languages = otherlanguages.split(',');
	var i = 0;
	
	for(i = 0; i < languages.length; i++)
	{
		if(isList)
		{
			elementid = originalName + SEP + languages[i] + pageNumber + SEP + index + SEP + languages[i];
		}
		else
		{		
			// elementid = originalName + SEP + languages[i] + SEP + languages[i];		
			elementid = originalName + SEP + languages[i];
		}
		element = document.getElementById(elementid);
		visible_languagetext(element, 0, contextcaption);
	}	
	
	RemoveMultilingualMenu();	
	YAHOO.util.Event.preventDefault(event);
}

function visible_languagetext(element, value, contextcaption, charleftelement)
{
    value = value == "1" ? true : false;

	var CHARLEFT = "_CHARLEFT";
	var charleftelementname = element.id + CHARLEFT;
	var charleftelement = document.getElementById(charleftelementname);

	visible_general(element, value);
	if (charleftelement != null)
		visible_general(charleftelement, value);
	visible_element(contextcaption, 1);
	visible_element(charleftelement, value);
	visible_element(gettooltipElement(element), 1);	
}

function required_general(element, value)
{
	element.required = value;	
	required_caption(getcaptionElement(element), value);
	required_requiredsymbol(getRequiredSymbolElement(element), value);
	var CONFIRM = '_CONFIRM';
    var elmConfirm = element.form.elements(element.id + CONFIRM)

    if (elmConfirm != null)
    {
        required_caption(getcaptionElement(elmConfirm), value);
        required_requiredsymbol(getRequiredSymbolElement(elmConfirm), value);
    }
}

function visible_general(element, value)
{
    value = value == "1" ? true : false;
    
	var label = getlabelElement(element);
	var keepWithPrevious = CheckKeepWithPrevious( element );
	if (label == null)
		visible_element(element, value);
	visible_element(getcaptionElement(element), value && !keepWithPrevious);
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious);
	visible_element(gettooltipElement(element), value);
	visible_element(getLanguageSelectionElement(element), value);
	visible_element(label, value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value);
	} 
}

function enable_general(element, value)
{
	if (element != null)
	{
		element.readOnly = value == '0';
		disableStyle(element);		
	}
}

/*
	return the value of EMail, Label, Load, Password, Search, Text, Textarea elements
*/
function value_general(element)
{
    if(element != null)
	    return controlValue('', element.value);
	else 
	    return null;
}

/*
	sets the value of EMail, Password, Text, Textarea elements
*/
function set_general(element, setvalue)
{
	if ((element != null) && (setvalue != null))
	{
		element.value = setvalue.value;
		set_elementlabel(element, setvalue);
	}
} 

/*
	used for setting element's labelmode display values
*/	
function set_elementlabel(element, setvalue)
{
	if ((element != null) && (setvalue != null))
	{
		var label = getlabelElement(element);
		if (label != null)
		{
			var setstring = setvalue.value;
			if (setstring == '')
				setstring = label.blank;
			label.innerHTML = setstring;
		}
	}
}

/*
	resets the value of EMail, Password, Text, Textarea elements
*/
function reset_general(element)
{
	if (element != null)
	{
		element.value = '';
		reset_elementlabel(element); 
	}
}

/*
	used for ressetting element's labelmode display 
*/
function reset_elementlabel(element)
{
	if (element != null)
	{
		var label = getlabelElement(element);
		if (label != null)
			label.innerHTML = label.blank;
	}
}


function setvalue_general(elementDest,elementSource)
{	
	elementDest.value = elementSource.value;
}

function validate_text(elmText)
{
	try
	{
		var hasError = false;
		var caption = elmText.caption;
		var value = rtrim(elmText.value);
		//Required
		if (!hasError)
			if (CheckRequired(elmText))
			{
			    var LANGSELECTBUTTON = "_LANGSELECTBUTTON";
			    var BUTTONID = elmText.id + LANGSELECTBUTTON;
			    var buttonElement = document.getElementById(BUTTONID);
			    var IsMultilingualText = false;
			    
			    if(buttonElement != null)
			    {
			        IsMultilingualText = true;
			    }
			    
				if (value == '')
				{
					hasError = true;
					if(IsMultilingualText)
					{
					    alert(caption  + ': ' + msg[MSG_REQUIRED_MULTILINGUAL]);
					}
					else
					{
 					    alert(caption  + ': ' + msg[MSG_REQUIRED]);
 					}
				}
			}
			
		//MinValue
		if (!hasError)
			if (elmText.minvalue != null)
				if (value < elmText.minvalue)
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MINVALUE] + ' (' + elmText.minvalue + ')');
				}
		
		//MaxValue
		if (!hasError)
			if (elmText.maxvalue != null)
				if (value > elmText.maxvalue)
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MAXVALUE] + ' (' + elmText.maxvalue + ')');
				}
		
		//MinLength
		if (!hasError)
			if (elmText.minlength != null)
				if (value.length < elmText.minlength)
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MINLENGTH] + ' (' + elmText.minlength + ')');
				}
		
		//MaxLength
		if (!hasError)
			if (elmText.maxlength != null)
				if (value.length > elmText.maxlength)
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MAXLENGTH] + ' (' + elmText.maxlength + ')');
				}

		if (hasError)
			TryFocus(elmText);
	}
	finally
	{
		return (!hasError);
	}
}

/*
************************************************************************************************
****************************************  T E X T A R E A **************************************
************************************************************************************************
Revised By: MuratO; Nov 29, 2004
*/

function validate_textarea(elmTextArea)
{
	try
	{
	    // RichText support.
	    if(elmTextArea.inputtype =='RichText')
	    {
            var oEditor = FCKeditorAPI.GetInstance(elmTextArea.id); 
            if (oEditor != null)
            {
                elmTextArea.value = oEditor.GetXHTML(oEditor.FormatOutput);          
            }
        } 
	}
	finally
	{
		return (validate_text(elmTextArea));
	}
}

function visible_textarea(element, value)
{
    value = value == "1" ? true : false;

	var CHARLEFT = '_CHARLEFT';
	var keepWithPrevious = CheckKeepWithPrevious( element );
	visible_general(element, value);
	visible_element(document.getElementById(element.id + CHARLEFT), value);
	visible_element(getcaptionElement(element), value && !keepWithPrevious);
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious);
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	visible_element(getlabelElement(element), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

function visible_richtext(element, value)
{
    value = value == "1" ? true : false;

    var richtextTable = element.parentElement;
    var keepWithPrevious = CheckKeepWithPrevious( element );
    
    visible_element(richtextTable, value);
    //visible_textarea(element, value);
	var CHARLEFT = '_CHARLEFT';
	//visible_general(element, value);
	visible_element(document.getElementById(element.id + CHARLEFT), value);
	visible_element(getcaptionElement(element), value && !keepWithPrevious);
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious);
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	visible_element(getlabelElement(element), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

/* 
	Limits a textarea lenght and displays the current length in a span (Element + CHARLEFT)
*/
function textarealan(Element, MaxLen) 
{
	var CHARLEFT = '_CHARLEFT';
	var DEFAULTMAXLENGTH = 8000; 
	MaxLen = (MaxLen <= 0 ? DEFAULTMAXLENGTH : MaxLen);
	var elementCHARLEFT = Element.parentElement.all(Element.name + CHARLEFT); 
	if (elementCHARLEFT == null)
	{
		elementCHARLEFT = document.createElement('span');
		elementCHARLEFT.id = Element.name + CHARLEFT;
		elementCHARLEFT.className = CHARLEFT;
		Element.parentElement.appendChild(elementCHARLEFT);
	}
	var StrLen = Element.value.length;
	if (StrLen > MaxLen)
	{
		Element.value = Element.value.substring(0, MaxLen);
		StrLen = MaxLen;
	}
	elementCHARLEFT.innerText = MaxLen - StrLen;
}

/*
************************************************************************************************
**************************************** RICH TEXT EDITOR **************************************
************************************************************************************************
*/

function ReplaceRichText()
{
    var TEXTAREATAG = "TEXTAREA";
    var elem = document.getElementsByTagName(TEXTAREATAG);
    for (var i = 0; i < elem.length; i++)
    {
        if (elem[i].inputtype != null)
        {
            if (elem[i].inputtype == 'RichText')
            {
                oFCKeditor = new FCKeditor(elem[i].id);
                oFCKeditor.BasePath = "FCKeditor/";
                oFCKeditor.Value = elem[i].value;
                oFCKeditor.ReplaceTextarea();
                elem[i].style.display = 'none';
            }            
        }
    }

}

/* 
	Limits a textarea[rich text editor] length and displays the current length in a span (Element + CHARLEFT)
*/
function textarealan_RichTextEditor(Element, MaxLen) 
{
	var CHARLEFT = '_CHARLEFT';
	var DEFAULTMAXLENGTH = 1024; 
	MaxLen = (MaxLen <= 0 ? DEFAULTMAXLENGTH : MaxLen);		
	var elementCHARLEFT = document.getElementById(Element.id + CHARLEFT); 
	if (elementCHARLEFT == null)
	{
		elementCHARLEFT = document.createElement('span');
		elementCHARLEFT.id = Element.name + CHARLEFT;
		elementCHARLEFT.className = CHARLEFT;
		Element.parentElement.appendChild(elementCHARLEFT);
	}
	var StrLen = Element.innerHTML.length;
	if (StrLen > MaxLen)
	{
		Element.innerHTML = Element.innerHTML.substring(0, MaxLen);
		StrLen = MaxLen;
	}
	elementCHARLEFT.innerText = MaxLen - StrLen;
}
/*
This function gets the innerHTML of a rich text editor and 
assigns this value to its corresponding hidden element
*/
function GetHtmlContent(Element)
{	
	var RICHEDITORHIDDEN = '_RICHEDITORHIDDEN';
	var hidden = document.getElementById(Element.id + RICHEDITORHIDDEN);
	hidden.value = Element.innerHTML;
}

/*
This function sets the contents of the hidden elements
to the value of inner htmls of the div elements[editors].
*/
function AssignHtmlContents()
{
    var RICHEDITORHIDDEN = '_RICHEDITORHIDDEN';
    var list = document.getElementsByTagName("DIV");
    if(list != null)
    {
        if(list.length > 0)
        {
            var i = 0;
            var hdnElement;
            for(i = 0; i < list.length; i++)
            {
                var div = list[i];
                hdnElement = document.getElementById(div.id + RICHEDITORHIDDEN);
                if(hdnElement != null)
                {
                    hdnElement.value = div.innerHTML;
                }
            }
        }
    }
    
    return true;
}

/*
************************************************************************************************
****************************************  C U R R E N C Y **************************************
************************************************************************************************
*/
var INPUTTYPE_MULTIPLE = 'Multiple';
var INPUTTYPE_SINGLE = 'Single';

function value_currency(elmCurrency)
{
	var SPLIT = '~';
   	var separator = GetCurrencyDigitSeperator();
	var elms = elmCurrency.form.elements;
	var CENT = "_DEC";
	var unformattedString;
   	var DECIMALSEPARATOR = GetCurrencyDecimalSeperator();
   	if (elmCurrency.currencyinputtype == INPUTTYPE_MULTIPLE)
   	{
		unformattedString = deleteseparator(elmCurrency.value, separator ) ;
		unformattedString += DECIMALSEPARATOR + elms(elmCurrency.id + CENT).value; 
	}
	else
	{
		unformattedString = deleteseparator(elmCurrency.value, separator);
	}
	var currencyId = '';
	var CURID = "_CURID";
	var elementCurId = elms(elmCurrency.id + CURID);
	if (elementCurId != null)
		if (elementCurId.selectedIndex >= 0)
			currencyId = elementCurId.options[elementCurId.selectedIndex].value;
	// return controlValue(currencyId + SPLIT + unformattedString, unformattedString);
    return CurrencycontrolValue(currencyId + SPLIT + unformattedString, unformattedString, currencyId);
}

// gets the id of a currency element and 
// returns the float value of it
// returns 0 when no value exists in the element
function GetCurrencyFloatValue(elementid)
{
	var retval = 0;
	var elmCurrency = document.getElementById(elementid);
	
	if(elmCurrency != null)
	{		
		var decimalSeperator = '.';
		var myVal = value_currency(elmCurrency).value;
		var curDecimalsep = GetCurrencyDecimalSeperator();
		myVal = myVal.replace(curDecimalsep, decimalSeperator);
		
		if(myVal == decimalSeperator)
		{
			retval = 0;
		}
		else
		{
			retval = parseFloat(myVal);
		}
	}
	
	return retval;
}

// sets the value of a curency element to the float value given
function SetCurrencyFloatValue(elementid, floatvalue, currencyid)
{
	var elmCurrency = document.getElementById(elementid);
	
	if(elmCurrency != null)
	{	
		var destId = value_currency(elmCurrency).id;
		if(currencyid != null)
		{
			var SPLIT = '~';	
			destId = currencyid + SPLIT;
		}
		var decimaldigitCount = parseInt(elmCurrency.decimaldigit);
		var strCurrency = floatvalue.toFixed(decimaldigitCount);
		
		var object = new Object();		
		object.value = strCurrency;
		object.id = destId;
		
		set_currency(elmCurrency, object);
	}
}

function set_currency(element, setvalue)
{
	if (setvalue != null)
	{
		var SPLIT = '~';
		var elms = element.form.elements;
		var CENT = "_DEC";
		var elementCent = elms(element.id + CENT);
		var currencyValue = setvalue.value;
		var labeltext = '';
		element.value = '';
		if (elementCent != null)
			elementCent.value = '';
		
		var sRegExp = eval('/,/g'); 
		currencyValue = currencyValue.replace(sRegExp,'.'); 
		
		// set the number part if the value is numeric (of course)
		if (!isNaN(parseFloat(currencyValue)))
		{
			currencyValue = parseFloat(currencyValue);			
			var integerpartAbs = Math.floor(Math.abs(currencyValue));			
			element.value = (currencyValue < 0 ? '-' : '') + integerpartAbs.toString();
			var decimalPart = Math.abs(currencyValue) - integerpartAbs;	
					
			decimalPart = Math.round(Math.pow(10, element.decimaldigit) * decimalPart);
			
			if(decimalPart.toString().length < element.decimaldigit)
			{
				decimalPart = rightstr('0' + decimalPart, element.decimaldigit);
			}
			
			var separator = GetCurrencyDecimalSeperator();
			if (element.currencyinputtype == INPUTTYPE_SINGLE)
			{
				if (decimalPart != '')
					element.value += separator + decimalPart;
				labeltext = element.value;
				formatCurrency(element, 12);
			}
			else
			{
				//var elementCent = elms(element.id + CENT);
				if (elementCent != null)
				{
					elementCent.value = decimalPart;
					labeltext = separator + decimalPart;
				}
				formatCurrency(element, 12);
				labeltext = element.value + labeltext;
			}
		}		
		
		var CURID = "_CURID";
		var elementCurId = elms(element.id + CURID);
		if (elementCurId != null)
		{			
			if (elementCurId.length > 0)
			{
				elementCurId.selectedIndex = 0;
			}
			var currencyId;
            if(setvalue.id.indexOf(SPLIT) > 0)
            {
                currencyId = setvalue.id.split(SPLIT)[1];
            }
            else
            {
              currencyId = setvalue.id;
            }
    
			if (currencyId != null)
			{
				for (i = 0; i < elementCurId.options.length; i++)
					if (elementCurId.options[i].value == currencyId)
					{
						elementCurId.selectedIndex = i;
						elementCurId.selectedvalue = elementCurId.options[i].value;
						labeltext += ' ' + elementCurId.options[i].text;
						break;
					}
				SetListHiddenValue(elementCurId);
			}			
		}
		set_elementlabel(element, controlValue('', labeltext));
	}
}

function reset_currency(element)
{
	var elms = element.form.elements;
	var CENT = "_DEC";
	var CURID = "_CURID";
	element.value = '';
	var elementCent = elms(element.id + CENT);
	if (elementCent != null)
		elementCent.value = '';
	var elementCurId = elms(element.id + CURID);
	if (elementCurId != null)
	{
		if (elementCurId.length > 0)
			elementCurId.selectedIndex = 0;
		elementCurId.selectedvalue = null;	
		SetListHiddenValue(elementCurId);
	}
	reset_elementlabel(element);
}

function setvalue_currency(elementDest, elementSource)
{
	var elms = elementDest.form.elements;
	var CENT = "_DEC";
    var CURID = "_CURID";
    var elementSourceCent = elms(elementSource.id + CENT);
    var elementDestCent = elms(elementDest.id + CENT);
	var separator = GetCurrencyDecimalSeperator();
    
    var integerPart;
    var decimalPart;
    if (elementSource.currencyinputtype == INPUTTYPE_SINGLE)
    {
		integerPart = elementSource.value.split(separator)[0];
		decimalPart = elementSource.value.split(separator)[1];
    }
    else
    {
		integerPart = elementSource.value;
		decimalPart = elementSourceCent.value;
    }
    
    if (elementDest.currencyinputtype == INPUTTYPE_MULTIPLE)
    {
		elementDest.value = integerPart;
		if (elementDestCent != null)
		{
			elementDestCent.value = decimalPart;
		}
    }
    else
    {   
        elementDest.value = integerPart;
        if (decimalPart != null)
		{
		    elementDest.value += separator + decimalPart;
		}		
    }
//	elementDest.value = elementSource.value;
//	if (elementSourceCent != null && elementDestCent != null)
//	{
//		elementDestCent.value = elementSourceCent.value;
//	}
	var elementSourceCur = elms(elementSource.id + CURID);
    var elementDestCur = elms(elementDest.id + CURID);
	if (elementDestCur != null && elementSourceCur != null)
	{
		elementDestCur.value = elementSourceCur.value;
		SetListHiddenValue(elementDestCur);
	}	
}

function visible_currency(element, value)
{
    value = value == "1" ? true : false;

	var CENT = '_DEC';
    var CURID = '_CURID';
    var COMMASUFFIX = '_COMMA';
    var elms = element.form.elements;
    var elmCent = elms(element.id + CENT);
    var elmComma = document.getElementById(element.id + COMMASUFFIX);
    var elmCurrencyId = elms(element.id + CURID);
    var elmLabel = getlabelElement(element);
    var keepWithPrevious = CheckKeepWithPrevious( element );
    
	visible_element(element, value);
	if (elmCent != null)
		visible_element(elmCent, value);
	if (elmLabel == null)
	{	
		visible_element(elmComma, value);
		visible_element(elmCurrencyId, value);
	}
	visible_element(getcaptionElement(element), value && !keepWithPrevious);
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious);
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	visible_element(elmLabel, value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

function enable_currencycombo(element, value)
{
    var CURID = '_CURID';
    var elms = element.form.elements;
    var elmCurrencyId = elms(element.id + CURID);
	if (elmCurrencyId != null)
	{
		elmCurrencyId.disabled = (value == "0");
	}
}

function enable_currency(element, value)
{
	var CENT = '_DEC';
    var elms = element.form.elements;
    var elmCent = elms(element.id + CENT);
	enable_general(element, value);
	if (elmCent != null)
		enable_general(elmCent, value);
	enable_currencycombo(element, value)
}


// puts sep value between 3 digits.
function putseparator(input, sep)
{
  if (! input)
    return '';

  var rxSep = eval( "/([" + sep + "])/" );
  var rxIsDigit = /([\d]+)/;
  var decSep = null;
  var decPart = '';
  var fixedPart = '';
  var pos = 0;
  var cleaned = input;

  while ( cleaned.indexOf( sep ) >= 0 )
    cleaned = cleaned.replace( sep, '' );

  for ( var nChar = 0; nChar < cleaned.length; nChar++ )
  {
    var ch = cleaned.charAt( nChar );
    if ( !rxIsDigit.test( ch )) // is non numeric?
    {
      decSep = ch;
      pos = nChar;
      break;
    }
  }

  if ( null !== decSep )
  {
    fixedPart = cleaned.substr( 0, pos );
    decPart   = cleaned.substr( pos );
  }
  else
  {
    fixedPart = cleaned;
  }

  var rxAtLeastFourDigits = /(\d+)(\d{3})/;
  
  sep = escapeChar( sep );
  
  while ( rxAtLeastFourDigits.test( fixedPart )) 
    fixedPart = eval( "fixedPart.replace( rxAtLeastFourDigits, '$1" + sep + "$2' );" );

  input = fixedPart;

  if ( null !== decSep )
    input += decPart;

  return input;
}


//cleans ' char from numeric values
function escapeCharFromObj(valueObjToClean)
{
	if(valueObjToClean!= null)
	{
		valueToClean.value = valueToClean.value.replace("'", "\\'");
	}
}  
//cleans ' char from numeric values
function escapeChar(valueToClean)
{
	return valueToClean.replace("'", "\\'");
}  
   
// removes sep values between 3 digits
function deleteseparator(input, sep) 
{
    var re = eval('/\\' + sep + '/g') ;
	return input.replace(re,'');      
}

//Returns number digit seperator for selected culture
function GetNumberDigitSeperator()
{
	var hdnNumberDigitSep = document.all['X_NUMBERDIGITSEP'];
	return hdnNumberDigitSep.value;
}
//Returns number decimal seperator for selected culture
function GetNumberDecimalSeperator()
{
	var hdnNumberDecimalSep = document.all['X_NUMBERDECIMALSEP'];
	return hdnNumberDecimalSep.value;
}
//Returns currency digit seperator for selected culture
function GetCurrencyDigitSeperator()
{
	var hdnCurrencyDigitSep = document.all['X_CURRDIGITSEP'];
	return hdnCurrencyDigitSep.value;
}
//Returns currency decimal seperator for selected culture
function GetCurrencyDecimalSeperator()
{
	var hdnCurrencyDecimalSep = document.all['X_CURRDECIMALSEP'];
	return hdnCurrencyDecimalSep.value;
}

//Returns number digit seperator for default culture
function GetDefaultNumberDigitSeperator()
{
	var hdnNumberDigitSep = document.all['X_DEFAULTNUMBERDIGITSEP'];
	return hdnNumberDigitSep.value;
}
//Returns number decimal seperator for default culture
function GetDefaultNumberDecimalSeperator()
{
	var hdnNumberDecimalSep = document.all['X_DEFAULTNUMBERDECIMALSEP'];
	return hdnNumberDecimalSep.value;
}
//Returns currency digit seperator for default culture
function GetDefaultCurrencyDigitSeperator()
{
	var hdnCurrencyDigitSep = document.all['X_DEFAULTCURRDIGITSEP'];
	return hdnCurrencyDigitSep.value;
}
//Returns currency decimal seperator for default culture
function GetDefaultCurrencyDecimalSeperator()
{
	var hdnCurrencyDecimalSep = document.all['X_DEFAULTCURRDECIMALSEP'];
	return hdnCurrencyDecimalSep.value;
}

//formats the numaric inputs
function formatNumericValue(inpNumeric)
{
	var separator = GetNumberDigitSeperator();
	var unformattedString = deleteseparator(inpNumeric, separator ) ;

	inpNumeric = putseparator( unformattedString, separator  );
	return inpNumeric;
}

//calculates ordinal value
//of a character
function my_ord(c) 
{ 
  var e = escape(c); 

  if (e == c) 
  { 
    return 0x30 + "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwx­yz{|}~".indexOf(c); 
  } 
  else 
  { 
    return parseInt(e.substring(1,3), 16); 
  } 
}


//checks if the inputvalue
//is numeric or not
function IsNumeric(inputValue)
{
	var retval = (inputValue.length > 0);
	var i;
	var len = inputValue.length;
	var ordvalue;
	var ordvalueSeperator;
	var seperator;
	
	seperator = GetCurrencyDigitSeperator();
	ordvalueSeperator = my_ord(seperator);
		
	for(i = 0; i < len; i++)
	{		
		ordvalue = my_ord(inputValue.charAt(i));
		
		if(!((ordvalue >= 47 && ordvalue <= 57)|| (ordvalue == ordvalueSeperator)))
		{
			retval = false;
			break;
		}		
	}
	return retval;
}


var defSet = null;

function CheckNumberNegativity(inpNumeric)
{
     var NEGATIVESIGN = "-";
     var negative = (inpNumeric.value.substring(0,1) == NEGATIVESIGN);
     var sRegExp = eval('/-/g'); 
     
     var v = inpNumeric.value.replace(sRegExp,'');
    
     var setTo = null;
     
     if ( v != inpNumeric.value )
        setTo = v;
     if (negative)
        setTo = NEGATIVESIGN + inpNumeric.value;

    if ( setTo !== null )
    {
        defSet = { "target": inpNumeric, "value": setTo };
        window.setTimeout( "DeferredSetValue();", 1 );
    }
}

function DeferredSetValue()
{
    if ( defSet !== null )
        if ( defSet.target )
            defSet.target.value = defSet.value;
    defSet = null;
}

function formatNumeric(inpNumeric)
{
	var e = event;
	if (e != null)		
	{
		if(e.keyCode == 38)
	    {
	        var upper = document.getElementById(event.srcElement.upperelement);
	        if(upper != null)
	        {
	            upper.focus();
	        }
	        return;
	    }
	    else if(e.keyCode == 40)
	    {
	        var lower = document.getElementById(event.srcElement.lowerelement);
	        if(lower != null)
	        {
	            lower.focus();
	        }
	        return;
	    }		
		else if((e.keyCode == 37) || (e.keyCode == 39))
		{
			return;
		}
		if(e.keyCode != 9 && event.srcElement != null)
		{
		    if (event.srcElement.isDirty != 1)
    	        event.srcElement.isDirty = 1;					
    	}
	}
	
	var NEGATIVESIGN = "-";
	var negative = (inpNumeric.value.substring(0,1) == NEGATIVESIGN);
	var sRegExp = eval('/-/g'); 
	inpNumeric.value = inpNumeric.value.replace(sRegExp,'');
		
	var inputValue = inpNumeric.value;
	var integerPart = inpNumeric.value;
	var decimalPart;
	var numericInputType = inpNumeric.numericinputtype;
	var digitsep = GetNumberDigitSeperator();
	var decimalsep = GetNumberDecimalSeperator();
	var integerPartSingle = deleteseparator(inpNumeric.value, digitsep);
	var separatorPosition = integerPartSingle.indexOf(decimalsep) + 1;
	var integerPart = deleteseparator(integerPartSingle, decimalsep);
	
	if (IsNumeric(integerPart))
	{
		// read value
		
		if (numericInputType == INPUTTYPE_SINGLE)
		{
			// if NumericInputType == Single, read decimal part
			var decimalDigits = inpNumeric.decimaldigits;
			if (separatorPosition > 0)
			{
				decimalPart = integerPartSingle.substr(separatorPosition, integerPartSingle.length - separatorPosition);
				integerPart = integerPartSingle.substr(0, separatorPosition - 1);
				decimalPart = deleteseparator(decimalPart, decimalsep);
				decimalPart = deleteseparator(decimalPart, digitsep);
				if (decimalPart.length > decimalDigits)
					decimalPart = decimalPart.substr(0, decimalDigits);
			}
			else
			{
				//decimalPart = integerPart;
				//integerPart = "";
				decimalPart = "";
			}
		}

		if (isNaN( parseInt(integerPart)) && isNaN( parseInt(decimalPart, decimalDigits + 1))) // if numeric
		{ 
			inpNumeric.value = "";
			inpNumeric.focus();
			return;
		}
		
		integerPart = putseparator( integerPart, digitsep );	
		inpNumeric.value = integerPart;
		if (numericInputType == INPUTTYPE_SINGLE)
		{
			if (separatorPosition > 0)
				inpNumeric.value = inpNumeric.value + decimalsep + decimalPart;
		}
		if (negative)
			inpNumeric.value = NEGATIVESIGN + inpNumeric.value;
		
		if (e != null)
		{
			if(e.keyCode == 9)
			{
				inpNumeric.select();
			}
		}
	}
	else
	{
		inpNumeric.value = (negative ? NEGATIVESIGN : "");
	}
}
   
// formats the currency
function formatCurrency(inpCurrency, maxdigit) 
{	
	var e = event;
	if (e != null)		
	{
		if(e.keyCode == 38)
	    {
	        var upper = document.getElementById(event.srcElement.upperelement);
	        if(upper != null)
	        {
	            upper.focus();
	        }
	        return;
	    }
	    else if(e.keyCode == 40)
	    {
	        var lower = document.getElementById(event.srcElement.lowerelement);
	        if(lower != null)
	        {
	            lower.focus();
	        }
	        return;
	    }
		else if((e.keyCode == 37) || (e.keyCode == 39))
		{
			return;
		}
		if(e.keyCode != 9 && event.srcElement != null)
		{
		    if (event.srcElement.isDirty != 1)
    	        event.srcElement.isDirty = 1;					
    	}
	}
	
	var inputValue = inpCurrency.value;
	var integerPart = inpCurrency.value;
	var decimalPart;
	var currencyInputType = inpCurrency.currencyinputtype;
	var digitsep = GetCurrencyDigitSeperator();
	var decimalsep = GetCurrencyDecimalSeperator();
	var integerPartSingle = deleteseparator(inpCurrency.value, digitsep);
	var separatorPosition = integerPartSingle.indexOf(decimalsep) + 1;
	var integerPart = deleteseparator(integerPartSingle, decimalsep);
	
	var sRegExp = eval('/-/g'); 
	integerPart = integerPart.replace(sRegExp,'');	
	
	if (IsNumeric(integerPart))
	{
		// read value
		
		if (currencyInputType == INPUTTYPE_SINGLE)
		{
			// if CurrencyInputType == Single, read decimal part
			var decimalDigits = inpCurrency.decimaldigit;
			if (separatorPosition > 0)
			{
				decimalPart = integerPartSingle.substr(separatorPosition, integerPartSingle.length - separatorPosition);
				integerPart = integerPartSingle.substr(0, separatorPosition - 1);
				decimalPart = decimalPart.replace(sRegExp,'');
				decimalPart = deleteseparator(decimalPart, decimalsep);
				decimalPart = deleteseparator(decimalPart, digitsep);
				if (decimalPart.length > decimalDigits)
					decimalPart = decimalPart.substr(0, decimalDigits);
			}
			else
			{
				//decimalPart = integerPart;
				//integerPart = "";
				decimalPart = "";
			}
		}
		
		// format integer part
		if ( integerPart.length > maxdigit ) 
		{
			integerPart = integerPart.substring(0, maxdigit); // at most maxdigits
		}
		if (isNaN( parseInt(integerPart, maxdigit + 1)) && isNaN( parseInt(decimalPart, decimalDigits + 1))) // if numeric
		//{  
			//unformattedString = parseInt(unformattedString, maxdigit + 1).toString() ; // first zeros
		//} 
		//else //not numeric entry
		{
			inpCurrency.value = "";
			inpCurrency.focus();
			return;
		}

		integerPart = putseparator( integerPart, digitsep );	
		inpCurrency.value = integerPart;
		if (currencyInputType == INPUTTYPE_SINGLE)
		{
			if (separatorPosition > 0)
				inpCurrency.value = inpCurrency.value + decimalsep + decimalPart;
		}
		
		if (e != null)
		{
			if(e.keyCode == 9)
			{
				inpCurrency.select();
			}
		}
	}
	else
	{
		inpCurrency.value = "";
	}
}

function SelectListRowOnBlur(inpObject,screenpartname, selectablecolumnname, pagenumber, index)
{
    if(inpObject.isDirty != null)
    {
        if(inpObject.isDirty == 1)
        {
            SelectListRow(screenpartname, selectablecolumnname, pagenumber, index);
        }
        inpObject.isDirty = 0;
    }
}

function formatDecimal(inpDecimal) 
{
   	var temp='', i;
	
   	for(i = 0; i < inpDecimal.value.length; i++)
   	{
   		if (inpDecimal.value.charAt(i) < '0' || inpDecimal.value.charAt(i)>'9') 
   			break;
   		temp += inpDecimal.value.charAt(i);
   	}
   	inpDecimal.value=temp;
}   

function validate_currency(elmCurrency)
{
	try
	{
		var CENT = "_DEC";
		var CURID = "_CURID"
		var hasError = false;
		var alreadyfocused = false;
		var caption = elmCurrency.caption;
   		var separator = GetCurrencyDigitSeperator();
        var defaultDecimalSeparator = GetDefaultCurrencyDecimalSeperator();
		var unformattedString = deleteseparator(elmCurrency.value, separator ) ;
		var currencyInputType = elmCurrency.currencyinputtype;
		var valueEntered = false;
		
		if (currencyInputType != INPUTTYPE_SINGLE)
		{
			unformattedString += separator +  elmCurrency.form.elements(elmCurrency.id + CENT).value; 
			valueEntered = (separator != unformattedString);
		}
		else
		{
			valueEntered = unformattedString != "";
		}				
		
		var numvalue;

		if (!hasError)
			if ((unformattedString != "") && (separator != unformattedString) && isNaN(parseFloat(unformattedString)))
			{
				hasError = true;
				alert(caption + ': ' + msg[MSG_NAN]);
			}
		
		//Required
		if (!hasError)
			if (CheckRequired(elmCurrency))
			{				
				if ((unformattedString == separator) || (unformattedString == ""))
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_REQUIRED]);
				}
			}
				
		if (!hasError)
			numvalue = parseFloat(unformattedString);
			
		//MinValue
		if (!hasError)
			if (elmCurrency.minvalue != null)
				if (numvalue < parseFloat(elmCurrency.minvalue))
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MINVALUE] + ' (' + elmCurrency.minvalue + ')');
				}
		
		//MaxValue
		if (!hasError)
			if (elmCurrency.maxvalue != null)
				if (numvalue > parseFloat(elmCurrency.maxvalue))
				{ 
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MAXVALUE] + ' (' + elmCurrency.maxvalue + ')');
				}

		// CurrencyId is alo required if a number is entered
		if ((!hasError) && valueEntered)
		{
		    if(elmCurrency.labelmode == "0")
		    {
			    var elmCurrencyId = elmCurrency.form.elements(elmCurrency.id + CURID);
			    if (elmCurrencyId != null)
			    {
				    if (elmCurrencyId.value == "0")
				    {
					    hasError = true;
	 				    alert(caption  + ': ' + msg[MSG_CURRENCYUNSELECTED]);
	 				    alreadyfocused = TryFocus(elmCurrencyId);
				    }
			    }
	        }
		}
		
		if ((hasError) && (!alreadyfocused))
			TryFocus(elmCurrency);
	}
	finally
	{
		return (!hasError);
	}

}

// return true for numeric keyboard inputs, used for numeric entry fields
function numberonly()
{	
	return ((event.keyCode >= 48 && event.keyCode <= 57)|| (event.keyCode == 45));
}

// return true for numeric keyboard inputs, used for phone entry fields
function Phonenumberonly()
{	
	return ((event.keyCode >= 48 && event.keyCode <= 57));
}

// return true for numeric keyboard inputs, used for numeric entry fields
function numberonlyforsingleinput()
{
	var separator = GetNumberDecimalSeperator();
	return ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode == 45) || (event.keyCode == separator.charCodeAt(0)));
}

// return true for numeric keyboard inputs, used for numeric entry fields
function currencyonlyforsingleinput()
{
	var separator = GetCurrencyDecimalSeperator();
	return ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode == 45) || (event.keyCode == separator.charCodeAt(0)));
}

// return true for alphanumeric keyboard inputs, used for alphanumeric entry fields
function AlphaNumericOnly()
{
	return (event.keyCode < 48 && event.keyCode > 57); 
}

/*
************************************************************************************************
****************************************  P A S S W O R D **************************************
************************************************************************************************
*/

function set_password(element, setvalue)
{
	var CONFIRM = '_CONFIRM';
	var elmConfirm = element.form.elements(element.id + CONFIRM)
	set_general(element, setvalue);
	set_general(elmConfirm, setvalue);
}

function reset_password(element)
{
	var CONFIRM = '_CONFIRM';
	var elmConfirm = element.form.elements(element.id + CONFIRM)
	reset_general(element);
	reset_general(elmConfirm);
}

function visible_password(element, value)
{
     value = value == "1" ? true : false;

     var CONFIRM = '_CONFIRM';
     var elmConfirm = element.form.elements(element.id + CONFIRM);
     var keepWithPrevious = CheckKeepWithPrevious( element );
     
     visible_element(element, value);
     visible_element(elmConfirm, value);
     visible_element(getcaptionElement(element), value && !keepWithPrevious );
     visible_element(getcaptionElement(elmConfirm), value && !keepWithPrevious );
     visible_element(getpostcaptionElement(element), value);
     visible_element(gettooltipElement(element), value);
     visible_element(getretainValueElement(element), value);
     if(CheckRequired(element))
     {
          visible_element(getRequiredSymbolElement(element), value); 
     }
}

function enable_password(element, value)
{
	var CONFIRM = '_CONFIRM';
	var elmConfirm = element.form.elements(element.id + CONFIRM)
	enable_general(element, value);
	enable_general(elmConfirm, value);
}

function validate_password(elmPassword)
{
	try
	{
		var CONFIRM = '_CONFIRM';
		var hasError = false;
		var caption = elmPassword.caption;
		var value = rtrim(elmPassword.value);
		var value_confirm = value;
		
		if (elmPassword.confirm != null)
			value_confirm = rtrim(elmPassword.form.elements(elmPassword.id + CONFIRM).value);

		//Required
		if (!hasError)
			if (CheckRequired(elmPassword))
				if (value == '')
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_REQUIRED]);
				}
			
		//MinValue
		if (!hasError)
			if (elmPassword.minvalue != null)
				if (value < elmPassword.minvalue)
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MINVALUE] + ' (' + elmPassword.minvalue + ')');
				}
		
		//MaxValue
		if (!hasError)
			if (elmPassword.maxvalue != null)
				if (value > elmPassword.maxvalue)
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MAXVALUE] + ' (' + elmPassword.maxvalue + ')');
				}
		
		//MinLength
		if (!hasError)
			if (elmPassword.minlength != null)
				if (value.length < elmPassword.minlength)
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MINLENGTH] + ' (' + elmPassword.minlength + ')');
				}
		
		//MaxLength
		if (!hasError)
			if (elmPassword.maxlength != null)
				if (value.length > elmPassword.maxlength)
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_MAXLENGTH] + ' (' + elmPassword.maxlength + ')');
				}
		
		// MinimumNumber		
		if (!hasError)
			if (elmPassword.MinimumNumber != null)
				if (value.length > 0)
				{
					var minimumNumber = parseInt(elmPassword.MinimumNumber, 10);
					
					if(minimumNumber > 0)
					{
						var countNumber = 0;
						var i = 0;
																		
						for(i = 0; i < value.length; i++)
						{									
							if(IsNumeric(value.substring(i, i + 1)))
							{
								countNumber ++;
							}
						}												
						
						if(countNumber < minimumNumber)
						{
							hasError = true;
							alert(caption  + ': ' + msg[MSG_MINIMUMNUMBER] + ' (' + elmPassword.MinimumNumber + ')');							
						}
					}
				}
				
		// MinimumLetter		
		if (!hasError)
			if (elmPassword.MinimumLetter != null)
				if (value.length > 0)
				{
					var minimumLetter = parseInt(elmPassword.MinimumLetter, 10);
					
					if(minimumLetter > 0)
					{
						var countLetter = 0;
						var i = 0;
												
						for(i = 0; i < value.length; i++)
						{							
							if(!IsNumeric(value.substring(i, i + 1)))
							{
								countLetter ++;
							}
						}
						
						if(countLetter < minimumLetter)
						{
							hasError = true;
							alert(caption  + ': ' + msg[MSG_MINIMUMLETTER] + ' (' + elmPassword.MinimumLetter + ')');
						}
					}
				}
				
		//Confirm
		if (!hasError)
			if (value != value_confirm)
			{
				hasError = true;
				alert(caption  + ': ' + msg[MSG_CONFIRMPASSWORD]);
			}

		if (hasError)
			TryFocus(elmPassword);
	}
	finally
	{
		return (!hasError);
	}

}


/*
************************************************************************************************
****************************************  P H O N E      ***************************************
************************************************************************************************
*/

function value_phone(elmPhone)
{
	var SEPARATOR = '/';
	var COUNTRYCODE = '_COUNTRYCODE';
	var AREACODE = '_AREACODE';
	var EXTENSION = '_EXTENSION';
	var elms = elmPhone.form.elements;
	var elementName = elmPhone.id;
	var elmCountryCode = elms(elementName + COUNTRYCODE);
	var elmAreaCode = elms(elementName + AREACODE);
	var elmExtension = elms(elementName + EXTENSION); 
	var valueCountryCode = rtrim(elmCountryCode.value);
	var valueAreaCode = rtrim(elmAreaCode.value);
	var valuePhone = rtrim(elmPhone.value);
	var valueExtension = '';
	var valueAll = '';
	if (valueCountryCode != '' && valueAreaCode != '' && valuePhone != '')
	{
		valueAll = valueCountryCode + SEPARATOR + valueAreaCode + SEPARATOR + valuePhone;
		if (elmExtension != null)
			if (rtrim(elmExtension.value) != '')
				valueExtension = SEPARATOR + rtrim(elmExtension.value);
		valueAll += valueExtension;
	}
	return controlValue('', valueAll);
}

function set_phone(element, setvalue)
{
	if (setvalue != null)
	{
		reset_phone(element);
		var SEPARATOR = "/";
		var COUNTRYCODE = '_COUNTRYCODE';
		var AREACODE = '_AREACODE';
		var EXTENSION = '_EXTENSION';		
		var values = setvalue.value.split(SEPARATOR);
		var elms = element.form.elements;
		var elementName = element.id;
		var elmCountryCode = elms(elementName + COUNTRYCODE);
		var elmAreaCode = elms(elementName + AREACODE);
		var elmExtension = elms(elementName + EXTENSION); 
		var j = 0;
		if (j < values.length)
		{
		    if(elmCountryCode != null)
			    elmCountryCode.value = values[j];
			j++;
		}
		if (j < values.length)
		{
		    if(elmAreaCode != null)
			    elmAreaCode.value = values[j];
			j++;
		}
		if (j < values.length)
		{
			element.value = values[j++];
		}
		if (j < values.length)
			if (elmExtension != null)
				elmExtension.value = values[j];
		set_elementlabel(element, setvalue);
	}
}

function reset_phone(element)
{
	var elms = element.form.elements;
	var COUNTRYCODE = "_COUNTRYCODE";
	var AREACODE = "_AREACODE";	
	var EXTENSION = '_EXTENSION';		
	element.value = '';
	if(elms(element.id + COUNTRYCODE) != null)
	    elms(element.id + COUNTRYCODE).value = '';
	if(elms(element.id + AREACODE) != null)
	    elms(element.id + AREACODE).value = '';
	if (elms(element.id + EXTENSION) != null)
		elms(element.id + EXTENSION).value = '';
	reset_elementlabel(element);	
}

function validate_phone(elmPhone)
{
	try
	{
		var COUNTRYCODE = "_COUNTRYCODE";
		var AREACODE = "_AREACODE";
		var EXTENSION = "_EXTENSION"
		var hasError = false;
		var caption = elmPhone.caption;
		var elmCountryCode = elmPhone.form.elements(elmPhone.id + COUNTRYCODE);
		var elmAreaCode = elmPhone.form.elements(elmPhone.id + AREACODE);
		var elmExtension = elmPhone.form.elements(elmPhone.id + EXTENSION);
		var valueCountryCode = elmCountryCode != null && !elmCountryCode.readOnly ? rtrim(elmCountryCode.value) : "";
		var valueAreaCode = elmAreaCode != null && !elmAreaCode.readOnly ? rtrim(elmAreaCode.value) : "";
		var valuePhone = rtrim(elmPhone.value);
		var valueExtension = '';
		if (elmExtension != null)
            valueExtension = rtrim(elmExtension.value);
		var checkReq = CheckRequired(elmPhone);
		
		//if Required or there is any entry in areacode or phone or extension
		if ( 
		     (checkReq) || 
		     ((!checkReq) && (valueAreaCode + valuePhone + valueExtension != ''))
		   )
		{
		    var size = 0;
		    var expectedsize = 0;
		    
           if (!hasError)
           {
	           if (valueCountryCode == '' && elmCountryCode != null && !elmCountryCode.readOnly)
	           {
		           hasError = true;
		           alert(caption  + ': ' + msg[MSG_REQUIRED]);
		           TryFocus(elmCountryCode);
	           }
	       }    				          
           if (!hasError)
           {
	           if (valueAreaCode == '' && elmAreaCode != null && !elmAreaCode.readOnly)
	           {
		           hasError = true;
		           alert(caption  + ': ' + msg[MSG_REQUIRED]);
		           TryFocus(elmAreaCode);
	           }
	           else
	           {
				    				    
				   expectedsize = parseInt(elmPhone.MinAreaCodeLength, 10);
				   
				   if(expectedsize > 0)
				   {
				       size = valueAreaCode.length;
				   
				       if(size < expectedsize && elmAreaCode != null)
				       {
				           hasError = true;					     
					       alert(caption  + ': ' + msg[MSG_PHONEAREACODE] + " : " + elmPhone.MinAreaCodeLength);
					       TryFocus(elmAreaCode);
				       }
				   }
			    }
		   }
           if (!hasError)
           {
	           if (valuePhone == '' && !elmPhone.readOnly)
	           {
		           hasError = true;
		           alert(caption  + ': ' + msg[MSG_REQUIRED]);
		           TryFocus(elmPhone);
	           }
	           else
	           {
								  
				   expectedsize = parseInt(elmPhone.MinPhoneLength, 10);
				   
				   if(expectedsize > 0)
				   {
				       size = valuePhone.length;
				   
				       if(size < expectedsize)
				       {
				           hasError = true;
					       
					       alert(caption  + ': ' + msg[MSG_PHONELENGTH] + " : " + elmPhone.MinPhoneLength);
					       TryFocus(elmPhone);
				       }
				   }
                }
            }
		}
	}
	finally
	{
		return (!hasError);
	}
}


function visible_phone(element, value)
{
    value = value == "1" ? true : false;

	var COUNTRYCODE = '_COUNTRYCODE';
	var AREACODE = '_AREACODE';
	var EXTENSION = '_EXTENSION';		
	var elms = element.form.elements;
	var elementName = element.id;
	var elmCountryCode = elms(elementName + COUNTRYCODE);
	var elmAreaCode = elms(elementName + AREACODE);
	var elmExtension = elms(elementName + EXTENSION); 
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
    visible_element(elmCountryCode, value);
	visible_element(elmAreaCode, value);
	visible_element(element, value);
	visible_element(elmExtension, value);
	visible_element(getcaptionElement(element), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious );
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	visible_element(getlabelElement(element), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

function enable_phone(element, value)
{
	var COUNTRYCODE = '_COUNTRYCODE';
	var AREACODE = '_AREACODE';
	var EXTENSION = '_EXTENSION';		
	var elms = element.form.elements;
	var elementName = element.id;
	var elmCountryCode = elms(elementName + COUNTRYCODE);
	var elmAreaCode = elms(elementName + AREACODE);
	var elmExtension = elms(elementName + EXTENSION); 
	enable_general(elmCountryCode, value);
	enable_general(elmAreaCode, value);
	enable_general(element, value);
	enable_general(elmExtension, value);
}

/*
************************************************************************************************
****************************************    E - M A I L   **************************************
************************************************************************************************
*/

function emailCheck (emailStr) {
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/;
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:ışğüöçİşĞÜÖÇ\\\\\\\"\\.\\[\\]";
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]";
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")";
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+';
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")";
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat);
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	//alert("Email address seems incorrect (check @ and .'s)")
	return false;
}
var user=matchArray[1];
var domain=matchArray[2];

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    //alert("The username doesn't seem to be valid.")
    return false;
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        //alert("Destination IP address is invalid!")
		return false;
	    }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat);
if (domainArray==null) {
	//alert("The domain name doesn't seem to be valid.")
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g");
var domArr=domain.match(atomPat);
var len=domArr.length;
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>4) {
   // the address must end in a two letter or three letter word.
   // alert("The address must end in a three-letter domain, or two letter country.")
   return false;
}

// Make sure there's a host name preceding the domain.
if (len<2) {
//   var errStr="This address is missing a hostname!"
//   alert(errStr)
   return false;
}

// If we've gotten this far, everything's valid!
return true;
}

function validate_email(elmEMail)
{
	try
	{
		var hasError = false;
		var caption = elmEMail.caption;		
		var value = rtrim(elmEMail.value);
		
		//Required
		if (!hasError)
			if (CheckRequired(elmEMail))
				if (value == "")
				{
					hasError = true;
 					alert(caption  + ': ' + msg[MSG_REQUIRED]);
				}
				
		//there is a user input to verify
		if (!hasError)
			if (value != "")
			{	
				hasError = !emailCheck(value);
				if (hasError)
					alert (caption  + ': ' + msg[MSG_EMAIL]);
			}
				
		if (hasError)
			TryFocus(elmEMail);
	}
	finally
	{
		return !hasError;
	}
}

/*
************************************************************************************************
**************************************** D U R A T I O N ***************************************
************************************************************************************************
*/

function dateserial(hour, minute, second)
{
	var BASE = 60;
	var value = 0, y = 2;
	if (hour != null)
		value += hour * Math.pow(BASE, y--);
	if (minute != null)
		value += minute * Math.pow(BASE, y--);
	if (second != null)
		value += second * Math.pow(BASE, y);
	return value;	
}

function elementToNumericValue(element)
{
	var value = 0;
	if (element != null)
	{
		if (IsNumeric(element.value))
		{
			value = new Number(element.value);
		}
	}
	return value;
}

function value_duration(elmDuration)
{
	var MINUTE = '_MINUTE', SECOND = '_SECOND';
	var id = elmDuration.id;	
	var elms = elmDuration.form.elements;
	var elmDurationMin = elms(id + MINUTE);
	var elmDurationSec = elms(id + SECOND);
	
	var hour = elementToNumericValue(elmDuration), 
	     min = elementToNumericValue(elmDurationMin), 
	     sec = elementToNumericValue(elmDurationSec);
	     
	return controlValue('', dateserial(hour, min, sec));
}

function set_duration(elmDuration, setvalue)
{
	reset_duration(elmDuration);
	if (setvalue != null)
	{
		var dateSerial = setvalue.value;
		if (IsNumeric(dateSerial))
		{
			var FORMATSEPARATOR = ':';
			var durationString = '';
			var BASE = 60, y = 2;
			var MINUTE = '_MINUTE', SECOND = '_SECOND';
			var id = elmDuration.id;	
			var elms = elmDuration.form.elements;
			var elmDurationMin = elms(id + MINUTE);
			var elmDurationSec = elms(id + SECOND);
			
			var hour = Math.floor( dateSerial / Math.pow(BASE, y) );
			dateSerial -= hour * Math.pow(BASE, y--);
			var min = Math.floor( dateSerial / Math.pow(BASE, y) );
			dateSerial -= min * Math.pow(BASE, y--);
			var sec = Math.floor( dateSerial ); 
			
			elmDuration.value = rightstr('0' + hour.toString(), elmDuration.maxLength);
			durationString = elmDuration.value;
			elmDurationMin.value = rightstr('0' + min.toString(), elmDurationMin.maxLength);
			durationString += FORMATSEPARATOR + elmDurationMin.value;
			
			if(elmDurationSec != null)
			{
				elmDurationSec.value = rightstr('0' + sec.toString(), elmDurationSec.maxLength);
			}
			
			if(elmDurationSec != null)
			{
				durationString += FORMATSEPARATOR + elmDurationSec.value;
			}
			
			set_elementlabel(elmDuration, controlValue('', durationString));
		}
	}
}

function reset_duration(elmDuration)
{
	var MINUTE = '_MINUTE', SECOND = '_SECOND';
	var id = elmDuration.id;	
	var elms = elmDuration.form.elements;
	var elmDurationMin = elms(id + MINUTE);
	var elmDurationSec = elms(id + SECOND);
	elmDuration.value = '';
	elmDurationMin.value = '';
	if(elmDurationSec != null)
	{
		elmDurationSec.value = '';
	}
	reset_elementlabel(elmDuration);
}

function visible_duration(elmDuration, value)
{
    value = value == "1" ? true : false;
    
	var MINUTE = '_MINUTE', SECOND = '_SECOND';
	var id = elmDuration.id;	
	var elms = elmDuration.form.elements;
	var elmDurationMin = elms(id + MINUTE);
	var elmDurationSec = elms(id + SECOND);
    var keepWithPrevious = CheckKeepWithPrevious( element );

	visible_element(getcaptionElement(elmDuration), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(elmDuration), value && !keepWithPrevious );
	visible_element(gettooltipElement(elmDuration), value);
	visible_element(getretainValueElement(elmDuration), value);
	visible_element(getlabelElement(elmDuration), value);
	visible_element(elmDuration, value);
	visible_element(elmDurationMin, value);
	visible_element(elmDurationSec, value);
	if(CheckRequired(elmDuration))
	{
		visible_element(getRequiredSymbolElement(elmDuration), value); 
	}
}

function enable_duration(elmDuration, value)
{
	var MINUTE = '_MINUTE', SECOND = '_SECOND';
	var id = elmDuration.id;	
	var elms = elmDuration.form.elements;
	var elmDurationMin = elms(id + MINUTE);
	var elmDurationSec = elms(id + SECOND);

	enable_general(elmDuration, value);
	enable_general(elmDurationMin, value);
	enable_general(elmDurationSec, value);
}

function validate_duration(elmDuration)
{
	try
	{
		var hasError = false;
		var MINUTE = '_MINUTE', SECOND = '_SECOND';
		var MAX_MIN = 60, MAX_SEC = 60;
		var id = elmDuration.id;	
		var caption = elmDuration.caption;
		var elms = elmDuration.form.elements;
		var elmDurationMin = elms(id + MINUTE);
		var elmDurationSec = elms(id + SECOND);
		
		var hour = '', min = '', sec = '';
		if (elmDuration.value != '')
			hour = elementToNumericValue(elmDuration).toString();
		if (elmDurationMin.value != '')
			min = elementToNumericValue(elmDurationMin).toString();
			
		if(elmDurationSec != null)
		{
			if (elmDurationSec.value != '') 
				sec = elementToNumericValue(elmDurationSec).toString();
		}
		
		
		//required 
		if (CheckRequired(elmDuration))
		{	
			if (hour + min + sec == '')
			{
				hasError = true;
				alert (caption  + ': ' + msg[MSG_REQUIRED]);
				TryFocus(elmDuration);
			}
		}
		
		//value minute
		if (!hasError)
		{
			if (hour + min + sec != '')
			{
				if (hour == '')
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_DURATIONREQUIRED]);
					TryFocus(elmDuration);
				}
				
				if (!hasError)
					if (min == '')
					{
						hasError = true;
						alert (caption  + ': ' + msg[MSG_DURATIONREQUIRED]);
						TryFocus(elmDurationMin);
					}

				if (!hasError)
					if ((elmDurationSec != null) && (sec == ''))
					{
						hasError = true;
						alert (caption  + ': ' + msg[MSG_DURATIONREQUIRED]);
						if(elmDurationSec != null)
						{
							TryFocus(elmDurationSec);
						}
					}

				if (!hasError)
					{
						var min_val = new Number(min);
						if (min_val > MAX_MIN)
						{
							hasError = true;
 							alert(caption  + ': ' + msg[MSG_MAXVALUE] + ' (' + MAX_MIN + ')');
							TryFocus(elmDurationMin);
						}
					}

				if (!hasError)
					if (elmDurationSec != null)
					{	
						var sec_val = new Number(sec);
						if (sec_val > MAX_SEC)
						{
							hasError = true;
 							alert(caption  + ': ' + msg[MSG_MAXVALUE] + ' (' + MAX_SEC + ')');
							TryFocus(elmDurationSec);
						}
					}
			}		
		}		
	}
	finally
	{
		return !hasError;
	}	
}

/*
************************************************************************************************
****************************************    D A T E  *******************************************
************************************************************************************************
*/
var SEPARATORDATE = '.';
var SEPARATORHOUR = ':';
var YEAR = '_YEAR', MONTH = '_MONTH', DAY = '_DAY', 
	HOUR = '_HOUR', MINUTE = '_MINUTE', DATE = "_DATE", TIME = "_TIME";
var DATEINPUTTYPE_MULTIPLE = 'Multiple';
var DATEINPUTTYPE_SINGLE = 'Single';
var POS_YEAR = 6, LEN_YEAR = 4;
var POS_MONTH = 3, LEN_MONTH = 2;
var POS_DAY = 0, LEN_DAY = 2;
var POS_HOUR = 0, LEN_HOUR = 2;
var POS_MINUTE = 3, LEN_MINUTE = 2;

/// This method is used by the date element.
/// When the input type is multiple it is
/// required to control the onkeypress event
/// for the input boxes. This method performs
/// this control. when the user presses the enter
/// key today's date must be set to element value
/// and only numeric values must be entered.
function DateElementOnKeyPress(imgname)
{
    if(event.keyCode == 13)
    {
        ExecuteDefaultCalendar(imgname);
        return true;
    }
    else
    {
        return numberonly();
    }
}

/// This method is used by the date element.
/// Whatever the type of the date element is
/// [multiple or single input type] this method
/// finds the image element whose click event
/// sets today's date to element and executes it.
function ExecuteDefaultCalendar(imgname)
{    
    var img = document.getElementById(imgname);
    img.click();
}

function setvalue_date(elmDate, elementSource)
{
	var elms = elmDate.form.elements;
	var elmsources = elementSource.form.elements;
	var hastime = (elmDate.hastime == "1");
	
	var id = elmDate.id;
	var sourceid = elementSource.id;
		
	// elmDate.dateinputtype
	var year, month, day, hour, minute;
	
	if (elementSource.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
		year = elmsources(sourceid + YEAR).value;
		month = elmsources(sourceid + MONTH).value;
		day = elmsources(sourceid + DAY).value;
		
		if (elementSource.hastime == "1")
		{
			hour = elmsources(sourceid + HOUR).value;
			minute = elmsources(sourceid + MINUTE).value;
		}
	}
	else
	{
		var sourceDate = elmsources(sourceid + DATE).value;		
		year = sourceDate.substr(POS_YEAR, LEN_YEAR);
		month = sourceDate.substr(POS_MONTH, LEN_MONTH);
		day = sourceDate.substr(POS_DAY, LEN_DAY);
		
		if (elementSource.hastime == "1")
		{
			var sourceTime = elmsources(sourceid + TIME).value;
			hour = sourceTime.substr(POS_HOUR, LEN_HOUR);
			minute = sourceTime.substr(POS_MINUTE, LEN_MINUTE);
		}
	}
	
	if (elmDate.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
		elms(id + YEAR).value = year;
		elms(id + MONTH).value = month;
		elms(id + DAY).value = day;
		
		if (elmDate.hastime == "1")
		{
			elms(id + HOUR).value = hour;
			elms(id + MINUTE).value = minute;
		}
		
	}
	else
	{
	    if(day != "" && month != "" && year != "")
		    elms(id + DATE).value = day + SEPARATORDATE + month + SEPARATORDATE + year;
		else    
	        elms(id + DATE).value = "";
	        
		if (elmDate.hastime == "1")
		{
		    if(hour != "" && minute != "")
		        elms(id + TIME).value = hour + TIME_SEPERATOR + minute;
		    else
			    elms(id + TIME).value = "";
		}
	}
}

function AddZeroes(intVal)
{
	return intVal < 10 ? '0' + intVal.toString() : intVal.toString();
}

function PrepareDateValue(year, month, day, hastime, hour, minute, SEPARATORDATE, SEPARATORHOUR)
{	
	var strmonth = AddZeroes(month);
	var strday = AddZeroes(day);
	
	var strhour;
	var strminute;
	
	if(hour != null)
	{
		strhour = AddZeroes(hour);
	}
	
	if(minute != null)
	{
		strminute = AddZeroes(minute);
	}
	
	var datevalue = year + SEPARATORDATE + strmonth + SEPARATORDATE + strday + (hastime ? ' ' + strhour + SEPARATORHOUR + strminute : '');
	return datevalue;
}

function value_date(elmDate)
{
	var id = elmDate.id;	
	var elms = elmDate.form.elements;
	var hastime = (elmDate.hastime == "1");
	var year, month, day, hour, minute;
	
	if (elmDate.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
		year = elms(id + YEAR).value;
		/*
		var month = elms(id + MONTH).value;
		var day = elms(id + DAY).value;
		var hour = '', minute = ''; 
		*/
		month = parseInt(elms(id + MONTH).value, 10);
		day = parseInt(elms(id + DAY).value, 10);
		//var hour = '', minute = ''; 
		
		hour = 0;
		minute = 0; 
		
		if (hastime)
		{
			/*
			hour = elms(id + HOUR).value;
			minute = elms(id + MINUTE).value;
			*/
			
			hour = parseInt(elms(id + HOUR).value, 10);
			minute = parseInt(elms(id + MINUTE).value, 10);
		}
	}
	else
	{
		var dateValue = elms(id + DATE).value;
		year = dateValue.substr(POS_YEAR, LEN_YEAR);
		month = parseInt(dateValue.substr(POS_MONTH, LEN_MONTH), 10);
		day = parseInt(dateValue.substr(POS_DAY, LEN_DAY), 10);
		if (hastime)
		{
			var timeValue = elms(id + TIME).value;
			hour = parseInt(timeValue.substr(POS_HOUR, LEN_HOUR), 10);
			minute = parseInt(timeValue.substr(POS_MINUTE, LEN_MINUTE), 10);
		}
	}

	var datevalue = "";
	if (year != "")
	{
		//datevalue = year + SEPARATORDATE + month + SEPARATORDATE + day + (hastime ? ' ' + hour + SEPARATORHOUR + minute : '');
		//datevalue = year + SEPARATORDATE + (month < 10 ? '0' + month.toString() : month.toString()) + SEPARATORDATE + (day < 10 ? '0' + day.toString() : day.toString())+ (hastime ? ' ' + hour + SEPARATORHOUR + minute : '');
		
		datevalue = PrepareDateValue(year, month, day, hastime, hour, minute, SEPARATORDATE, SEPARATORHOUR);
	}
	return controlValue('', datevalue);
}

// date format is assumed to be YYYY/MM/DD hh:mm //
function set_date(elmDate, setvalue)
{
	
	if (setvalue != null)
	{
		var datevalue = setvalue.value;
		var POS_YEAR = 0, LEN_YEAR = 4;
		var POS_MONTH = 5, LEN_MONTH = 2;
		var POS_DAY = 8, LEN_DAY = 2;
		var POS_HOUR = 11, LEN_HOUR = 2;
		var POS_MINUTE = 14, LEN_MINUTE = 2;
		
		if (datevalue.length >= POS_DAY + LEN_DAY)
		{
			var elms = elmDate.form.elements;
			var hastime = (elmDate.hastime == "1");
			var id = elmDate.id;
			var datepart = datevalue.substr(POS_DAY, LEN_DAY) + '.' + 
				datevalue.substr(POS_MONTH, LEN_MONTH) + '.' +
				datevalue.substr(POS_YEAR, LEN_YEAR);
			var timepart = '';
			
			if (elmDate.dateinputtype == DATEINPUTTYPE_MULTIPLE)
			{
		
				elms(id + YEAR).value = datevalue.substr(POS_YEAR, LEN_YEAR);
				elms(id + MONTH).value = datevalue.substr(POS_MONTH, LEN_MONTH);
				elms(id + DAY).value = datevalue.substr(POS_DAY, LEN_DAY);
				if (hastime)
				{
					elms(id + HOUR).value = '00';
					elms(id + MINUTE).value = '00';
					
					/*
					var POS_HOUR = 11, LEN_HOUR = 2;
					var POS_MINUTE = 14, LEN_MINUTE = 2;
					*/
					
					if (datevalue.length == POS_MINUTE + LEN_MINUTE)
					{
						elms(id + HOUR).value = datevalue.substr(POS_HOUR, LEN_HOUR);
						elms(id + MINUTE).value = datevalue.substr(POS_MINUTE, LEN_MINUTE);
						timepart = ' ' + datevalue.substr(POS_HOUR, LEN_HOUR) + SEPARATORTIME + datevalue.substr(POS_MINUTE, LEN_MINUTE);
					}
				}
			}
			else
			{				
				elms(id + DATE).value = datevalue.substr(POS_DAY, LEN_DAY) 
					+ SEPARATORDATE + datevalue.substr(POS_MONTH, LEN_MONTH)
					+ SEPARATORDATE + datevalue.substr(POS_YEAR, LEN_YEAR);
				if (hastime)
				{
					elms(id + TIME).value = datevalue.substr(POS_HOUR, LEN_HOUR)
						+ SEPARATORTIME + datevalue.substr(POS_MINUTE, LEN_MINUTE);
					timepart = ' ' + datevalue.substr(POS_HOUR, LEN_HOUR) + SEPARATORTIME + datevalue.substr(POS_MINUTE, LEN_MINUTE);
				}			
			}
			set_elementlabel(elmDate, controlValue('', datepart + timepart));
		}
		else
		{
			reset_date(elmDate);
		}
	}		
}

function reset_date(elmDate)
{
	var elms = elmDate.form.elements;
	var hastime = (elmDate.hastime == "1");
	var id = elmDate.id;
	
	if (elmDate.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
		elms(id + YEAR).value = '';
		elms(id + MONTH).value = '';
		elms(id + DAY).value = '';
		
		if (hastime)
		{
			elms(id + HOUR).value = '';
			elms(id + MINUTE).value = '';
		}
	}
	else
	{
		elms(id + DATE).value = '';
		if (hastime)
		{
			elms(id + TIME).value = '';
		}	
	}
	reset_elementlabel(elmDate);
}

function visible_date(element, value)
{
    value = value == "1" ? true : false;
    
	var BUTTONDEFAULT = "_BUTTONDEFAULT", BUTTONCLEAR = "_BUTTONCLEAR", 
	    BUTTON = "_BUTTON";
	var elms = element.form.elements;
	var hastime = (element.hastime == "1");
	var id = element.id;
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}

	if (element.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
		visible_element(elms(id + YEAR), value);
		visible_element(elms(id + MONTH), value);
		visible_element(elms(id + DAY), value);
		
		if (hastime)
		{
			visible_element(elms(id + HOUR), value);
			visible_element(elms(id + MINUTE), value);
		}
	}
	else
	{
		visible_element(elms(id + DATE), value);
		if (hastime)
		{
			visible_element(elms(id + TIME), value);
		}
	}
	
	visible_element(getcaptionElement(element), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious );
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	var labelElement = getlabelElement(element);
	visible_element(labelElement, value);
	
	if (labelElement == null)
	{
		visible_element(document.getElementById(id + BUTTONDEFAULT), value);
		visible_element(document.getElementById(id + BUTTONCLEAR), value);
		visible_element(document.getElementById(id + BUTTON), value);
	}
}

function enable_date(element, value)
{
	var BUTTONDEFAULT = "_BUTTONDEFAULT", BUTTONCLEAR = "_BUTTONCLEAR", 
	    BUTTON = "_BUTTON";
	var elms = element.form.elements;
	var hastime = (element.hastime == "1");
	var id = element.id;
	var displayButtons = true;
	
	enable_general(element, value);
	
	if (element.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
		enable_general(elms(id + YEAR), value);
		enable_general(elms(id + MONTH), value);
		enable_general(elms(id + DAY), value);
		displayButtons = elms(id + YEAR).style.visibility != "hidden";
		if (hastime)
		{
			enable_general(elms(id + HOUR), value);
			enable_general(elms(id + MINUTE), value);
		}
	}
	else
	{
		enable_general(elms(id + DATE), value);
		displayButtons = elms(id + DATE).style.visibility != "hidden";
		if  (hastime)
		{
			enable_general(elms(id + TIME), value);
		}	
	}
	
	value = element.readOnly || !displayButtons ? "0" : "1";
	visible_element(document.getElementById(id + BUTTONDEFAULT), value);
	visible_element(document.getElementById(id + BUTTONCLEAR), value);
	visible_element(document.getElementById(id + BUTTON), value);
}

// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) 
			this[i] = 30;
		if (i==2) 
			this[i] = 29;
   } 
   return this;
}

function isDate(Year, Month, Day)
{
	var YEAR_MIN = 1900;
	var YEAR_MAX = 9999;
	var daysInMonth = DaysArray(12);
	
	var year = parseInt(Year,10);
	var month = parseInt(Month,10);
	var day = parseInt(Day,10);
	
	//all entry should be numeric
	if (isNaN(year) || isNaN(month) || isNaN(day))
		return false;
	
	//year check
	if (year < YEAR_MIN || year > YEAR_MAX)
		return false;
	
	//month should be >=1 and <=12
	if (month < 1 || month > 12)
		return false;
	
	//day check
	if (day < 1 || day > 31 || (month == 2 && day > daysInFebruary(Year)) || day > daysInMonth[month])
		return false;

	return true;

}

function isTime(Hour, Minute)
{

	var hour = parseInt(Hour,10);
	var minute = parseInt(Minute,10);
	
	if (isNaN(hour) || isNaN(minute))
		return false;
		
	if (hour < 0 || hour > 23)
		return false;
		
	if (minute < 0 || minute > 59)
		return false;
		
	return true;
}

function defaultCalendar(elementName, showTime)
{
	var newdate = new Date();
	var inputDate = document.forms(0).elements(elementName);
	var elms = inputDate.form.elements;
    
    fireDateModifierEvent  = false;
    
	if (inputDate.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
	    var dayObj = elms(elementName + DAY);
	    var monthObj = elms(elementName + MONTH);
	    var yearObj = elms(elementName + YEAR);

    	dayObj.value = rightstr('0' + newdate.getDate().toString(), 2);
		monthObj.value = rightstr('0' + (newdate.getMonth() + 1).toString(), 2);
		yearObj.value =  newdate.getFullYear().toString();
		
		if (showTime == '1')
		{
		    var hourObj = elms(elementName + HOUR);
		    var minuteObj = elms(elementName + MINUTE);
		    
			hourObj.value = rightstr('0' + newdate.getHours().toString(), 2);
			minuteObj.value = rightstr('0' + newdate.getMinutes().toString(), 2);

		}
		
	    fireDateModifierEvent = true;
	    inputDate.value = dayObj.value;
	}
	else
	{
		elms(elementName + DATE).value = rightstr('0' + newdate.getDate().toString(), 2)
			+ SEPARATORDATE + rightstr('0' + (newdate.getMonth() + 1).toString(), 2)
			+ SEPARATORDATE + newdate.getFullYear().toString();
		if (showTime == '1')
		{
			elms(elementName + TIME).value = rightstr('0' + newdate.getHours().toString(), 2)
				+ TIME_SEPERATOR + rightstr('0' + newdate.getMinutes().toString(), 2);
		}

	    fireDateModifierEvent = true;
	    inputDate.value = elms(elementName + DATE).value;
	}

	SetScreenChanged();
}

function cancelCalendar(elementName, showTime)
{
    fireDateModifierEvent  = false;
	var inputDate = document.forms(0).elements(elementName);
	var elms = inputDate.form.elements;

	if (inputDate.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
		elms(elementName + DAY).value = '';
		elms(elementName + MONTH).value = '';
		elms(elementName + YEAR).value = '';
		if (showTime == '1')
		{
			elms(elementName + HOUR).value = '';
			elms(elementName + MINUTE).value = '';
		}
	}
	else
	{
		elms(elementName + DATE).value = '';
		if (showTime == '1')
		{
			elms(elementName + TIME).value = '';
		}
	}
	fireDateModifierEvent  = true;
	inputDate.value = inputDate.value;
	SetScreenChanged();
}

function validate_datetime(elmDate)
{
	var dateInputType = elmDate.dateinputtype;
	try
	{		
		var hasError = false;
		var caption = elmDate.caption;
		var elms = elmDate.form.elements;
		var hastime = (elmDate.hastime == "1");
		var id = elmDate.id;
		var date = '';
		var time = '';
		
		var year, month, day, hour, minute;
		
		if (dateInputType == DATEINPUTTYPE_MULTIPLE)
		{
			year = elms(id + YEAR).value;
			month = elms(id + MONTH).value;
			day = elms(id + DAY).value;
			date = day + month + year ;
			
			if (hastime)
			{
				hour = elms(id + HOUR).value;
				minute = elms(id + MINUTE).value;
				time = hour + minute;
			}
		}
		else
		{
			    date = elms(id + DATE).value;
				if (date != '')
				{
						if (date.length != 10)
						{
							hasError = true;
							alert (caption  + ': ' + msg[MSG_DATE]);
						}
						else
						{
							year = date.substr(POS_YEAR, LEN_YEAR);
							month = date.substr(POS_MONTH, LEN_MONTH);
							day = date.substr(POS_DAY, LEN_DAY);
						}
						
						if (hastime)
						{
							time = elms(id + TIME).value;
							if (time != '')
							{
								if (time.length != 5)
								{
									hasError = true;
									alert (caption  + ': ' + msg[MSG_DATE]);
								}
								else
								{
									hour = time.substr(POS_HOUR, LEN_HOUR);
									minute = time.substr(POS_MINUTE, LEN_MINUTE);
								}
							}			
						}
				}			
		}
		
		/*
		if (hastime)
		{
			time = elms(id + TIME).value;
			if (time != '')
			{
				if (time.length != 5)
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_DATE]);
				}
				else
				{
					hour = time.substr(POS_HOUR, LEN_HOUR);
					minute = time.substr(POS_MINUTE, LEN_MINUTE);
				}
			}			
		}
		*/
		
		//required and date check
		if (!hasError)
		{
			if (CheckRequired(elmDate))
			{	
				if (date == '')
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}
				else
				{
					if (!isDate(year, month, day))
					{
						hasError = true;
						alert (caption  + ': ' + msg[MSG_DATE]);
					}
				}
			}
			else
			{
				if (date != '')
				{
					if (!isDate(year, month, day))
					{
						hasError = true;
						alert (caption  + ': ' + msg[MSG_DATE]);
					}
				}
			}
		}

		//required and time check
		if (!hasError)
		{
			if (hastime)
			{
				if (CheckRequired(elmDate))
				{
					if (!isTime(hour, minute))
					{
						hasError = true;
						alert(caption + ': ' + msg[MSG_TIME]);
					}
				}
				else
				{
					if (time != '')
					{
						if (!isTime(hour, minute))
						{
							hasError = true;
							alert(caption + ': ' + msg[MSG_TIME]);
						}
					}
				}	
			}
		}	

			//MinValue
		if (!hasError)
			if (elmDate.maxelement != null)
			{				
				var maxElementId = document.getElementById(elmDate.maxelement).id;
				var maxYear = elms(maxElementId + YEAR).value;				
				var maxMonth = elms(maxElementId + MONTH).value;
				var maxDay = elms(maxElementId + DAY).value;	
				if ((year + month + day != '') && (maxYear + maxMonth + maxDay != ''))			
				{		
					if (isDate(year, month, day) && isDate(maxYear, maxMonth, maxDay))
					{
					 	var dateMin = new Date(year, month, day);
					 	var dateMax = new Date(maxYear, maxMonth, maxDay);
					 	if (dateMin > dateMax)
					 	{
					 		hasError = true;
 							alert(caption  + ': ' + msg[MSG_DATEBETWEEN]);
					 	}
					}
				}
			}				
		
		if (hasError)
		{
			if (dateInputType == DATEINPUTTYPE_MULTIPLE)
				TryFocus(elms(id + DAY));
			else
				TryFocus(elms(id + DATE));
		}

	}
	finally
	{
		return !hasError;
	}
}

/// Similar to SQL Server DateAdd function.
/// Returns a new date value based on adding an interval to the specified date.
/// datepart: Datepart Abbreviations: 
/// Year: yy, yyyy Month: mm, m Day: dd, d Hour: hh Minute: mi, n Second: ss, s 
/// number: int, date: Date
/// Revision 1: Mesut Tülek - 26.12.2006						
function DateAdd(datepart, number, date)
{	
	number = parseInt(number);
	datepart = datepart.toLowerCase();
	
	if(isNaN(number) || date == null)
		return;
	
	with (date)
	{
		switch(datepart)
		{
			case "yy":
				setYear(getYear() + number); break;
			case "yyyy":
				setFullYear(getFullYear() + number); break;
			case "mm": case "m":									
				setMonth(getMonth() + number); break;										
			case "dd": case "d":
				setDate(getDate() + number); break;
			case "hh":
				setHours(getHours() + number); break;
			case "mi": case "n":
				setMinutes(getMinutes() + number); break;
			case "ss": case "s":
				setSeconds(getSeconds() + number); break;
			default:
				date = null;
		}
	}
	
	return date;
}

/// Similar to SQL Server DateDiff function.
/// Returns the number of date and time boundaries crossed between two specified dates.
/// datepart: Datepart Abbreviations: 
/// Year: yy, yyyy Month: mm, m Day: dd, d Hour: hh Minute: mi, n Second: ss, s 
/// Revision 1: Mesut Tülek - 26.12.2006
function DateDiff(datepart, startdate, enddate)
{	
	var MS_TO_YEAR = 94608e7;	// 1000*60*60*24*30*365 or 946080000000
	var MS_TO_MONTH = 2592e6;	// 1000*60*60*24*30 or 2592000000
	var MS_TO_DAY = 864e5;	// 1000*60*60*24 or 86400000
	var MS_TO_HOUR = 36e5;	// 1000*60*60 or 3600000
	var MS_TO_MINUTE = 6e4;	// 1000*60 or 60000
	var MS_TO_SECOND = 1e3;	// 1000 or 1000
	
	var diffConst = 0;
	
	datepart = datepart.toLowerCase();
	
	if(startdate == null || enddate == null)
		return;
	
	switch(datepart)
	{
		case "yy": case "yyyy":
			diffConst = MS_TO_YEAR; break;
		case "mm": case "m":
			diffConst = MS_TO_MONTH; break;
		case "dd": case "d":
			diffConst = MS_TO_DAY; break;
		case "hh":
			diffConst = MS_TO_HOUR; break;
		case "mi": case "n":
			diffConst = MS_TO_MINUTE; break;
		case "ss": case "s":
			diffConst = MS_TO_SECOND; break;
		default:
			return null;
	}
	
	return Math.round((enddate - startdate)/diffConst);
}

/// Copied from emptor.js function value_date()
/// The last part is changed so that function returns Date object.
/// Revision 1: Mesut Tülek - 26.12.2006
function returnDateValue(elmDate)
{
	var id = elmDate.id;	
	var elms = elmDate.form.elements;
	var hastime = (elmDate.hastime == "1");
	var year, month, day, hour, minute;
	
	hour = 0;
    minute = 0;

	if (elmDate.dateinputtype == DATEINPUTTYPE_MULTIPLE)
	{
		year = elms(id + YEAR).value;
		/*
		var month = elms(id + MONTH).value;
		var day = elms(id + DAY).value;
		var hour = '', minute = ''; 
		*/
		month = parseInt(elms(id + MONTH).value, 10);
		day = parseInt(elms(id + DAY).value, 10);
		//var hour = '', minute = ''; 
		
		hour = 0;
		minute = 0; 
		
		if (hastime)
		{
			/*
			hour = elms(id + HOUR).value;
			minute = elms(id + MINUTE).value;
			*/
			
			hour = parseInt(elms(id + HOUR).value, 10);
			minute = parseInt(elms(id + MINUTE).value, 10);
		}
	}
	else
	{
		var dateValue = elms(id + DATE).value;
		year = dateValue.substr(POS_YEAR, LEN_YEAR);
		month = parseInt(dateValue.substr(POS_MONTH, LEN_MONTH), 10);
		day = parseInt(dateValue.substr(POS_DAY, LEN_DAY), 10);
		if (hastime)
		{
			var timeValue = elms(id + TIME).value;
			hour = parseInt(timeValue.substr(POS_HOUR, LEN_HOUR), 10);
			minute = parseInt(timeValue.substr(POS_MINUTE, LEN_MINUTE), 10);
		}
	}

	var datevalue = "";
	if (year != "")
	{
		//datevalue = year + SEPARATORDATE + month + SEPARATORDATE + day + (hastime ? ' ' + hour + SEPARATORHOUR + minute : '');
		//datevalue = year + SEPARATORDATE + (month < 10 ? '0' + month.toString() : month.toString()) + SEPARATORDATE + (day < 10 ? '0' + day.toString() : day.toString())+ (hastime ? ' ' + hour + SEPARATORHOUR + minute : '');
		
		// Month parameter Date constructor takes 
		datevalue = new Date(year, month - 1, day, hour, minute, 0);
	}
	return datevalue;
}

/*
************************************************************************************************
**************************************** B U T T O N *******************************************
**************************************** S H O R T C U T ***************************************
************************************************************************************************
*/

function visible_shortcuttext(element, value)
{
    value = value == "1" ? true : false;
    
	visible_general(element, value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

function enable_shortcuttext(element, value)
{
	if (element != null)
	{
		if (value != null)
		{
			var HREF = 'href';
			element.disabled = (value == 0);
			if (element.disabled)
				element.removeAttribute(HREF);
			else
				element.setAttribute(HREF, element.hrefcopy);
		}
	}
}

function visible_button(element, value)
{
    value = value == "1" ? true : false;
    
	visible_element(element, value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

function enable_button(element, value)
{
	element.disabled = (value == "0");
}

function set_buttontext(element, setvalue)
{
	if ((element != null) && (setvalue != null))
		element.innerText = setvalue.value;
}

function set_buttonimage(element, setvalue)
{
	if ((element != null) && (setvalue != null))
		element.src = setvalue.value;
}

/*
************************************************************************************************
**************************************** L A B E L *********************************************
************************************************************************************************
*/

function value_label(element)
{
	var SPLIT = '~';
	var SHOW = '_SHOW';
	var showvalue = document.getElementById(element.id + SHOW).innerText;
	return controlValue(element.value + SPLIT + showvalue, showvalue);
}

function set_label(element, setvalue)
{
	var SPLIT = '~';
	var SHOW = '_SHOW';
	if (setvalue != null)
	{
		var setvalueid = setvalue.id.split(SPLIT)[0];
		var setvaluevalue = setvalue.value;

		if (element.datatype != null)
		{
			// date comes in yyyy.mm.dd hh:mm format and should be corrected
			if (element.datatype == 'DateTime')
			{
				var LBLPOS_YEAR = 0, LBLLEN_YEAR = 4;
				var LBLPOS_MONTH = 5, LBLLEN_MONTH = 2;
				var LBLPOS_DAY = 8, LBLLEN_DAY = 2;
				var LBLPOS_HOUR = 11, LBLLEN_HOUR = 2;
				var LBLPOS_MINUTE = 14, LBLLEN_MINUTE = 2;
				if (setvaluevalue.length == LBLPOS_MINUTE + LBLLEN_MINUTE)
					setvaluevalue = setvaluevalue.substr(LBLPOS_DAY, LBLLEN_DAY) + '.' +
					                setvaluevalue.substr(LBLPOS_MONTH, LBLLEN_MONTH) + '.' +
					                setvaluevalue.substr(LBLPOS_YEAR, LBLLEN_YEAR) + ' ' +
					                setvaluevalue.substr(LBLPOS_HOUR, LBLLEN_HOUR) + ':' +
					                setvaluevalue.substr(LBLPOS_MINUTE, LBLLEN_MINUTE);
			}
		}
		var id = setvalueid == '' ? setvaluevalue : setvalueid;
		var showvalue = document.getElementById(element.id + SHOW);
		element.value = id;
		showvalue.innerHTML = setvaluevalue;	
	}	
}

function reset_label(element)
{
	var SHOW = '_SHOW';
	var showvalue = document.getElementById(element.id + SHOW);
	element.value = '';
	showvalue.innerText = '';
}

function visible_label(element, value)
{
    value = value == "1" ? true : false;
    
	var SHOW = '_SHOW';
	var elementShow = document.getElementById(element.id + SHOW);
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
	visible_element(elementShow, value);
	visible_element(gettooltipElement(element), value && !keepWithPrevious );
	visible_element(getcaptionElement(element), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(element), value);
	visible_element(getretainValueElement(element), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value);
	} 
}

/*
************************************************************************************************
**************************************** L I S T ***********************************************
*********************************** radio and select *******************************************
*/

function SetListHiddenValue(select)
{
	if (select != null)
	{
		var	SELECTEDID = '_SELECTEDID';
		var elementHidden = select.form.elements(select.id + SELECTEDID);
		var selectedValue = '';
		if (select.selectedIndex >= 0)
			selectedValue = select.options[select.selectedIndex].value;
		elementHidden.value = selectedValue;
		//SetScreenChanged();
	}
}

function value_list(elmList)
{
	var SPLIT = '~';
	var id = '', value = '';
	if (elmList.selectedIndex >= 0)
	{
		var option = elmList.options[elmList.selectedIndex];
		id = option.value;
		value = option.text;
	}
	return controlValue(id + SPLIT + value, value);
}

function setvalue_list(elementDest,elementSource)
{	
	setvalue_general(elementDest, elementSource);
	SetListHiddenValue(elementDest);
}

function set_list(elmList, setvalue)
{
	if (setvalue != null)
	{
		var SPLIT = '~';
		var i;
		var setvalueid = setvalue.id.split(SPLIT)[0];
		for (i = 0; i < elmList.options.length; i++)
		{
			if (elmList.options[i].value == setvalueid)
			{
				elmList.options[i].selected = true;
				selectedvalue = elmList.options[i].value;
				break;
			}
		}
		SetListHiddenValue(elmList);
	}
}

function reset_list(elmList)
{
	var i;
	if (elmList.length > 0)
		elmList.selectedIndex = 0;
	SetListHiddenValue(elmList);	
}

function enable_list(element, value)
{
	if (element != null)
	{
		element.disabled = (value == '0');
	}
}

function value_radio(elmRadio)
{
	var SPLIT = '~';
	var id = '', value = '';
	var radioId = elmRadio.id;
	var radios = elmRadio.form.elements(radioId);
	var i;
	for (i = 0; i < radios.length; i++)
		if (radios(i).checked)
		{
			id = radios(i).value;
			value = radios(i).description;
			break;
		}
	return controlValue(id + SPLIT + value, value);
}

function set_radio(elmRadio, setvalue)
{
	if (setvalue != null)
	{
		var LEGEND = '_LEGEND';
		var legends = document.all(elmRadio.id + LEGEND);
		var SPLIT = '~';
		var setvalueid = setvalue.id.split(SPLIT)[0];
  		var name = elmRadio.name;
  		var elmRadios = elmRadio.form.elements(name);
  		for (var i = 0; i < elmRadios.length; i++)
  		{
  			if (elmRadios(i).value == setvalueid)
  			{
  				elmRadios(i).checked = true;
  				if (setvalue.id.split(SPLIT).length > 1)
  				{
  					elmRadios(i).description = setvalue.id.split(SPLIT)[1];
  					legends(i).innerText = setvalue.id.split(SPLIT)[1];
  				}
  			}
  			elmRadios(i).checkeditem = elmRadios(i).checked ? "1" : "0";
  		}			
	}
}

function reset_radio(elmRadio)
{
  	var name = elmRadio.name;
	if (elmRadio.form.elements(name) != null)
	{	
  		for (var i = 0; i < elmRadio.form.elements(name).length; i++)
  		{
  			elmRadio.form.elements(name)(i).checked = false;
  			elmRadio.form.elements(name)(i).checkeditem = "0";
  			//elmRadios(i).checkeditem = "0";
  		}
	}
}

function visible_radio(element, value)
{
    value = value == "1" ? true : false;
    
	var LEGEND = '_LEGEND';
	var elementsRadio = element.form.elements(element.id);
	var legends = document.all(element.id + LEGEND);
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
	for (var i = 0; i < elementsRadio.length; i++)
	{
		visible_element(elementsRadio(i), value);
		visible_element(legends(i), value);
	}
	visible_element(getcaptionElement(element), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious );
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

function enable_radio(element, value)
{
	element.enabled = value;
}

//for setting input=radio as readonly
function radioReadOnly()
{
	var elm = event.srcElement;
  	var name = elm.name;
  	var elms = elm.form.elements(name);
  	var i;
  	if (elms.length != null)
    {
  	    if (elms[0].enabled != null)
  	    {
  		    if (elms[0].enabled == "1")
  		    {
  		        if (elm.checkeditem == "0" && elm.FireOnChange == "1")
  	            {
  	                SetScreenChanged();
  	            }
  			    for (i = 0; i < elms.length; i++)
  			    {
  				    elms(i).checkeditem = elms(i).checked ? "1" : "0";
  			    }  			
  			    //return;  			
  		    }
  	    }
  	}  	
    else
    {
        if (elms.enabled == "1")
        {
            if (elm.checkeditem == "0" && elm.FireOnChange == "1")
            {
                SetScreenChanged();
            }

            elms.checkeditem = elms.checked ? "1" : "0";

        }
    }
  	for (i = 0; i < elms.length; i++)
  	{
  		elms(i).checked = (elms(i).checkeditem == "1");
  		if (elms(i).checked)
   			elms(i).focus();
  	}	
}

function validate_radio(elmRadio)
{
	try
	{
		var hasError = false;
		var caption = elmRadio.caption;
		var id = elmRadio.id;
		var checked = false;
		var radios = elmRadio.form.elements(id);
		
		for (var i = 0; i < radios.length; i++)
			if (radios(i).checked)
			{
				checked = true;
				break;
			}
		
		//required 
		if (!hasError)
			if (CheckRequired(elmRadio))
				if (!checked)
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}

		if (hasError)
			TryFocus(elmRadio);
	}
	finally
	{
		return !hasError;
	}
}

//for setting select as readonly
function selectReadOnly()
{
	var elm = event.srcElement;
  	var selvalue = elm.selectedvalue;
  	if (selvalue != null)
  	{
  		for (var i = 0; i < elm.options.length; i++)
  			elm.options(i).selected = ( elm.options(i).value == selvalue);
  	}
}

function validate_select(elmSelect)
{
	try
	{
		var NULLVALUE = '';
		var hasError = false;
		var caption = elmSelect.caption;
		
		//required 
		if (!hasError)
			if (CheckRequired(elmSelect))
			{	
				if (elmSelect.value == null)
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}
				else if (elmSelect.value == NULLVALUE)
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}
			}

		if (hasError)
			TryFocus(elmSelect);
	}
	finally
	{
		return !hasError;
	}
}

/*
************************************************************************************************
****************************************  S E A R C H     **************************************
************************************************************************************************
*/


function clear_search(elementName)
{
	var elmDescription = elementName + DESCRIPTIONSUFFIX;
	if($(elmDescription).value != '')
	{
	    SetScreenChanged();    
	}
	var elmObj = $(elementName);
	elmObj.value = '';
	elmObj.oldValue = '';
	elmObj.idcode = null;
	$(elmDescription).value = '';
	if($(elmDescription).onchange)
	    $(elmDescription).onchange();
}

function value_search(elmSearch)
{
	var SPLIT = '~';
	var elms = elmSearch.form.elements;
	var elmDescription = elms(elmSearch.id + DESCRIPTIONSUFFIX);
	//return controlValue(elmSearch.value + SPLIT + elmDescription.value, elmDescription.value);
	return SearchcontrolValue(elmSearch.value + SPLIT + elmDescription.value, elmDescription.value);
}

function set_search(elmSearch, setvalue)
{
	if (setvalue != null)
	{	
		var SPLIT = '~';
		var elms = elmSearch.form.elements;
		var elmDescription = elms(elmSearch.id + DESCRIPTIONSUFFIX);
		
		var splitted = setvalue.id.split( SPLIT );
		var description = setvalue.value;
		
		elmSearch.value = splitted[ 0 ];
		
		if ( splitted.length > 1 )
		    description = splitted[ 1 ];
		
		elmSearch.description = description;
		elmDescription.value  = description;
		
		set_elementlabel(elmSearch, setvalue);
	}
}

function reset_search(elmSearch)
{
	var elms = elmSearch.form.elements;
	var elmDescription = elms(elmSearch.id + DESCRIPTIONSUFFIX);
	elmSearch.value = '';
	elmSearch.description = '';
	elmDescription.value = '';
	reset_elementlabel(elmSearch);
}

/*
sets the search element value to null
*/
function setSearchValueToNull(htmlName)
{
	document.forms(0).elements(htmlName).value = '';
	document.forms(0).elements(htmlName).description = '';
	document.forms(0).elements(htmlName + DESCRIPTIONSUFFIX).value = '';
	document.forms(0).elements(htmlName + DESCRIPTIONSUFFIX).focus();
}

function setvalue_search(elementDest, elementSource)
{	
	var htmlName;
	elementDest.value = elementSource.value;
	htmlName = elementSource.name + DESCRIPTIONSUFFIX;
	elementDest.description = document.forms(0).elements(htmlName).value;
	document.forms(0).elements(elementDest.name + DESCRIPTIONSUFFIX).value = document.forms(0).elements(htmlName).value;
}

function validate_search(elmSearch)
{
	try 
	{
		var BUTTON = "_BUTTON";
		var hasError = false;
		var caption = elmSearch.caption;
		
		//required 
		if (!hasError)
			if (CheckRequired(elmSearch))
				if (elmSearch.value == "")
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}
		if (hasError)
		{
			elmSearchDesc = document.getElementById(elmSearch.id +DESCRIPTIONSUFFIX);
			TryFocus(elmSearchDesc);
		}
		
	}
	finally
	{
		return !hasError;
	}
}

function visible_search(element, value)
{
    value = value == "1" ? true : false;
    
	var BUTTON = '_BUTTON';
	var BUTTONMENU = '_BUTTONMENU';
	var BUTTONDELETE = '_DELETE';
	
	var elementDescription = element.form.elements(element.id + DESCRIPTIONSUFFIX);
	var elementButton = document.getElementById(element.id + BUTTON);
	var elementButtonMenu = document.getElementById(element.id + BUTTONMENU);
	var elementDeleteButton = document.getElementById(element.id + BUTTONDELETE);
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
	visible_element(elementDescription, value);
	visible_element(getcaptionElement(element), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious );
	visible_element(gettooltipElement(element), value);	
	visible_element(getretainValueElement(element), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
	var label = getlabelElement(element);
	visible_element(label, value);
	//if the element is disabled, and the element is not at label mode 
	// button shoulds be invisible
	if (label == null)
	{
		value = elementDescription.readOnly ? "0" : value;
		visible_element(elementButton, value);
		visible_element(elementDeleteButton, value);
		visible_element(elementButtonMenu, value);		
	}
}

function enable_search(element, value)
{
	var BUTTON = '_BUTTON';
	var BUTTONMENU = '_BUTTONMENU';
	var BUTTONDELETE = '_DELETE';
	
	var elementDescription = element.form.elements(element.id + DESCRIPTIONSUFFIX);
	var elementButton = document.getElementById(element.id + BUTTON);
	var elementButtonMenu = document.getElementById(element.id + BUTTONMENU);
	var elementDeleteButton = document.getElementById(element.id + BUTTONDELETE);
	
	enable_general(elementDescription, value);
			
	value = elementDescription.readOnly ? "0" : "1";
	
	if(elementDescription.style.visibility == "hidden")
	{
	    value = "0";
	}
	
	visible_element(elementButton, value);
	visible_element(elementButtonMenu, value);
	visible_element(elementDeleteButton, value);
}

/*
	called when user clicks letter in search dialog box
*/
function submitSearchLetters(letter, htmlControlName, screenpartname, submittername, action, validateform)
{
	document.forms(0).elements(htmlControlName).value = letter;
	submitform( screenpartname, submittername, action, validateform );
}

function searchButtonOnEnter(buttonName)
{
	if (event.keyCode == 13)
	{
		var button = document.forms(0).elements(buttonName);
		if (button != null)
			button.click();
	}
}

function searchButtonOnEnterAndNumberOnly(buttonName)
{
	if (event.keyCode == 13)
	{
		var button = document.forms(0).elements(buttonName);
		if (button != null)
			button.click();
		return true;
	}
	else
	{		
		return numberonly();
	}
}
function addDynamicScPartFilename(screenPartName, params)
{
	var SCPARTFILEPREFIX = "X_SCPARTXMLFILENAME";
	var scpartXmlFileName = document.getElementById(screenPartName + SCPARTFILEPREFIX);
	if(scpartXmlFileName != null)
	{
		params += '&'  + screenPartName + SCPARTFILEPREFIX + '=' + scpartXmlFileName.value; 
	}
	return params;
}
function openPopupSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex, isQuickfilter )
{
	var DIALOGSCREENPARTNAME = "X_DIALOGSCREENPARTNAME",
		DIALOGELEMENTNAME = "X_DIALOGELEMENTNAME",
		DIALOGHTMLNAME = "X_DIALOGHTMLNAME",
		SCREENXMLFILENAME = "X_SCREENXMLFILENAME",
		DIALOGONBLURVALUE = "X_DIALOGONBLURVALUE",
		DIALOGFILTERSTRING = "X_DIALOGFILTERSTRING",
		PAGENUMBERSUFFIX =  "_PAGENUMBER",
		LISTROWINDEX = "listrowindex",
		DIALOGISQUICKFILTER = "X_DIALOGISQUICKFILTER";
	    DIALOGOLDVALUE = "X_DIALOGOLDVALUE";
		
	if( isQuickfilter === null || isQuickfilter === undefined)
	{
	    isQuickfilter = "0"
	}	
	var elementDescription = document.forms(0).elements(onBlur);
	var elementId = document.forms(0).elements(htmlName);
	var onBlurValue = elementDescription.value;
	var idValue = elementId.value;
	if (rtrim(idValue) == '')
	{
		elementDescription.value = '';
	}
	if ((rtrim(idValue) != '') && (elementDescription.value != elementId.description))
	{
		elementDescription.value = elementId.description;
	}
	if(idValue == elementId.oldValue)
	{
		elementId.value = '';
		if(onBlurValue == elementId.oldDesc)
		{
			onBlurValue = '';
		}
	}
	
	var sFeatures = 'dialogHeight:' + height + 'px;dialogWidth:' + width + 'px;center:yes;resizable:yes;scroll:no;status:no';
	// var filterString = getfiltervalues(filterStr);
	getfiltervalues(filterStr);
	var searchObject = new Object();
	searchObject.returnElement = document.forms(0).elements(htmlName);
	searchObject.parentWindow = window;
	var searchdialogmode = 'Popup';
	if (elementId.searchdialogmode != null)
	{
	    searchdialogmode = elementId.searchdialogmode;
	}
	    
	
	var params  = 'Title=' + title;
		params += '&' + SCREENXMLFILENAME + '=' + xmlFile; 
		params += '&' + DIALOGSCREENPARTNAME + '=' + screenPartName;
		params += '&' + DIALOGELEMENTNAME + '=' + elementName;
		params += '&' + DIALOGHTMLNAME + '=' + htmlName;
		params += '&' + DIALOGONBLURVALUE + '=' + encodeURI(onBlurValue);
		// params += '&' + DIALOGFILTERSTRING + '=' + encodeURIComponent(filterString);
		params += '&' + screenPartName + PAGENUMBERSUFFIX + '=' + listCurrentPage;
		params += '&' + LISTROWINDEX + '=' + listRowIndex;
		params += '&' + DIALOGISQUICKFILTER + '=' + isQuickfilter;
	    params += '&' + DIALOGOLDVALUE + '=' + encodeURI(elementId.oldValue);  
	    
	params = addDynamicScPartFilename(screenPartName,params);
	 	
	var httpPostResult = HttpPost();
	
    if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
	{
        if (searchdialogmode == 'SamePage')
        {
            openYahooSearchDialog(page, params, elementId, searchObject, width, height);
        }
        else
        {
            openPopupModal('PopupUrl.aspx?Page=' + page + '&Url=' + encodeURIComponent(params),
                searchObject,
                sFeatures, 
                false);
//             if(elementDescription.value!=null && elementDescription.value!='')
			{
				elementDescription.style.backgroundColor = BACKCOLOR_BLUR;
				disableElementFocusChange = 0;
			}
        }
	}
	else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	{
	    GotoLoginPage();
	}
	else
	{
	    alert(httpPostResult);
	}
}

function openYahooSearchDialog(page, params, elementId, searchObject, width, height)
{
    var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlHttp.open("POST", 'PopupUrl.aspx?Page=' + page + '&Url=' + encodeURIComponent(params), false);
    xmlHttp.send();
    if(xmlHttp.responseText.indexOf("lblSessionTimeOut") > 0 
        && xmlHttp.responseText.indexOf("xmlHttp.responseText.indexOf(\"lblSessionTimeOut\")") < 0)
    {
        return msg[MSG_HTTPPOSTERROR];
    }
    else
    {
        var SPLIT = '~';    	    
        var definition = elementId.caption.split(SPLIT);	
        
        var responseHTML = xmlHttp.responseText;
        initSearchPopup(definition, responseHTML, searchObject, width, height);				    			    			            	    
        YAHOO.example.container.searchdialog.show();
    }
}

/*
    This method is executed when the description input text control
    in a search element with quick search loses focus.
*/
function QuickSearchOnBlur(htmlName, onBlur)
{
    var elementDescription = document.forms(0).elements(onBlur);
	var elementId = document.forms(0).elements(htmlName);
	var idValue = elementId.value;
	
	if ((rtrim(idValue) == '') && (elementDescription.value != ''))
	{	    
	    elementId.description = '';
	    elementDescription.value = '';
	}
	
	ElementLostFocus();
}

function showThrobber( targetElement, throbberImg )
{
	var elm = targetElement || event.srcElement;
	
	if(elm != null)
	{
		with ($("div_throbber"))
		{
			if(throbberImg && throbberImg!='')
			{
				 $("img_throbber").src = throbberImg;
			}
			with ( firstChild )
			{
				height = elm.offsetHeight
				width  = height;
			}

			style.left   = getPositionX( elm ) + elm.offsetWidth - firstChild.width;
			style.top    = getPositionY( elm );

			style.visibility = 'visible';
		}
	}
}

function hideThrobber()
{
	$( "div_throbber" ).style.visibility = 'hidden';
}

var deferParms = null;
var deferTimer = null;
function deferQuickSearch( args )
{
    if ( null !== deferTimer )
    {
        window.clearTimeout( deferTimer );
        deferTimer = null;
    }
    else
    {
		showThrobber( event.srcElement );
    }

    deferParms = { // i love JSON
        _page           : args[ 0  ],
        _title          : args[ 1  ],
        _xmlFile        : args[ 2  ],
        _screenPartName : args[ 3  ],
        _elementName    : args[ 4  ],
        _htmlName       : args[ 5  ],
        _onBlur         : args[ 6  ],
        _filterStr      : args[ 7  ],
        _width          : args[ 8  ],
        _height         : args[ 9  ],
        _listCurrentPage: args[ 10 ],
        _listRowIndex   : args[ 11 ],
        _srcElement     : event.srcElement
    };
    
    deferTimer = window.setTimeout( RunDeferredQuickSearch, 250 );
}

function RunDeferredQuickSearch()
{
    window.clearTimeout( deferTimer );
    deferTimer = null;
    with ( deferParms )
    {
        return openQuickSearchDeferred( _page, _title, _xmlFile, _screenPartName, _elementName, _htmlName, _onBlur, _filterStr, _width, _height, _listCurrentPage, _listRowIndex, _srcElement );
    }
}


function openQuickSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex )
{
    return deferQuickSearch( arguments );
}

function openQuickSearchDeferred(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex, _srcElement )
{
	var now = new Date();
	var NOCACHE = 'time=' + now.toUTCString();
	var DIALOGSCREENPARTNAME = "X_DIALOGSCREENPARTNAME",
		DIALOGELEMENTNAME = "X_DIALOGELEMENTNAME",
		DIALOGHTMLNAME = "X_DIALOGHTMLNAME",
		SCREENXMLFILENAME = "X_SCREENXMLFILENAME",
		DIALOGONBLURVALUE = "X_DIALOGONBLURVALUE",
		DIALOGFILTERSTRING = "X_DIALOGFILTERSTRING",
		PAGENUMBERSUFFIX =  "_PAGENUMBER",
		LISTROWINDEX = "listrowindex";
		
	var elementDescription = document.forms(0).elements(onBlur);
	var elementId = document.forms(0).elements(htmlName);
	var onBlurValue = elementDescription.value;
	var idValue = elementId.value;

	if ((rtrim(idValue) != '') && (elementDescription.value != elementId.description))
	{
	    elementId.value = '';
	    elementId.description = '';
	}
	// var filterString = getfiltervalues(filterStr);
	
	getfiltervalues(filterStr);
	disablesubmit(true);
	
	var searchObject = new Object();
	searchObject.returnElement = document.forms(0).elements(htmlName);
	searchObject.parentWindow = window;
	
	var params  = 'Title=' + title;
		params += '&' + SCREENXMLFILENAME + '=' + xmlFile; 
		params += '&' + DIALOGSCREENPARTNAME + '=' + screenPartName;
		params += '&' + DIALOGELEMENTNAME + '=' + elementName;
		params += '&' + DIALOGHTMLNAME + '=' + htmlName;
		params += '&' + DIALOGONBLURVALUE + '=' + encodeURI(onBlurValue);
		// params += '&' + DIALOGFILTERSTRING + '=' + encodeURIComponent(filterString);
		params += '&' + screenPartName + PAGENUMBERSUFFIX + '=' + listCurrentPage;
		params += '&' + LISTROWINDEX + '=' + listRowIndex;
		params += '&' + NOCACHE;
		
	var httpPostResult = HttpPost();
	
    if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
	{
	    var quickSearchdiv = document.getElementById('X_QUICKSEARCH');
	    
	    var src = null;
	    if ( event )
	        src = event.srcElement;
	    else
	        src = _srcElement;
	    
	    getResponseHttp(page + '?' +  params, quickSearchdiv, src );
	    quickSearchOpenerElement = elementDescription;
	    disablesubmit(false);
	}
	else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	{
	    GotoLoginPage();
	}
	else
	{
	    disablesubmit(false);
	    alert(httpPostResult);
	}
	hideThrobber();
}

var openByEnter = false;
var
    skipReturnKeyOnKeyUpForSearch = false;

function searchOnEnter(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex, isQuickFilter )
{
	//window.status = 'searchOnEnter'
	if(event.srcElement.readOnly == true)
	{
		return;
	}
	if (event.keyCode == 13)
	{
	    var iframe = $('X_QUICKSEARCH');
	    
	    if (( null != iframe ) && ( iframe.style.visibility != "hidden" ))
	    {
	        if ( null != grdDialog )
	        {
	            if ( grdDialogCurrentRow >= 0)
	            {
	                grdDialog.rows[ grdDialogCurrentRow ].click();
	                grdDialogCurrentRow = -1;
	                return;
	            }
	        }
	    }

	    skipReturnKeyOnKeyUpForSearch = true;
		var BUTTON = '_BUTTON';
		var onBlurValue = document.forms(0).elements(onBlur).value;
		if (onBlurValue == '')
		{
			document.forms(0).elements(htmlName).value = '';
			document.forms(0).elements(htmlName).description = '';
		}
		openByEnter = true;
		openPopupSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex, isQuickFilter );
		//document.forms(0).elements(onBlur).blur();
		openByEnter = false;
	}
}

function searchOnBlur(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex, isQuickFilter )
{
	//window.status = 'searchOnBlur'
	if (!openByEnter)
	{
		var onBlurValue = document.forms(0).elements(onBlur).value;
		if (onBlurValue == '')
		{
			document.forms(0).elements(htmlName).value = '';
			document.forms(0).elements(htmlName).description = '';
		}
		if ((onBlurValue != '') && (onBlurValue != document.forms(0).elements(htmlName).description))
			openPopupSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex,isQuickFilter );
	/*	alert(document.forms(0).elements(htmlName).value + '~' +
			document.forms(0).elements(htmlName).description + '~' +
			document.forms(0).elements(onBlur).value);*/
	}
}

function quickSearchOnKeyPress(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex, isQuickFilter )
{
	//window.status = 'searchOnEnter'
	var onblurObj = $(onBlur);
	if(onblurObj.readOnly)
	{
		return;
	}
	var onBlurValue = onblurObj.value;	
    var iframe = $('X_QUICKSEARCH');
	if (event.keyCode == 13)
	{
		iframe.style.visibility = "hidden";
		
		if ( false === skipReturnKeyOnKeyUpForSearch )
		{
		    var BUTTON = '_BUTTON';
		    if (onBlurValue == '')
		    {
			    $(htmlName).value = '';
			    $(htmlName).description = '';
		    }
		    openByEnter = true;
		    openPopupSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height, listCurrentPage, listRowIndex, isQuickFilter );
		    //document.forms(0).elements(onBlur).blur();
		    openByEnter = false;
        }
	}
	else
	{
	    if (onBlurValue != '')
	        switch (event.keyCode)
	        {
	            case KEYUP:
	            case KEYDOWN:
	                if(iframe.style.visibility != "visible")
	                {
	                    openQuickSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, listCurrentPage, listRowIndex );
	                }
	                else
	                {
	                    if ( event.keyCode == KEYDOWN )
	                        dialogKeyDown();
	                    else
	                        dialogKeyUp();
	                }
	                break;
	            case ESC:
	                break;
	            case TAB:
    		        iframe.style.visibility = 'hidden';		       
	                break;
	            default:
	                openQuickSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, null, null, listCurrentPage, listRowIndex );
	                break;
	        }
		else
		{
		    if(event.keyCode != KEYDOWN)
		    {
			    $(htmlName).value = '';
			    $(htmlName).description = '';
		        iframe.style.visibility = "hidden";
		    }
		    else
		    {
		        if(iframe.style.visibility != "visible")
                {
                    iframe.style.visibility = "visible";
                    openQuickSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, listCurrentPage, listRowIndex );
                }
                else
                {
                    iframe.focus();	                
                }
		    }
		}
	}
    skipReturnKeyOnKeyUpForSearch = true;
}

/*
************************************************************************************************
****************************************  L O A D         **************************************
************************************************************************************************
*/

function validate_load(elmLoad)
{
	try 
	{
		var hasError = false;
		var ID = "_ID";
		var elmId = elmLoad.form.elements(elmLoad.id + ID);
		var caption = elmId.caption;	
		
		//required 
		if (!hasError)
			if (CheckRequired(elmLoad))
				if (elmLoad.value == "")
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}
		
		if (hasError)
			TryFocus(elmLoad);
	}
	finally
	{
		return !hasError;
	}
}

function value_load(elmLoad)
{
	var SPLIT = '~';
	var ID = "_ID";
	var elmId = elmLoad.form.elements(elmLoad.id + ID);
	return controlValue(elmId.value + SPLIT + elmLoad.value, elmLoad.value);
}

function set_load(elmLoad, setvalue)
{
	if (setvalue != null)
	{
		var SPLIT = '~';
		var ID = "_ID";
		var elmId = elmLoad.form.elements(elmLoad.id + ID);
		elmId.value = setvalue.id.split(SPLIT)[0];
		elmLoad.value = setvalue.value;
		var screenPartName = elmLoad.screenpartname;
		if (submitLoad)
		{
			submitform(screenPartName, elmId.elementname, 'LB', false);
		}
	}
}

function reset_load(elmLoad)
{
	var ID = "_ID";
	var elmId = elmLoad.form.elements(elmLoad.id + ID);
	elmId.value = '';
	elmLoad.value = '';
}

function visible_load(element, value)
{
    value = value == "1" ? true : false;
    
	var BUTTON = '_BUTTON';
	var BUTTONDELETE = '_DELETE';	
	var elementLoadButton = document.getElementById(element.id + BUTTON);
	var elementDeleteButton = document.getElementById(element.id + BUTTONDELETE);
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
	visible_element(element, value);
	visible_element(getcaptionElement(element), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious );
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	//if the element is disabled, button shoulds be invisible
	value = element.readOnly ? "0" : value;
	visible_element(elementLoadButton, value);
	visible_element(elementDeleteButton, value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

function enable_load(element, value)
{
	var BUTTON = '_BUTTON';
	var BUTTONDELETE = '_DELETE';	
	var elementLoadButton = document.getElementById(element.id + BUTTON);
	var elementDeleteButton = document.getElementById(element.id + BUTTONDELETE);
	enable_general(element, value);
	value = element.readOnly ? "0" : "1";
	visible_element(elementLoadButton, value);
	visible_element(elementDeleteButton, value);
}

function clear_load(elementName)
{
    if(document.forms(0).elements(elementName).value != '')
        SetScreenChanged();
	document.forms(0).elements(elementName).value = '';
}

/*
	called when user clicks letter in search dialog box
*/
function submitLoadLetters(letter, htmlControlName, screenpartname, submittername, action, validateform)
{
	document.forms(0).elements(htmlControlName).value = letter;
	submitform( screenpartname, submittername, action, validateform );
}

var
    skipReturnKeyOnKeyUp = false;

function loadOnEnter(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height)
{
	//window.status = 'searchOnEnter'
	if (event.keyCode == 13)
	{
	    skipReturnKeyOnKeyUp = true;
		openPopupLoad(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height);
	}
}

function quickLoadOnKeyPress(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height)
{
	var onBlurValue = document.forms(0).elements(onBlur).value;
    var iframe = document.getElementById('X_QUICKSEARCH');
	if (event.keyCode == 13)
	{
	    if ( false === skipReturnKeyOnKeyUp )
	    {
		    openPopupLoad(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height);
		}
	}
	else
	{
	    if (onBlurValue != '')
	        switch (event.keyCode)
	        {
	            case KEYDOWN:
	                if(iframe.style.visibility != 'visible')
	                {
	                    openQuickSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr);
	                }
	                else
	                {
    		            iframe.focus();		       
    		        }
	                break;
	            case ESC:
	                break;
	            case TAB:
    		        iframe.style.visibility = 'hidden';		       
	                break;
	            default:
    		        openQuickSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr);
	                break;
	        }
		else
		{
		    if(event.keyCode != KEYDOWN)
		    {
			    document.forms(0).elements(htmlName).value = '';
			    document.forms(0).elements(htmlName).description = '';	
			    iframe.style.visibility = "hidden";	    
			}
			else
			{
			    if(iframe.style.visibility != 'visible')
	            {
		            iframe.style.visibility = "visible";
		            openQuickSearch(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr);
		        }
		        else
		        {
		            iframe.focus();
		        }
		    }
		}
	}
	skipReturnKeyOnKeyUp = false;
}

function openPopupLoad(page, title, xmlFile, screenPartName, elementName, htmlName, onBlur, filterStr, width, height)
{
	var DIALOGSCREENPARTNAME = "X_DIALOGSCREENPARTNAME",
		DIALOGELEMENTNAME = "X_DIALOGELEMENTNAME",
		DIALOGHTMLNAME = "X_DIALOGHTMLNAME",
		SCREENXMLFILENAME = "X_SCREENXMLFILENAME",
		DIALOGONBLURVALUE = "X_DIALOGONBLURVALUE",
		DIALOGFILTERSTRING = "X_DIALOGFILTERSTRING";
		
	var elementLoad = document.forms(0).elements(htmlName);
	var elementOnBlur = document.forms(0).elements(onBlur);
	var onBlurValue = elementOnBlur.value;
	var sFeatures = 'dialogHeight:' + height + 'px;dialogWidth:' + width + 'px;center:yes;resizable:yes;scroll:no;status:no;';
	// var filterString = getfiltervalues(filterStr);
	getfiltervalues(filterStr);
	var params  = 'Title=' + title;
		params += '&' + SCREENXMLFILENAME + '=' + xmlFile; 
		params += '&' + DIALOGSCREENPARTNAME + '=' + screenPartName;
		params += '&' + DIALOGELEMENTNAME + '=' + elementName;
		params += '&' + DIALOGHTMLNAME + '=' + htmlName;
		params += '&' + DIALOGONBLURVALUE + '=' + encodeURI(onBlurValue);
		// params += '&' + DIALOGFILTERSTRING + '=' + filterString;
	
	params = addDynamicScPartFilename(screenPartName,params);
	
	var httpPostResult = HttpPost();
	
    if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
	{
        if (elementLoad.searchdialogmode == 'SamePage')
        {
            openYahooSearchDialog(page, params, elementLoad, elementLoad, width, height);
        }
        else
        {
	        openPopupModal('PopupUrl.aspx?Page=' + page + '&Url=' + encodeURIComponent(params),
	                       elementLoad,
	                       sFeatures,
	                       false);
	    }
	}
	else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	{
	    GotoLoginPage();
	}
	else
	{
	    alert(httpPostResult);
	}
}

/*
************************************************************************************************
****************************************  U P L O A D     **************************************
************************************************************************************************
*/


function validate_upload(elmUpload)
{
	try 
	{
		var BLOBID = '_BLOBID';
		var hasError = false;
		var caption = elmUpload.caption;
		var elmBlobId = elmUpload.form.elements(elmUpload.id + BLOBID);
		
		//required 
		if (!hasError)
			if (CheckRequired(elmUpload))
				if (elmBlobId.value == "")
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}
	}
	finally
	{
		return !hasError;
	}
}

function visible_upload(element, value)
{
    value = value == "1" ? true : false;
    
	var BUTTONADD = '_ADD', TABLE = '_TABLE', UPLOADDIV = '_UPLOADDIV';
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
	visible_element(getcaptionElement(element), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious );
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	visible_element(document.getElementById(element.id + BUTTONADD), value);
	visible_element(document.getElementById(element.id + TABLE), value);
	visible_element(document.getElementById(element.id + UPLOADDIV), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
}

function enable_upload(element, value)
{
	var BUTTONADD = '_ADD', TABLE = '_TABLE';
	visible_element(document.getElementById(element.id + BUTTONADD), value);
	document.getElementById(element.id + TABLE).disabled = value == '0';
}

function addToUploadList(element, newValue)
{
	var SEPARATOR = ':';
	var oldValues;
	if (element.value == '')
		oldValues = new Array();
	else
		oldValues = element.value.split(SEPARATOR);
	oldValues.push(newValue);
	element.value = oldValues.join(SEPARATOR);
}

function deleteFromUploadList(element, index)
{
	var SEPARATOR = ':';
	var oldValues = element.value.split(SEPARATOR);
	var newValues = new Array();
	for (var i = 0; i < oldValues.length; i++)
	{
		if (i != index)
			newValues.push(oldValues[i]);
	}	
	element.value = newValues.join(SEPARATOR);
}

function addTableRowUpload(blobId, filename, elmUpload)
{
	var TABLE = '_TABLE';
	var BUTTONDELETE = '_DELETE';
	var table = document.all(elmUpload.id + TABLE);
	var title = elmUpload.caption;
	var newRow = table.insertRow();
	 	
	if (elmUpload.readonly != "1")
	{
		var firstCell = newRow.insertCell();
		firstCell.className = 'multipletext';
		firstCell.align = 'left';
		firstCell.innerHTML = '<img id=\"' + elmUpload.id + BUTTONDELETE + '\"' +
		                       ' src=\"images/attachmentCancel.gif\"' +
		                       ' alt=\"' + msg[MSG_BUTTONDELETE] + '\"' +
		                       ' border=\"0\"' +
		                       ' onclick=\"deleteUploadItem(\'' + elmUpload.id + '\',this);\">';
	}	
	SetScreenChanged();
	var secondCell = newRow.insertCell();
 	secondCell.className = 'multipletext';
	secondCell.innerHTML = '<a href=\"#\" onclick=\"openPopupUploadView(' + blobId + ',\'' + title + '\');\">' + filename + '</a>';

}

//returns the attribute value for MaxFileCount
function MaxCountProperty(elmUpload)
{
	var MAXFILECOUNT = "MaxFileCount";
	return elmUpload.getAttribute(MAXFILECOUNT);
}

//returns if the add button should be closed
function CanAddMoreFiles(elmUpload)
{
	var retval = true;
	var count = MaxCountProperty(elmUpload);	
	
	if(count > 0)
	{
		var attachmentcount = AttachmentCount(elmUpload);		
		if(attachmentcount >= count)
		{
			retval = false;
		}
	}
	
	return retval;
}


//returns the number of currently 
//existing attachments in the table
function AttachmentCount(elmUpload)
{
	var retval = 0;
	var TABLE = "_TABLE";
	var table = document.all(elmUpload.id + TABLE);
	if(table != null)
	{
		if(table.rows != null)
		{
			retval = table.rows.length;
		}
	}	
	return retval;
}

function addUploadItem(blobId, filename, elmUpload)
{
	var ID = '_ID';
	var BLOBID = '_BLOBID';
	var FILENAME = '_FILENAME';
	var elementId = elmUpload.form.elements(elmUpload.id + ID);
	var elementBlobId = elmUpload.form.elements(elmUpload.id + BLOBID);
	var elementFileName = elmUpload.form.elements(elmUpload.id + FILENAME);
	
	addToUploadList(elementId, '0'); // id = '' for new added elements
	addToUploadList(elementBlobId, blobId);
	addToUploadList(elementFileName, filename);
	addTableRowUpload(blobId, filename, elmUpload);					
}

function deleteUploadItem(elmUploadName, imageControl)
{
	var TABLE = '_TABLE';
	if (!document.getElementById(elmUploadName + TABLE).disabled)
	{
		if (confirm(msg[MSG_CONFIRMDELETE]))
		{
			var ID = '_ID';
			var BLOBID = '_BLOBID';
			var FILENAME = '_FILENAME';
			var elmUpload = document.forms(0).elements(elmUploadName);
			var elementId = elmUpload.form.elements(elmUpload.id + ID);
			var elementBlobId = elmUpload.form.elements(elmUpload.id + BLOBID);
			var elementFileName = elmUpload.form.elements(elmUpload.id + FILENAME);
			var index = imageControl.parentElement.parentElement.rowIndex;
			deleteFromUploadList(elementId, index);
			deleteFromUploadList(elementBlobId, index);
			deleteFromUploadList(elementFileName, index);
			deleteTableRowUpload(imageControl);				
			SetScreenChanged();		
		}
	}
}

function deleteTableRowUpload(imageControl)
{
	var tableRow = imageControl.parentElement.parentElement;
	var rowIndex = tableRow.rowIndex;
	var table = tableRow.parentElement;
	table.deleteRow(rowIndex);
} 

function openPopupUploadAdd(elmUploadName)
{
	var elmUpload = document.forms(0).elements(elmUploadName);
	if(CanAddMoreFiles(elmUpload))
	{	
		var SPLIT = '.';
		var ATTR_FILENAMESOURCE = "FileNameSource";
		var ATTR_FILENAMEVALUE = "FileNameValue";
		var ATTR_FILESIZE = "FileSize";
		var ATTR_FILEPATH = "FilePath";
		var ATTR_STORAGE = "Storage";
					
		var FILENAMESOURCE_FORM = "Form";
		var FILESYSTEM = "FileSystem";			
					
		var FileNameSource = elmUpload.getAttribute(ATTR_FILENAMESOURCE);
		var FileNameValue = elmUpload.getAttribute(ATTR_FILENAMEVALUE);
		var Storage = elmUpload.getAttribute(ATTR_STORAGE);
		var FilePath = elmUpload.getAttribute(ATTR_FILEPATH);
		var FileSize = elmUpload.getAttribute(ATTR_FILESIZE);
		
		if((FileNameSource == FILENAMESOURCE_FORM) && (FileNameValue != null) && (FileNameValue != ''))
		{								
			var screenpartname = FileNameValue.split(SPLIT)[0];
			var elementname = FileNameValue.split(SPLIT)[1];
			elementname = screenpartname + "_" + elementname;
			var element = document.getElementById(elementname);
					
			FileNameValue = GetElementValue(element);		
			FileNameValue = GetControlValue(FileNameValue);
		}
		
		
		if((Storage == FILESYSTEM) && ((FilePath == null) || (FilePath == '')))
		{
			
			alert(msg[MSG_FILEPATHREQUIRED]);
			return;
		}
				
		if((Storage == FILESYSTEM) && (FileNameSource == FILENAMESOURCE_FORM) && ((FileNameValue == null) || (FileNameValue == '')))
		{					
			alert(msg[MSG_FILENAMEREQUIRED]);
			return;
		}		
		
		var uploadObject = new Object();
		
		uploadObject.FileNameValue = FileNameValue;			
		uploadObject.elementUpload = elmUpload;
		uploadObject.callfunction = addUploadItem;
		uploadObject.FileNameSource = FileNameSource;
		uploadObject.MaxFileCount = MaxCountProperty(elmUpload);		
		uploadObject.AttachmentCount = AttachmentCount(elmUpload);
		uploadObject.FileSize = FileSize;
		
		var sFeatures = 'dialogHeight:380px;dialogWidth:420px;center:yes;resizable:yes;scroll:no;status:no;';
		var params  = 'Title=' + elmUpload.caption;
		var page = 'Upload.aspx';
        if (elmUpload.searchdialogmode == 'SamePage')
        {
            openYahooSearchDialog(page, params, elmUpload, uploadObject, "420px", "380px");
        }
        else
        {
		    openPopupModal('PopupUrl.aspx?Page=' + page + '&Url=' + encodeURIComponent(params),
					    uploadObject,
					    sFeatures,
					    false);
		}
	}		
}

function openPopupUploadView(blobId, title)
{
	var BLOBID = 'BlobId';
	var sFeatures = 'dialogHeight:400px;dialogWidth:400px;center:yes;resizable:yes;scroll:no;status:no;';
	var params  = 'Title=' + title;
	params += '&' + BLOBID + '=' + blobId;
	var page = 'ShowAttachment.aspx';
	var iframe = document.all('frmExcelUpload');
	iframe.src = page + '?' + params;
}

/*
************************************************************************************************
*************************************  M U L T I P L E  S E L E C T ****************************
************************************************************************************************
*/


function ResetPrimaryItem(elementname)
{	
	var DIV_TEXTCLASS = "multipletext";
	var DIV_PRIMARYITEM = "multipletextprimary";
	var DETAILID = "_DETAILID";
	var PRIMARYITEMID = "_PRIMARYITEMID";
	var SEP = ':';
	var SEARCHTEXTBOX = "_SEARCHTEXTBOX";
	var searchtextbox = document.all(elementname + SEARCHTEXTBOX);
	
	if(searchtextbox != null)
	{
	    if(searchtextbox.style.visibility == "hidden")
	    {
	        return;
	    }
	}
	else
	{
	    return;
	}	
	
	var detailIdElement = document.getElementById(elementname + DETAILID);
	var primaryItemElement = document.getElementById(elementname + PRIMARYITEMID);
	var detailIdElementValue = detailIdElement.value.split(SEP);
			
	var td = event.srcElement.parentElement;
	var span = td.children[0];
	var className = span.className;
			
	if(className == DIV_PRIMARYITEM)
	{		
		span.className = DIV_TEXTCLASS;
		primaryItemElement.value = '';
	}
	else
	{
		var rowIndex = td.parentNode.rowIndex;		
		var table = td.parentNode.parentNode.parentNode;
		var i = 0;
		
		for(i = 0; i < table.rows.length; i++)
		{
			if(i != rowIndex)
			{				
				table.rows[i].cells[1].children[0].className = DIV_TEXTCLASS;				
			}
			else
			{				
				table.rows[i].cells[1].children[0].className = DIV_PRIMARYITEM;
				primaryItemElement.value = detailIdElementValue[i];
			}
		}
	}
}

function searchMultipleOnEnter(buttonName)
{
	if (event.keyCode == 13)
	{
		var button = event.srcElement.form.all(buttonName);
		button.click();
	}
}

function submitMultipleSelectLetters(letter, htmlControlName, screenpartname, submittername, action, validateform)
{
	document.forms(0).elements(htmlControlName).value = letter;
	submitform( screenpartname, submittername, action, validateform );
}

function finditemInTwoArray(array1, array2, value)
{
	var index = -1;
	var SPLITVALUE = ':';
	for (var i = 0; i < array1.length; i++)
		if (array1[i] + SPLITVALUE + array2[i] == value)
		{
			index = i;
			break;
		}	
	return index;
}

function set_multipleselect(elmMultipleSearch, value)
{
	reset_multipleselect(elmMultipleSearch);
	if (value.id != '')
	{
		var PRIMARYID = '_PRIMARYID', DETAILID = '_DETAILID', PRIMARYITEMID = "_PRIMARYITEMID",
		ORIGINALPRIMARYITEMID = "_ORIGINALPRIMARYITEMID";	
		var SPLITTER = '::', SEPARATOR = ':', IDSPLITTER = '#', SPLIT = '~';
		var DIV_TEXTCLASS = "multipletext";
		var DIV_PRIMARYITEM = "multipletextprimary";
		
		if (value.id.indexOf(IDSPLITTER) >= 0)
		{
			var id = elmMultipleSearch.id;
			var elms = elmMultipleSearch.form.elements;
			var elmPrimaryId = elms(id + PRIMARYID);
			var elmDetailId = elms(id + DETAILID);
			var elmPrimaryItemId = elms(id + PRIMARYITEMID);
			var elmOriginalPrimaryItemId = elms(id + ORIGINALPRIMARYITEMID);

			if (value.id.indexOf(SPLIT) >= 0)
				value.id = value.id.substr(0, value.id.indexOf(SPLIT));
					
			var splittedIds = value.id.split(IDSPLITTER);
			elmPrimaryId.value = splittedIds[0];
			elmDetailId.value = splittedIds[1];
			
			var idArray = new Array();
			var detailidArray = new Array();
			var descriptionArray = new Array();
			if (splittedIds[0] != '')
			{
				idArray = splittedIds[0].split(SEPARATOR);
				detailidArray = splittedIds[1].split(SEPARATOR);
				descriptionArray = value.value.split(SPLITTER);		
			}

			var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
			var inputType = elmMultipleSearch.inputtype;
			var description;
			var detailId;
			
			if (idArray.length > 0)
			{
				if(inputType == INPUTTYPE_PICKUP)
				{
					var TABLE = '_TABLE';
					var table = document.all(elmMultipleSearch.id + TABLE);
					var tr, td;
					var primaryItemId = null;
					if(elmOriginalPrimaryItemId != null)
					{
						primaryItemId = elmOriginalPrimaryItemId.value;
						elmPrimaryItemId.value = elmOriginalPrimaryItemId.value;
					}
					for (var i = 0; i < idArray.length; i++)
					{
						detailId = detailidArray[i];
						// add new row
						tr = table.insertRow();
						
						// button delete
						td = tr.insertCell();
						td.className = "form";
						td.innerHTML = '<img id="' + id + '_DELETE" src="images/multiplelistcancel.gif" border="0"' + 
									' onclick="deleteMultipleSelectItem(\'' + id + '\',this);"' +
									' onmouseover="this.style.cursor=\'pointer\';"' + 
									' onmouseout="this.style.cursor=\'default\';">'; 
						td = null;
						
						// description cell
						td = tr.insertCell();						
						description = descriptionArray[i];
												
						if(elmMultipleSearch.PrimaryColumnName == '')
						{
 							td.className = DIV_TEXTCLASS;
 							td.innerHTML = description;
 						}
 						else
 						{ 	
 							var primaryitemElement = document.all(elmMultipleSearch.id + PRIMARYITEMID); 							
 							var className = DIV_TEXTCLASS;
 							
 							if(primaryItemId != null)
 							{
 								if(detailId == primaryItemId)
 								{
 									className = DIV_PRIMARYITEM;
 								}
 							}
					 		
 							td.innerHTML = '<span unselectable=\"on\" class=\"' + className + '\" ondblclick=\"ResetPrimaryItem(\'' + elmMultipleSearch.id + '\');\">' + description + '</span>';
					 		
 						} 
 						
 						td = null;																		
						tr = null;	
					}
				}
				else if(inputType == INPUTTYPE_MULTIPLELIST)
				{
					var TYPE_MULTIPLELIST = "_MULTILIST";
					var combo = document.all(id + TYPE_MULTIPLELIST);
					var itemIndex;
					for(var i = 0; i < combo.options.length; i++)
					{
						itemIndex = finditemInTwoArray(idArray, detailidArray, combo.options[i].value);
						if (itemIndex >= 0)
							combo.options[i].selected = true;
					}
				}			
				else if(inputType == INPUTTYPE_CHECKBOX)
				{
					var TABLE = '_TABLE';
					var table = document.all(elmMultipleSearch.id + TABLE);
					var checkbox, itemIndex;
					for (var row = 0; row < table.rows.length; row++)
					{
						checkbox = table.rows[row].cells[0].children[0];
						itemIndex = finditemInTwoArray(idArray, detailidArray, checkbox.value);
						if (itemIndex >= 0)
							checkbox.checked = true;
					}		
				}
			}
		} 	
	}		
}

function compare_general( btElement, compareValue )
{
    return ( btElement.value( btElement ) == compareValue );
}

function compare_multileselect( elmMultipleSelect, compareValue )
{
    var SPLITTER = ':', IDSPLITTER = '#';
    
    if ( null === compareValue )
        return false;
    
    var includePrimaryKey = compareValue.indexOf( IDSPLITTER );

    var elementValue = format_valueOf_multiselect( elmMultipleSelect.value( elmMultipleSelect ), includePrimaryKey );
        compareValue = format_valueOf_multiselect( compareValue, includePrimaryKey );
        
    return ( elementValue === compareValue );
}

function format_valueOf_multiselect( stringValue, includePrimaryValue )
{
    var SPLITTER = ':', IDSPLITTER = '#';
    
    var sValue = String( stringValue );

    var nPos = sValue.indexOf( IDSPLITTER );
    var hasPrimaryId = ( nPos >= 0 );

    var primaryValue = "";
    var returnValue = "";
    var values;
    
    if ( hasPrimaryId )
    {
        primaryValue = sValue.substring( 0, nPos );
        sValue = sValue.substring( nPos + 1 );
    }
    
    values = sValue.split( SPLITTER );
    
    values.sort( values, function ( a, b )
    {
        return a - b;
    });
    
    sValue = values.join( SPLITTER );
    
    returnValue += ( hasPrimaryId && includePrimaryValue ) ? primaryValue + IDSPLITTER : "";
    returnValue += sValue;
    
    return returnValue;
}

function ScreenPartOfElement( btElement )
{
    var SPLIT = "_";
    
    if ( null === btElement )
        return null;
    
    var a = btElement.id.split( SPLIT ); 
    
    return a[ 0 ];
}

function GetElementName( btElement )
{
    var SPLIT = "_";
    
    if ( null === btElement )
        return null;
    
    var a = btElement.id.split( SPLIT ); 
    
    return a[ 1 ];
}

function resolve_idcode( elmSearch )
{
    if (( null === elmSearch.idcode ) || ( undefined === elmSearch.idcode ) && elmSearch.value !== "" )
    {

        var ajax = new Tigris.Ajax.AjaxClient( "AjaxFunctions.aspx" );

        ajax.AddUrlParameter( "Function",   "GetIDCode" );
        ajax.AddUrlParameter( "Screen",     $("X_SCREENXMLFILENAME").value );
        ajax.AddUrlParameter( "ScreenPart", ScreenPartOfElement( elmSearch ));
        ajax.AddUrlParameter( "Element",    GetElementName( elmSearch ));
        ajax.AddUrlParameter( "Value",      elmSearch.value );
        
        if ( ajax.Send() )
        {
            if ( ajax.IsSuccess() )
            {
                var xmlDoc = ajax.GetXmlDoc();
                var idCode = xmlDoc.selectSingleNode( "/Result" ).text;
                elmSearch.idcode = idCode;
            }
        }
        
    }
}

function compare_search_idcode( elmSearch, compareValue )
{
    var SPLIT = '~';
    
    if ( null === compareValue )
        return false;
    
    resolve_idcode( elmSearch );
    
    return ( elmSearch.idcode == compareValue );
}

function compare_general( btElement, compareValue )
{
    return ( btElement.value( btElement ) == compareValue );
}

function compare_mulpileselect( elmMultipleSelect, compareValue )
{
    var SPLITTER = ':', IDSPLITTER = '#';
    
    if ( null === compareValue )
        return false;
    
    var includePrimaryKey = compareValue.indexOf( IDSPLITTER );

    var elementValue = format_valueOf_multiselect( elmMultipleSelect.value( elmMultipleSelect ), includePrimaryKey );
        compareValue = format_valueOf_multiselect( compareValue, includePrimaryKey );
        
    return ( elementValue === compareValue );
}

function format_valueOf_multiselect( stringValue, includePrimaryValue )
{
    var SPLITTER = ':', IDSPLITTER = '#';
    
    var sValue = String( stringValue );

    var nPos = sValue.indexOf( IDSPLITTER );
    var hasPrimaryId = ( nPos >= 0 );

    var primaryValue = "";
    var returnValue = "";
    var values;
    
    if ( hasPrimaryId )
    {
        primaryValue = sValue.substring( 0, nPos );
        sValue = sValue.substring( nPos + 1 );
    }
    
    values = sValue.split( SPLITTER );
    
    values.sort( values, function ( a, b )
    {
        return a - b;
    });
    
    sValue = values.join( SPLITTER );
    
    returnValue += ( hasPrimaryId && includePrimaryValue ) ? primaryValue + IDSPLITTER : "";
    returnValue += sValue;
    
    return returnValue;
}


function value_multipleselect(elmMultipleSelect)
{
	var PRIMARYID = '_PRIMARYID', DETAILID = '_DETAILID';
	var SPLITTER = '::', IDSPLITTER = '#';
	var id = elmMultipleSelect.id;
	var elms = elmMultipleSelect.form.elements;
	var elmPrimaryId = elms(id + PRIMARYID);
	var elmDetailId = elms(id + DETAILID);	
	
	var idValues = elmPrimaryId.value;
	var detailidValues = elmDetailId.value;
	var descriptions = '';
	
	var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
	var inputType = elmMultipleSelect.inputtype;
		
	if(inputType == INPUTTYPE_PICKUP)
	{
		var TABLE = '_TABLE';
		var table = document.all(elmMultipleSelect.id + TABLE);
		var itemDescIndex = 1;
		
		if(table.rows.length>0 && table.rows[0].cells.length==1)
		{
		    itemDescIndex = 0;
		}		
		for (var row = 0; row < table.rows.length; row++)
		{
			descriptions += (row > 0 ? SPLITTER : '') + table.rows[row].cells[itemDescIndex].innerText;
		}
	}
	else if(inputType == INPUTTYPE_MULTIPLELIST)
	{
		var TYPE_MULTIPLELIST = '_MULTILIST';
		var combo = document.all(elmMultipleSelect.id + TYPE_MULTIPLELIST);
		var firstItem = true;
		for(var i = 0; i < combo.options.length; i++)
			if (combo.options[i].selected)
			{
				descriptions += (firstItem ? '' : SPLITTER) + combo.options[i].text;
				firstItem = false;
			}
	}
	else if(inputType == INPUTTYPE_CHECKBOX)
	{
		var TABLE = '_TABLE';
		var table = document.all(elmMultipleSelect.id + TABLE);
		var checkbox;
		for (var row = 0; row < table.rows.length; row++)
		{
			checkbox = table.rows[row].cells[0].children[0];
			if (checkbox.checked)
			{
				descriptions += (firstItem ? '' : SPLITTER) + ltrim(table.rows[row].cells[1].innerText);
				firstItem = false;
			}
		}		
	}
	return controlValue(idValues + IDSPLITTER + detailidValues, descriptions);
		
/*	
	var id = elmMultipleSelect.id;
	var SEPARATOR = ':', COMMA = '^COMMA^';
	var PRIMARYID = '_PRIMARYID';
	var DETAILID = '_DETAILID';
	var elms = elmMultipleSelect.form.elements;
	var elmPrimaryId = elms(id + PRIMARYID).value;
	elmPrimaryId = replaceall(elmPrimaryId, SEPARATOR, COMMA);
	var elmDetailId = elms(id + DETAILID).value;
	elmDetailId = replaceall(elmDetailId, SEPARATOR, COMMA);
	return controlValue(elmPrimaryId,elmDetailId);
*/
}

function enable_multipleselect(elmMultipleSelect, value)
{
	if (elmMultipleSelect != null)
	{
		elmMultipleSelect.readOnly = value == '0';

		var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
		var inputType = elmMultipleSelect.inputtype;
			
		if(inputType == INPUTTYPE_PICKUP)
		{
			var TABLE = '_TABLE', BUTTONADD = '_ADD', SEARCHTEXTBOX = '_SEARCHTEXTBOX';
			visible_element(document.all(elmMultipleSelect.id + BUTTONADD), value);
			visible_element(document.all(elmMultipleSelect.id + SEARCHTEXTBOX), value);
			var table = document.all(elmMultipleSelect.id + TABLE);
			for (var row = 0; row < table.rows.length; row++)
				visible_element(table.rows[row].cells[0].children[0], value);
		}
		else if(inputType == INPUTTYPE_MULTIPLELIST)
		{	
			var TYPE_MULTIPLELIST = '_MULTILIST';
			var combo = document.all(elmMultipleSelect.id + TYPE_MULTIPLELIST);
			combo.disabled = (value == '0');
		}
		else if(inputType == INPUTTYPE_CHECKBOX)
		{
			for(index = 0; index < document.forms(0).elements(elmMultipleSelect.id + TYPE_CHECKBOX).length; index++)
				document.forms(0).elements(elmMultipleSelect.id + TYPE_CHECKBOX, index).readOnly = (value == "0");
		}
		disableStyle(elmMultipleSelect);		
	}
}

function visible_multipleselect(elmMultipleSelect, value)
{
    value = value == "1" ? true : false;

	var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
	var inputType = elmMultipleSelect.inputtype;
	var keepWithPrevious = CheckKeepWithPrevious( elmMultipleSelect );
	
	if(inputType == INPUTTYPE_PICKUP)
	{
		var TABLE = '_TABLE', BUTTONADD = '_ADD', SEARCHTEXTBOX = '_SEARCHTEXTBOX', MLDIV = '_MLDIV';
		visible_element(document.all(elmMultipleSelect.id + BUTTONADD), value);
		visible_element(document.all(elmMultipleSelect.id + SEARCHTEXTBOX), value);
		var table = document.all(elmMultipleSelect.id + TABLE);		
		visible_element(table, value);
		
		var div = document.all(elmMultipleSelect.id + MLDIV);		
		visible_element(div, value);		
	}
	else if(inputType == INPUTTYPE_MULTIPLELIST)
	{
		var TYPE_MULTIPLELIST = '_MULTILIST';
		var combo = document.all(elmMultipleSelect.id + TYPE_MULTIPLELIST);
		visible_element(combo, value);
	}
	else if(inputType == INPUTTYPE_CHECKBOX)
	{
		for(index = 0; index < document.forms(0).elements(elmMultipleSelect.id + TYPE_CHECKBOX).length; index++)
			visible_element(document.forms(0).elements(elmMultipleSelect.id + TYPE_CHECKBOX, index), value);
	}	
	
	visible_element(getcaptionElement(elmMultipleSelect), value && !keepWithPrevious );
	visible_element(getpostcaptionElement(elmMultipleSelect), value && !keepWithPrevious );
	visible_element(gettooltipElement(elmMultipleSelect), value);
	visible_element(getretainValueElement(elmMultipleSelect), value);
	if(CheckRequired(elmMultipleSelect))
	{
		visible_element(getRequiredSymbolElement(elmMultipleSelect), value); 
	}
}

function reset_multipleselect(elmMultipleSelect)
{
      var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
      var PRIMARYID = '_PRIMARYID';
      var DETAILID = '_DETAILID';
      var DETAILIDDESCRIPTION = '_DETAILIDDESCRIPTION';
      var TYPE_CHECKBOX = '_CHECKBOX';
      var TYPE_MULTIPLELIST = '_MULTILIST';
      
      var elms = elmMultipleSelect.form.elements;
      var elmPrimaryId = document.all(elmMultipleSelect.id + PRIMARYID);
      var elmDetailId = document.all(elmMultipleSelect.id + DETAILID);
      var elmDetailIdDescription = document.all(elmMultipleSelect.id + DETAILIDDESCRIPTION);
            
      elmMultipleSelect.value = '';
      elmPrimaryId.value = '';
      elmDetailId.value = '';
      elmDetailIdDescription.value = '';
      
      var inputType = elmMultipleSelect.inputtype;
            
      if(inputType == INPUTTYPE_PICKUP)
      {
            var TABLE = '_TABLE';
            var table = document.all(elmMultipleSelect.id + TABLE);
            while(table.rows.length > 0)
                  table.deleteRow(0);
      }
      else if(inputType == INPUTTYPE_MULTIPLELIST)
      {
            var TYPE_MULTIPLELIST = '_MULTILIST';
            var combo = document.all(elmMultipleSelect.id + TYPE_MULTIPLELIST);
            for(var i = 0; i < combo.options.length; i++)
                  combo.options[i].selected = false;
      }
      else if(inputType == INPUTTYPE_CHECKBOX)
      {
            for(index = 0; index < document.forms(0).elements(elmMultipleSelect.id + TYPE_CHECKBOX).length; index++)
                  document.forms(0).elements(elmMultipleSelect.id + TYPE_CHECKBOX, index).checked = false;
      }
}

function validate_multipleselect(elmMultipleSelect)
{
	try 
	{
		var DETAILID = '_DETAILID';
		var PRIMARYITEMID = "_PRIMARYITEMID";
		
		var hasError = false;
		var caption = elmMultipleSelect.caption;
		var elmDetailId = elmMultipleSelect.form.elements(elmMultipleSelect.id + DETAILID);
		var elmPrimaryItemId = elmMultipleSelect.form.elements(elmMultipleSelect.id + PRIMARYITEMID);
		
		//required 
		if (!hasError)
			if (CheckRequired(elmMultipleSelect))
				if (elmDetailId.value == "")
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}
		
		//PrimaryColumnRequired 
		if (!hasError)
		{
			if (elmDetailId.value != "")
			{
				if (CheckPrimaryColumnRequired(elmMultipleSelect))
				{					
					if((elmPrimaryItemId == null) || ((elmPrimaryItemId != null) && (elmPrimaryItemId.value == "")))
					{
						hasError = true;
						alert (caption  + ': ' + msg[MSG_PRIMARYCOLUMNREQUIRED]);
					}
				}
			}
		}
	}
	finally
	{		
		return !hasError;
	}
}

function addToMultipleSelect(element, newValue)
{
	var SEPARATOR = ':';
	var oldValues;
	if (element.value == '')
		oldValues = new Array();
	else
		oldValues = element.value.split(SEPARATOR);
	oldValues.push(newValue);
	element.value = oldValues.join(SEPARATOR);
	SetScreenChanged();
}

function deleteFromMultipleSelect(element, index)
{	
	var SEPARATOR = ':';
	var PRIMARYITEMID = "_PRIMARYITEMID";
	var oldValues = element.value.split(SEPARATOR);
	var newValues = new Array();
	for (var i = 0; i < oldValues.length; i++)
	{
		if (i != index)
		{
			newValues.push(oldValues[i]);
		}		
	}	
	element.value = newValues.join(SEPARATOR);
}


function addTableRowMultipleSelect(detailId, description, elmMultipleSelect)
{
	var DIV_TEXTCLASS = "multipletext";
	var DIV_PRIMARYITEM = "multipletextprimary";
	var DETAILID = "_DETAILID";
	var PRIMARYITEMID = "_PRIMARYITEMID";	
	
	var TABLE = '_TABLE';
	var BUTTONDELETE = '_DELETE';
	var table = document.all(elmMultipleSelect.id + TABLE);
	var title = elmMultipleSelect.caption;
	var newRow = table.insertRow();
 	 	
	if (elmMultipleSelect.readonly != "1")
	{
		var firstCell = newRow.insertCell();
		firstCell.className = 'multipletext';
		firstCell.align = 'left';
		firstCell.innerHTML = '<img id=\"' + elmMultipleSelect.id + BUTTONDELETE + '\"' +
		                       ' src=\"images/multipleselectCancel.gif\"' +
		                       ' alt=\"' + msg[MSG_BUTTONDELETE] + '\"' +
		                       ' border=\"0\"' +
		                       ' onclick=\"deleteMultipleSelectItem(\'' + elmMultipleSelect.id + '\',this);\">';
	}	
	
	var secondCell = newRow.insertCell();
	
	if(elmMultipleSelect.PrimaryColumnName == '')
	{
 		secondCell.className = DIV_TEXTCLASS;
 		secondCell.innerHTML = description;
 	}
 	else
 	{ 	
 		var primaryitemElement = document.all(elmMultipleSelect.id + PRIMARYITEMID);
 		var primaryitemId = '';
 		if(primaryitemElement != null)
 		{
 			primaryitemId = primaryitemElement.value;
 		}
 		var className = DIV_TEXTCLASS;
 		if(primaryitemId != '')
 		{
 			if(detailId == primaryitemId)
 			{
 				className = DIV_PRIMARYITEM;
 			}
 		}
 		
 		secondCell.innerHTML = '<span unselectable=\"on\" class=\"' + className + '\" ondblclick=\"ResetPrimaryItem(\'' + elmMultipleSelect.id + '\');\">' + description + '</span>';
 		
 	} 		
}

function addMultipleSelectItem(detailId, description, elmMultipleSelect)
{
	if (detailId == null)
	{
		eval(elmMultipleSelect.reset + '(elmMultipleSelect);');
		return;
	}
	var PRIMARYID = '_PRIMARYID';
	var DETAILID = '_DETAILID';
	var DETAILIDDESCRIPTION = "_DETAILIDDESCRIPTION";

	//alert(elmMultipleSelect.id);

	var elementPrimaryId = elmMultipleSelect.form.elements(elmMultipleSelect.id + PRIMARYID);
	var elementDetailId = elmMultipleSelect.form.elements(elmMultipleSelect.id + DETAILID);
	var elementDetailIdDescription = elmMultipleSelect.form.elements(elmMultipleSelect.id + DETAILIDDESCRIPTION);
	
	addToMultipleSelect(elementPrimaryId, '0'); // id = '' for new added elements
	addToMultipleSelect(elementDetailId, detailId);
	addToMultipleSelect(elementDetailIdDescription, description);
	addTableRowMultipleSelect(detailId, description, elmMultipleSelect);
}

function deleteMultipleSelectItem(elmMultipleSelectName, imageControl)
{
	if (confirm(msg[MSG_CONFIRMDELETE]))
	{
		var PRIMARYID = '_PRIMARYID';
		var DETAILID = '_DETAILID';
		var PRIMARYITEMID = '_PRIMARYITEMID';
		var DETAILIDDESCRIPTION = "_DETAILIDDESCRIPTION";
		var SPLIT = ':';
		
		var elmMultipleSelect = document.forms(0).elements(elmMultipleSelectName);
		var elementPrimaryId = elmMultipleSelect.form.elements(elmMultipleSelect.id + PRIMARYID);
		var elementDetailId = elmMultipleSelect.form.elements(elmMultipleSelect.id + DETAILID);
		var elementDetailIdDescription = elmMultipleSelect.form.elements(elmMultipleSelect.id + DETAILIDDESCRIPTION);
		var index = imageControl.parentElement.parentElement.rowIndex;
		
		deleteFromMultipleSelect(elementPrimaryId, index);
		
		
		if(elmMultipleSelect.PrimaryColumnName != '')
		{
			var deletedId = elementDetailId.value.split(SPLIT)[index];
			var elementPrimaryItemId = elmMultipleSelect.form.elements(elmMultipleSelect.id + PRIMARYITEMID);
			if(elementPrimaryItemId != null)
			{
				if(elementPrimaryItemId.value == deletedId)
				{
					elementPrimaryItemId.value = '';
				}
			}
		}
		
		deleteFromMultipleSelect(elementDetailId, index);
		deleteFromMultipleSelect(elementDetailIdDescription, index);
		
		deleteTableRowMultipleSelect(imageControl);
		SetScreenChanged();
	}
}

function deleteTableRowMultipleSelect(imageControl)
{
	var tableRow = imageControl.parentElement.parentElement;
	var rowIndex = tableRow.rowIndex;
	var table = tableRow.parentElement;
	table.deleteRow(rowIndex);
} 

function updateMultipleSelectItemsCheckBox(elmMultipleSelectName)
{
	var TYPE_CHECKBOX = '_CHECKBOX';
	var PRIMARYID = '_PRIMARYID';
	var DETAILID = '_DETAILID';
	var SEPARATOR = ':';
	var itemValue; 
	var elementPrimaryId = document.forms(0).elements(elmMultipleSelectName + PRIMARYID);
	var elementDetailId = document.forms(0).elements(elmMultipleSelectName + DETAILID);
	var primaryIds = '';
	var detailIds = '';
	var index;
	var item;

	for(index = 0; index < document.forms(0).elements(elmMultipleSelectName + TYPE_CHECKBOX).length; index++)
	{
		item = document.forms(0).elements(elmMultipleSelectName + TYPE_CHECKBOX, index);
		if (item.checked)
		{
			itemValue = item.value.split(SEPARATOR);
			primaryIds += (primaryIds != '' ? SEPARATOR : '') + itemValue[0];
			detailIds += (detailIds != '' ? SEPARATOR : '') + itemValue[1];
		}
	}
	
	elementPrimaryId.value = primaryIds;
	elementDetailId.value = detailIds;
}

function updateMultipleSelectItemsList(elmMultipleSelectName)
{
	var TYPE_MULTIPLELIST = '_MULTILIST';
	var PRIMARYID = '_PRIMARYID';
	var DETAILID = '_DETAILID';
	var SEPARATOR = ':';
	var itemValue; 
	var elementList = document.forms(0).elements(elmMultipleSelectName + TYPE_MULTIPLELIST);
	var elementPrimaryId = document.forms(0).elements(elmMultipleSelectName + PRIMARYID);
	var elementDetailId = document.forms(0).elements(elmMultipleSelectName + DETAILID);
	var primaryIds = '';
	var detailIds = '';
	var index;
	var item;
	
	for (index = 0; index < elementList.length; index++)
	{
		item = elementList.options[index];
		if (item.selected)
		{
			itemValue = item.value.split(SEPARATOR);
			primaryIds += (primaryIds != '' ? SEPARATOR : '') + itemValue[0];
			detailIds += (detailIds != '' ? SEPARATOR : '') + itemValue[1];
		}
	}
	elementPrimaryId.value = primaryIds;
	elementDetailId.value = detailIds;
}

function openPopupMultipleSelectAdd(page, title, xmlFile, screenPartName, elementName, elmMultipleSelectName, filterStr, width, height,tableName,parentTableName)
{
	var DIALOGSCREENPARTNAME = "X_DIALOGSCREENPARTNAME",
	DIALOGELEMENTNAME = "X_DIALOGELEMENTNAME",
	DIALOGONBLURVALUE = "X_DIALOGONBLURVALUE",
	DIALOGHTMLNAME = "X_DIALOGHTMLNAME",
	SCREENXMLFILENAME = "X_SCREENXMLFILENAME",
	DIALOGFILTERSTRING = "X_DIALOGFILTERSTRING",
	SELECTEDITEMS = "SelectedItems",
	SELECTEDITEMDESCRIPTIONS = "SelectedItemDescriptions",
	SUBTABLENAME = "X_TABLENAME",
	PARENTTABLENAME = "X_PARENTTABLENAME";
	// var filterString = getfiltervalues(filterStr);
	
	getfiltervalues(filterStr);		
	
	var DETAILID = '_DETAILID';
	var DETAILIDDESCRIPTION = '_DETAILIDDESCRIPTION';
	var SEARCHTEXTBOX = '_SEARCHTEXTBOX';
	var elmMultipleSelect = document.forms(0).elements(elmMultipleSelectName);
	var elmDetailId = document.forms(0).elements(elmMultipleSelectName + DETAILID);
	var elmDetailIdDescriptions = document.forms(0).elements(elmMultipleSelectName + DETAILIDDESCRIPTION);
	var elmSearchText = document.forms(0).elements(elmMultipleSelectName + SEARCHTEXTBOX);
	var onBlurValue = elmSearchText.value;
	var searchdialogmode = elmMultipleSelect.searchdialogmode;
	elmSearchText.value = '';
	var MultipleSelectObject = new Object();
	MultipleSelectObject.elementMultipleSelect = elmMultipleSelect;
	MultipleSelectObject.callfunction = addMultipleSelectItem;
	MultipleSelectObject.parentWindow = window;
	var sFeatures = 'dialogHeight:' + height + 'px;dialogWidth:' + width + 'px;center:yes;resizable:yes;scroll:no;status:no;';
	var params  = 'Title=' + title;
	params += '&' + SCREENXMLFILENAME + '=' + xmlFile; 
	params += '&' + DIALOGSCREENPARTNAME + '=' + screenPartName;
	params += '&' + DIALOGELEMENTNAME + '=' + elementName;
	params += '&' + DIALOGONBLURVALUE + '=' + encodeURI(onBlurValue);
	
	params = addDynamicScPartFilename(screenPartName,params);
	if(tableName != null && tableName != '')              
	{
	    params += '&' + SUBTABLENAME + '=' + tableName;	    
	}
	if(parentTableName != null && parentTableName != '')              
	{
	    params += '&' + PARENTTABLENAME + '=' + parentTableName;	    
	}              
	AddRequestItem(SELECTEDITEMS, elmDetailId.value);
	AddRequestItem(SELECTEDITEMDESCRIPTIONS, elmDetailIdDescriptions.value);
	var xmlNode = HttpPostDocument.documentElement;
	parameterIndex = GetParamCounterInd();
	xmlNode.setAttribute("id", parameterIndex);
    params += '&' + PARAMCOUNTERIND + '='+ parameterIndex;
	var httpPostResult = HttpPost();
	
    if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
	{              
        if (searchdialogmode == 'SamePage')
        {
            openYahooSearchDialog(page, params, elmMultipleSelect, MultipleSelectObject, width, height);
        }
        else
        {
	        openPopupModal('PopupUrl.aspx?Page=' + page + '&Url=' + encodeURIComponent(params),
				        MultipleSelectObject,
				        sFeatures,
				        false);
	    }
	}
	else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	{
	    GotoLoginPage();
	}
	else
	{
	    alert(httpPostResult);
	}
}

/*
************************************************************************************************
*************************************  M U L T I P L E  L I S T ********************************
************************************************************************************************
*/

function submitMultipleListLetters(letter, htmlControlName, screenpartname, submittername, action, validateform)
{
	document.forms(0).elements(htmlControlName).value = letter;
	submitform( screenpartname, submittername, action, validateform );
}

function finditemInArray(array, value)
{
	var index = -1;
	for (var i = 0; i < array.length; i++)
		if (array[i] == value)
		{
			index = i;
			break;
		}
	return index;
}

function set_multiplelist(elmMultipleList, value)
{
	reset_multiplelist(elmMultipleList);
	if (value.id != '' && ( value.id !== '~' && value.value !== '' ))
	{
		var PRIMARYID = '_PRIMARYID';
		var SPLITTER = '::', SEPARATOR = ':', SPLIT = '~';

		if (value.id.indexOf(SPLIT) >= 0)
			value.id = value.id.substr(0, value.id.indexOf(SPLIT));

		var id = elmMultipleList.id;
		var elms = elmMultipleList.form.elements;
		var elmPrimaryId = elms(id + PRIMARYID);
		
		elmPrimaryId.value = value.id;
		
                var idArray = new Array();
		var descriptionArray = new Array();
		
		idArray = value.id.split(SEPARATOR);
		descriptionArray = value.value.split(SPLITTER);
		
		var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
		var inputType = elmMultipleList.inputtype;
		
		if (idArray.length > 0)
		{
			if(inputType == INPUTTYPE_PICKUP)
			{
				var TABLE = '_TABLE';
				var table = document.all(id + TABLE);
				var tr, td;
				for (var i = 0; i < idArray.length; i++)
				{
					// add new row
					tr = table.insertRow();
					
					// button delete
					td = tr.insertCell();
					td.className = "form";
					td.innerHTML = '<img id="' + id + '_DELETE" src="images/multiplelistcancel.gif" border="0"' + 
								' onclick="deleteMultipleListItem(\'' + id + '\',this);"' +
								' onmouseover="this.style.cursor=\'pointer\';"' + 
								' onmouseout="this.style.cursor=\'default\';">';
					td = null;
					
					// description cell
					td = tr.insertCell();
					td.className = "multipletext";
					td.innerText = descriptionArray[i];
					td = null;
										 
					
					tr = null;	
				}
			}
			else if(inputType == INPUTTYPE_MULTIPLELIST)
			{
				var TYPE_MULTIPLELIST = '_MULTILIST';
				var combo = document.all(id + TYPE_MULTIPLELIST);
				var itemIndex;
				for(var i = 0; i < combo.options.length; i++)
				{
					itemIndex = finditemInArray(idArray, combo.options[i].value);
					if (itemIndex >= 0)
						combo.options[i].selected = true;
				}
			}			
			else if(inputType == INPUTTYPE_CHECKBOX)
			{
				var TABLE = '_TABLE';
				var table = document.all(elmMultipleList.id + TABLE);
				var checkbox, itemIndex;
				for (var row = 0; row < table.rows.length; row++)
				{
					checkbox = table.rows[row].cells[0].children[0];
					itemIndex = finditemInArray(idArray, checkbox.value);
					if (itemIndex >= 0)
						checkbox.checked = true;
				}		
			}
		}
	}	
}

function value_multiplelist(elmMultipleList)
{
	var PRIMARYID = '_PRIMARYID';
	var SPLITTER = '::';
	var id = elmMultipleList.id;
	var elms = elmMultipleList.form.elements;
	var elmPrimaryId = elms(id + PRIMARYID);
	var idValues = elmPrimaryId.value;
	var descriptions = '';
	
	var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
	var inputType = elmMultipleList.inputtype;
		
	if(inputType == INPUTTYPE_PICKUP)
	{
		var TABLE = '_TABLE';
		var table = document.all(id + TABLE);
		for (var row = 0; row < table.rows.length; row++)
			descriptions += (row > 0 ? SPLITTER : '') + table.rows[row].innerText;
	}
	else if(inputType == INPUTTYPE_MULTIPLELIST)
	{
		var TYPE_MULTIPLELIST = '_MULTILIST';
		var combo = document.all(id + TYPE_MULTIPLELIST);
		var firstItem = true;
		for(var i = 0; i < combo.options.length; i++)
			if (combo.options[i].selected)
			{
				descriptions += (firstItem ? '' : SPLITTER) + combo.options[i].text;
				firstItem = false;
			}
	}
	else if(inputType == INPUTTYPE_CHECKBOX)
	{
		var TABLE = '_TABLE';
		var table = document.all(id + TABLE);
		var checkbox;
		for (var row = 0; row < table.rows.length; row++)
		{
			checkbox = table.rows[row].cells[0].children[0];
			if (checkbox.checked)
			{
				descriptions += (firstItem ? '' : SPLITTER) + ltrim(table.rows[row].cells[1].children[0].innerText);
				firstItem = false;
			}
		}		
	}
	return controlValue(idValues, descriptions);
		
/*	
	var SEPARATOR = ':', COMMA = '^COMMA^';
	var PRIMARYID = '_PRIMARYID';
	var elms = elmMultipleList.form.elements;
	var elmPrimaryId = elms(id + PRIMARYID);
	var tmpVal = new String();
	tmpVal = elmPrimaryId.value;
	tmpVal = replaceall(tmpVal, SEPARATOR, COMMA);	
	return controlValue(tmpVal, '');
*/
}

function enable_multiplelist(elmMultipleList, value)
{
	if (elmMultipleList != null)
	{
		elmMultipleList.readOnly = value == '0';

		var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
		var inputType = elmMultipleList.inputtype;
			
		if(inputType == INPUTTYPE_PICKUP)
		{
			var TABLE = '_TABLE', BUTTONADD = '_ADD', SEARCHTEXTBOX = '_SEARCHTEXTBOX';
			visible_element(document.all(elmMultipleList.id + BUTTONADD), value);
			visible_general(document.all(elmMultipleList.id + SEARCHTEXTBOX), value);
			var table = document.all(elmMultipleList.id + TABLE);
			for (var row = 0; row < table.rows.length; row++)
				visible_element(table.rows[row].cells[1].children[0], value);
		}
		else if(inputType == INPUTTYPE_MULTIPLELIST)
		{
			var TYPE_MULTIPLELIST = '_MULTILIST';		
			var combo = document.all(elmMultipleList.id + TYPE_MULTIPLELIST);
			combo.disabled = (value == '0');
		}
		else if(inputType == INPUTTYPE_CHECKBOX)
		{
			for(index = 0; index < document.forms(0).elements(elmMultipleList.id + TYPE_CHECKBOX).length; index++)
				document.forms(0).elements(elmMultipleList.id + TYPE_CHECKBOX, index).readOnly = (value == "0");
		}
		disableStyle(elmMultipleList);		
	}
}

function visible_multiplelist(elmMultipleList, value)
{
    value = value == "1" ? true : false;

	var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
	var inputType = elmMultipleList.inputtype;
	var keepWithPrevious = CheckKeepWithPrevious( elmMultipleList );
	
	if(inputType == INPUTTYPE_PICKUP)
	{
		var TABLE = '_TABLE', BUTTONADD = '_ADD', SEARCHTEXTBOX = '_SEARCH', MLDIV = '_MLDIV';
		visible_element(document.all(elmMultipleList.id + BUTTONADD), value);
		visible_element(document.all(elmMultipleList.id + SEARCHTEXTBOX), value);
		var table = document.all(elmMultipleList.id + TABLE);
		visible_element(table, value);
		
		var div = document.all(elmMultipleList.id + MLDIV);
		visible_element(div, value);
	}
	else if(inputType == INPUTTYPE_MULTIPLELIST)
	{
		var TYPE_MULTIPLELIST = '_MULTILIST';
		var combo = document.all(elmMultipleList.id + TYPE_MULTIPLELIST);
		visible_element(combo, value);
	}
	else if(inputType == INPUTTYPE_CHECKBOX)
	{
		for(index = 0; index < document.forms(0).elements(elmMultipleList.id + TYPE_CHECKBOX).length; index++)
			visible_element(document.forms(0).elements(elmMultipleList.id + TYPE_CHECKBOX, index), value);
	}	
	
	visible_element(getcaptionElement(elmMultipleList), value && !keepWithPrevious);
	visible_element(getpostcaptionElement(elmMultipleList), value && !keepWithPrevious);
	visible_element(gettooltipElement(elmMultipleList), value);
	visible_element(getretainValueElement(elmMultipleList), value);
	if(CheckRequired(elmMultipleList))
	{
		visible_element(getRequiredSymbolElement(elmMultipleList), value);
	} 
}

function reset_multiplelist(elmMultipleList)
{
      var INPUTTYPE_PICKUP = 'PickUp', INPUTTYPE_MULTIPLELIST = 'MultipleList', INPUTTYPE_CHECKBOX = 'CheckBox';
      var PRIMARYID = '_PRIMARYID';
      var PRIMARYIDDESCRIPTION = '_PRIMARYIDDESCRIPTION';
      var TYPE_CHECKBOX = '_CHECKBOX';
      var TYPE_MULTIPLELIST = '_MULTILIST';
      var SEPARATOR = ':';
      
      var elms = elmMultipleList.form.elements;
      var elmPrimaryId = elms(elmMultipleList.id + PRIMARYID);
      var elmPrimaryIdDescription = elms(elmMultipleList.id + PRIMARYIDDESCRIPTION);
      
      elmMultipleList.value = '';
      elmPrimaryId.value = '';
	if(elmPrimaryIdDescription != null)
	    elmPrimaryIdDescription.value = '';
      
      var inputType = elmMultipleList.inputtype;
      
      if(inputType == INPUTTYPE_PICKUP)
      {
            var TABLE = '_TABLE';
            var table = document.all(elmMultipleList.id + TABLE);
            while(table.rows.length > 0)
                  table.deleteRow(0);
      }
      else if(inputType == INPUTTYPE_MULTIPLELIST)
      {
            var combo = document.all(elmMultipleList.id + TYPE_MULTIPLELIST);
            for(var i = 0; i < combo.options.length; i++)
                  combo.options[i].selected = false;
      }
      else if(inputType == INPUTTYPE_CHECKBOX)
      {
            for(index = 0; index < document.forms(0).elements(elmMultipleList.id + TYPE_CHECKBOX).length; index++)
                  document.forms(0).elements(elmMultipleList.id + TYPE_CHECKBOX, index).checked = false;
      }     
}

function validate_multiplelist(elmMultipleList)
{
	try 
	{
		var PRIMARYID = '_PRIMARYID';
		var hasError = false;
		var caption = elmMultipleList.caption;
		var elmPrimaryId = elmMultipleList.form.elements(elmMultipleList.id + PRIMARYID);
		
		//required 
		if (!hasError)
			if (CheckRequired(elmMultipleList))
				if (elmPrimaryId.value == "")
				{
					hasError = true;
					alert (caption  + ': ' + msg[MSG_REQUIRED]);
				}
	}
	finally
	{
		return !hasError;
	}
}

function addToMultipleList(element, newValue, elementDescription, description)
{
	var SEPARATOR = ':';
	var oldValues;
	if (element.value == '')
		oldValues = new Array();
	else
		oldValues = element.value.split(SEPARATOR);
	oldValues.push(newValue);
	element.value = oldValues.join(SEPARATOR);

	if (elementDescription.value == '')
		oldValues = new Array();
	else
		oldValues = elementDescription.value.split(SEPARATOR);
	oldValues.push(description);
	elementDescription.value = oldValues.join(SEPARATOR);
}

function deleteFromMultipleList(element, index)
{
	var SEPARATOR = ':';
	var oldValues = element.value.split(SEPARATOR);
	var newValues = new Array();
	for (var i = 0; i < oldValues.length; i++)
	{
		if (i != index)
			newValues.push(oldValues[i]);
	}	
	element.value = newValues.join(SEPARATOR);
}


function addTableRowMultipleList(description, elmMultipleList)
{
	var TABLE = '_TABLE';
	var BUTTONDELETE = '_DELETE';
	var table = document.all(elmMultipleList.id + TABLE);
	var title = elmMultipleList.caption;
	var newRow = table.insertRow(); 	 	

	if (elmMultipleList.readonly != "1")
	{
		var firstCell = newRow.insertCell();
		firstCell.className = 'multipletext';
		firstCell.align = 'left';
		firstCell.innerHTML = '<img id=\"' + elmMultipleList.id + BUTTONDELETE + '\"' +
		                       ' src=\"images/multipleListCancel.gif\"' +
		                       ' alt=\"' + msg[MSG_BUTTONDELETE] + '\"' +
		                       ' border=\"0\"' +
		                       ' onclick=\"deleteMultipleListItem(\'' + elmMultipleList.id + '\',this);\">';
	}	
	
	var secondCell = newRow.insertCell();
 	secondCell.className = 'multipletext';
	secondCell.innerHTML = description;
}

function addMultipleListItem(primaryId, description, elmMultipleList)
{
	if (primaryId == null)
	{
		eval(elmMultipleList.reset + '(elmMultipleList);');
		return;
	}
	var PRIMARYID = '_PRIMARYID';
	var PRIMARYIDDESCRIPTION = '_PRIMARYIDDESCRIPTION';
	var elementPrimaryId = elmMultipleList.form.elements(elmMultipleList.id + PRIMARYID);
	var elementPrimaryIdDescription = elmMultipleList.form.elements(elmMultipleList.id + PRIMARYIDDESCRIPTION);
	
	addToMultipleList(elementPrimaryId, primaryId, elementPrimaryIdDescription, description); // id = '' for new added elements
	addTableRowMultipleList(description, elmMultipleList);
}

function deleteMultipleListItem(elmMultipleListName, imageControl)
{
	if (confirm(msg[MSG_CONFIRMDELETE]))
	{
		var PRIMARYID = '_PRIMARYID';
		var PRIMARYIDDESCRIPTION = '_PRIMARYIDDESCRIPTION';
		
		var elmMultipleList = document.forms(0).elements(elmMultipleListName);
		var elementPrimaryId = elmMultipleList.form.elements(elmMultipleList.id + PRIMARYID);
		var elementPrimaryIdDescription = elmMultipleList.form.elements(elmMultipleList.id + PRIMARYIDDESCRIPTION);
		var index = imageControl.parentElement.parentElement.rowIndex;
		
		deleteFromMultipleList(elementPrimaryId, index);
		deleteFromMultipleList(elementPrimaryIdDescription, index);
		deleteTableRowMultipleList(imageControl);
	}
}

function deleteTableRowMultipleList(imageControl)
{
	var tableRow = imageControl.parentElement.parentElement;
	var rowIndex = tableRow.rowIndex;
	var table = tableRow.parentElement;
	table.deleteRow(rowIndex);
} 

function updateMultipleListItemsCheckBox(elmMultipleListName)
{
	var TYPE_CHECKBOX = '_CHECKBOX';
	var TYPE_MULTIPLELIST = '_MULTILIST';	
	var PRIMARYID = '_PRIMARYID';
	var SEPARATOR = ':';
	var elementPrimaryId = document.forms(0).elements(elmMultipleListName + PRIMARYID);
	var primaryIds = '';
	var index;
	var item;

	var checkBoxes = document.forms(0).elements(elmMultipleListName + TYPE_CHECKBOX + TYPE_MULTIPLELIST);
	for(index = 0; index < checkBoxes.length; index++)
	{
		item = checkBoxes[index];//document.forms(0).elements(elmMultipleListName + TYPE_CHECKBOX + TYPE_MULTIPLELIST, index);
		if (item.checked)
		{
			primaryIds += (primaryIds != '' ? SEPARATOR : '') + item.value;
		}
	}
	
	elementPrimaryId.value = primaryIds;
}

function updateMultipleListItemsList(elmMultipleListName)
{
	var TYPE_MULTIPLELIST = '_MULTILIST';
	var PRIMARYID = '_PRIMARYID';
	var SEPARATOR = ':';
	var elementList = document.forms(0).elements(elmMultipleListName + TYPE_MULTIPLELIST);
	var elementPrimaryId = document.forms(0).elements(elmMultipleListName + PRIMARYID);
	var primaryIds = '';
	var index;
	var item;
	
	for (index = 0; index < elementList.length; index++)
	{
		item = elementList.options[index];
		if (item.selected)
		{
			primaryIds += (primaryIds != '' ? SEPARATOR : '') + item.value;
		}
	}
	elementPrimaryId.value = primaryIds;
}

function openPopupMultipleListAdd(page, title, xmlFile, screenPartName, elementName, elmMultipleListName, filterStr, width, height)
{
	var DIALOGSCREENPARTNAME = "X_DIALOGSCREENPARTNAME",
	DIALOGELEMENTNAME = "X_DIALOGELEMENTNAME",
	DIALOGONBLURVALUE = "X_DIALOGONBLURVALUE",
	DIALOGHTMLNAME = "X_DIALOGHTMLNAME",
	SCREENXMLFILENAME = "X_SCREENXMLFILENAME",
	DIALOGFILTERSTRING = "X_DIALOGFILTERSTRING",
	SELECTEDITEMS = "SelectedItems";
	SELECTEDITEMDESCRIPTIONS = "SelectedItemDescriptions";
	
	// var filterString = getfiltervalues(filterStr);
	getfiltervalues(filterStr);
	var PRIMARYID = '_PRIMARYID';
	var PRIMARYIDDESCRIPTION = '_PRIMARYIDDESCRIPTION';
	var SEARCHTEXTBOX = '_SEARCH';
	var elmMultipleList = document.forms(0).elements(elmMultipleListName);
	var elmPrimaryId = document.forms(0).elements(elmMultipleListName + PRIMARYID);
	var elmPrimaryIdDescriptions = document.forms(0).elements(elmMultipleListName + PRIMARYIDDESCRIPTION);
	var elmSearchText = document.forms(0).elements(elmMultipleListName + SEARCHTEXTBOX);
	var onBlurValue = elmSearchText.value;
	elmSearchText.value = '';
	var MultipleListObject = new Object();
	MultipleListObject.elementMultipleList = elmMultipleList;
	MultipleListObject.callfunction = addMultipleListItem;
	var sFeatures = 'dialogHeight:' + height + 'px;dialogWidth:' + width + 'px;center:yes;resizable:yes;scroll:no;status:no;';
	var params  = 'Title=' + title;
	params += '&' + SCREENXMLFILENAME + '=' + xmlFile; 
	params += '&' + DIALOGSCREENPARTNAME + '=' + screenPartName;
	params += '&' + DIALOGELEMENTNAME + '=' + elementName;
	params += '&' + DIALOGONBLURVALUE + '=' + encodeURI(onBlurValue);
	
	params = addDynamicScPartFilename(screenPartName,params);
	
	AddRequestItem(SELECTEDITEMS, elmPrimaryId.value);
	AddRequestItem(SELECTEDITEMDESCRIPTIONS, elmPrimaryIdDescriptions.value);
	var xmlNode = HttpPostDocument.documentElement;
	parameterIndex = GetParamCounterInd();
	xmlNode.setAttribute("id", parameterIndex);
    params += '&' + PARAMCOUNTERIND + '='+ parameterIndex;
	
	var httpPostResult = HttpPost();
	
    if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
	{  			
        if (elmMultipleList.searchdialogmode == 'SamePage')
        {
            openYahooSearchDialog(page, params, elmMultipleList, MultipleListObject, width, height);
        }
        else
        {
	        openPopupModal('PopupUrl.aspx?Page=' + page + '&Url=' + encodeURIComponent(params),
				        MultipleListObject,
				        sFeatures,
				        false);
	    }
    }
    else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	{
	    GotoLoginPage();
	}
    else
    {
        alert(httpPostResult);
    }
}

/*
************************************************************************************************
********************************************** N U M E R I C ***********************************
************************************************************************************************
*/

function setvalue_numeric(elementDest, elementSource)
{
	/*
	var elms = elementDest.form.elements;
	var CENT = "_DEC";
    var elementSourceCent = elms(elementSource.id + CENT);
    var elementDestCent = elms(elementDest.id + CENT);
	var separator = GetNumberDecimalSeperator();
    
    var integerPart;
    var decimalPart = "0";
    if (elementSource.numericinputtype == INPUTTYPE_MULTIPLE)
    {
		if(elementSource.decimaldigits != "0")
		{
			integerPart = elementSource.value.split(separator)[0];
			decimalPart = elementSource.value.split(separator)[1];
		}
		else
		{
			integerPart = elementSource.value;
		}
    }
    else
    {
		integerPart = elmSource.value;
		if (elementSource.decimaldigits != "0")
			decimalPart = elementSourceCent.value;
    }
    
    if (elementDest.numericinputtype == INPUTTYPE_MULTIPLE)
    {
		elementDest.value = integerPart;
		if (elementDestCent != null)
		{
			elementDestCent.value = decimalPart;
		}
    }
    else
    {
		elementDest.value = integerPart;
		if (elementSource.decimaldigits != "0")
			elementDest.value += separator + decimalPart;
    }
    */
    
    var elementValue = value_numeric(elementSource);   
    set_numeric(elementDest, elementValue);
}

/*
function value_numeric(elmNumeric)
{
	var elms = elmNumeric.form.elements;
	var DECIMAL = "_DEC";
   	var separator = ".";
   	if (elmNumeric.value == "" && elmNumeric.form.elements(elmNumeric.id + DECIMAL).value != "" && parseInt(elmNumeric.form.elements(elmNumeric.id + DECIMAL).value) != 0) elmNumeric.value = "0";
	var unformattedString = deleteseparator(elmNumeric.value, separator ) ;
	if (elms(elmNumeric.id + DECIMAL) != null)
	{
		unformattedString += separator + elms(elmNumeric.id + DECIMAL).value; 
	}	
	return controlValue('', unformattedString);
}
*/

function value_numeric(elmNumeric)
{
	var elms = elmNumeric.form.elements;
	var DECIMAL = "_DEC";
	
   	var digitseparator = GetNumberDigitSeperator();
   	var decimalseparator = GetNumberDecimalSeperator();
   	
   	if (elmNumeric.numericinputtype == INPUTTYPE_MULTIPLE)
    {
   		if (elmNumeric.value == "" && elmNumeric.form.elements(elmNumeric.id + DECIMAL).value != "" && parseInt(elmNumeric.form.elements(elmNumeric.id + DECIMAL).value) != 0) elmNumeric.value = "0";
   	}
   	else
   	{
   		if (elmNumeric.value == "") elmNumeric.value = "0";
   	}
	
	var unformattedString = deleteseparator(elmNumeric.value, digitseparator) ;
	
	if (elms(elmNumeric.id + DECIMAL) != null)
	{
		unformattedString += decimalseparator + elms(elmNumeric.id + DECIMAL).value; 
	}	
    return controlValue('', unformattedString);
}


// gets the id of a numeric element and 
// returns the float value of it
// returns 0 when no value exists in the element
function GetNumericFloatValue(elementid)
{
	var retval = 0;
	var elmNumeric = document.getElementById(elementid);
	
	if(elmNumeric != null)
	{		
		var decimalSeperator = '.';
		var myVal = value_numeric(elmNumeric).value;
		var numDecimalsep = GetNumberDecimalSeperator();
		myVal = myVal.replace(numDecimalsep, decimalSeperator);
		
		if(myVal == decimalSeperator)
		{
			retval = 0;
		}
		else
		{
			retval = parseFloat(myVal);
		}
	}
	
	return retval;
}

// sets the value of a numeric element to the float value given
function SetNumericFloatValue(elementid, floatvalue)
{
	var elmNumeric = document.getElementById(elementid);
	
	if(elmNumeric != null)
	{			
		var decimaldigitCount = parseInt(elmNumeric.decimaldigits);
		var strNumeric = floatvalue.toFixed(decimaldigitCount);
		
		var object = new Object();		
		object.value = strNumeric;
		object.id = '';
		
		set_numeric(elmNumeric, object);
	}
}

function set_numeric(elmNumeric, setvalue)
{
	if (setvalue != null)
	{
		reset_numeric(elmNumeric);
		var DECIMAL = "_DEC";
		var COMMASUFFIX = '_COMMA';
		
		var elms = elmNumeric.form.elements;
		var elmDecimal = elms(elmNumeric.id + DECIMAL);
		var numericValue = setvalue.value;
		var labeltext = '';
		//var elmComma = elms(elmNumeric.id + COMMASUFFIX);
		//var elmComma = document.getElementById(elmNumeric.id + COMMASUFFIX);
		var labelValue = '';
		elmNumeric.value = '';
		
		if (elmDecimal != null)
		{
			elmDecimal.value = '';
		}
		var sRegExp = eval('/,/g'); 
		numericValue = numericValue.replace(sRegExp,'.'); 
		
		// set the number part if the value is numeric (of course)
		if (!isNaN(parseFloat(numericValue)))
		{
			numericValue = parseFloat(numericValue);
			var integerpartAbs = Math.floor(Math.abs(numericValue));
			elmNumeric.value = (numericValue < 0 ? '-' : '') + integerpartAbs.toString();
			if (parseInt(elmNumeric.decimaldigits) > 0)
			{
				var decimalPart = Math.abs(numericValue) - integerpartAbs;
				decimalPart = Math.round(Math.pow(10, elmNumeric.decimaldigits) * decimalPart);
				
				if(decimalPart.toString().length < elmNumeric.decimaldigits)
				{
					decimalPart = rightstr('0' + decimalPart, elmNumeric.decimaldigits);
				}
				
				var separator = GetNumberDecimalSeperator();
				if (elmNumeric.numericinputtype == INPUTTYPE_SINGLE)
				{
					if (decimalPart != '')
						elmNumeric.value += separator + decimalPart;
					labeltext = elmNumeric.value;
					if(elmNumeric.groupdigits =="1")
					{
					    formatNumeric(elmNumeric, 12);
					}
				}
				else
				{
					//var elementCent = elms(element.id + CENT);
					if (elmDecimal != null)
					{
						elmDecimal.value = decimalPart;
						labeltext = separator + decimalPart;
					}
					if(elmNumeric.groupdigits =="1")
					{
		                formatNumeric(elmNumeric, 12);
		            }
					labeltext = elmNumeric.value + labeltext;
				}
			}
			else
			{
				labeltext = elmNumeric.value;
			    formatNumeric(elmNumeric, 12);
			}
			set_elementlabel(elmNumeric, controlValue('', labeltext));
		}		
	}
}


function reset_numeric(elmNumeric)
{
	var elms = elmNumeric.form.elements;
	var DECIMAL = "_DEC";
	var elmDecimal = elms(elmNumeric.id + DECIMAL);
	elmNumeric.value = '';
	if (elmDecimal != null)
	{
		elmDecimal.value = '';
	}
	reset_elementlabel(elmNumeric);
}

function validate_numeric(elmNumeric)
{
    try
    {
        var tmpNumericValue;
        var DECIMAL = "_DEC";
        var hasError = false;
        var caption = elmNumeric.caption;
        var decimalSeparator = GetNumberDecimalSeperator();
        var digitSeparator = GetNumberDigitSeperator();
        var defaultDecimalSeparator = GetDefaultNumberDecimalSeperator();
        var elmDecimal = elmNumeric.form.elements(elmNumeric.id + DECIMAL);
   		var emlNumericDecimal = elmNumeric.form.elements(elmNumeric.id + DECIMAL);
   		if (emlNumericDecimal != null)
   		{
	   		if (elmNumeric.value == "" && elmNumeric.form.elements(elmNumeric.id + DECIMAL).value != "" && parseInt(elmNumeric.form.elements(elmNumeric.id + DECIMAL).value) != 0)
	   			elmNumeric.value = "0";
	   	}
        var unformattedString = deleteseparator(elmNumeric.value, digitSeparator);
        if (elmNumeric.form.elements(elmNumeric.id + DECIMAL) != null) // has decimal part
        {
            unformattedString += decimalSeparator + elmNumeric.form.elements(elmNumeric.id + DECIMAL).value; 
        }
        var numvalue;
                                
        if (!hasError)
            if ((unformattedString != "") && (decimalSeparator != unformattedString) && isNaN(parseFloat(unformattedString)))
            {
                hasError = true;                                    
                alert(caption + ': ' + msg[MSG_NAN]);                                      
            }
        
        //Required
        if (!hasError)
            if (CheckRequired(elmNumeric))
                if (unformattedString == decimalSeparator || unformattedString == '')
                {
                    hasError = true;
                    alert(caption  + ': ' + msg[MSG_REQUIRED]);
                }
                                
        if (!hasError)
        {
		    unformattedString = unformattedString.replace(decimalSeparator, '.'); 
            numvalue = parseFloat(unformattedString);
        }
                    
        //MinValue
        if (!hasError)
            if (elmNumeric.minvalue != null)
            {
                tmpNumericValue = elmNumeric.minvalue.replace(defaultDecimalSeparator, '.');
                if (numvalue < parseFloat(tmpNumericValue))
                {
                    hasError = true;
                    alert(caption  + ': ' + msg[MSG_MINVALUE] + ' (' + elmNumeric.minvalue + ')');
                }
            }
        
        //MaxValue
        if (!hasError)
            if (elmNumeric.maxvalue != null)
            {
                tmpNumericValue = elmNumeric.maxvalue.replace(defaultDecimalSeparator, '.');
                if (numvalue > parseFloat(tmpNumericValue))
                {
                    hasError = true;
                    alert(caption  + ': ' + msg[MSG_MAXVALUE] + ' (' + elmNumeric.maxvalue + ')');
                }
            }

        if (hasError)
            TryFocus(elmNumeric);
    }
    finally
    {
        return (!hasError);
    }
}


function visible_numeric(element, value)
{
    value = value == "1" ? true : false;

	var DECIMAL = '_DEC';
	var COMMASUFFIX = '_COMMA';
	var elmDecimal = element.form.elements(element.id + DECIMAL);
	var elmComma = document.getElementById(element.id + COMMASUFFIX);
	var keepWithPrevious = CheckKeepWithPrevious( element );
	
	visible_element(element, value);
	visible_element(elmDecimal, value);
	visible_element(getcaptionElement(element), value && !keepWithPrevious);
	visible_element(getpostcaptionElement(element), value && !keepWithPrevious);
	visible_element(gettooltipElement(element), value);
	visible_element(getretainValueElement(element), value);
	if(CheckRequired(element))
	{
		visible_element(getRequiredSymbolElement(element), value); 
	}
	var elmLabel = getlabelElement(element);
	visible_element(elmLabel, value);
	if (elmLabel == null)
		visible_element(elmComma, value);
}

function enable_numeric(element, value)
{
	var DECIMAL = '_DEC';
	var elmDecimal = element.form.elements(element.id + DECIMAL);
	enable_general(element, value);
	enable_general(elmDecimal, value);
}

/*
************************************************************************************************
**************************************** E L E M E N T V A L I D A T O R S *********************
************************************************************************************************
*/


// alerts the user if the condition is not met
// for an eleent validator
function ValidatorMessage(elementValidator)
{
	if (elementValidator.ValidationMessage != null)
	{
		var LANGUAGE = 'X_LANGUAGE';
		var language = document.all(LANGUAGE).value;
		var message = elementValidator.ValidationMessage[language];
		
		if (message != '')
		{
			alert(message);
		}
	}
}

// calculates the value of the element
function GetElementValue(element)
{
	var returnValue = null;
			
	eval('returnValue = ' + element.filter + '(element);');
	
	return returnValue;
}

// performs a check for a single element validator
// returns true if the condition is satisfied
function CheckForASingleElementValidator(elementValidator)
{
	// constant vaues
	var SOURCE_FORM = "Form";	
	var SOURCE_CONSTANT = "Constant";
	var SPLIT = '.';	
	var COND_EQ = 'EQ', COND_NEQ = 'NEQ', COND_LT = 'LT', COND_GT = 'GT',
		COND_LTE = 'LTE', COND_GTE = 'GTE', COND_IN = 'In', COND_NOTIN = 'NotIn';
	var ATTRIB_SETVALUE = "setvalue";
	var SETVALUE_NUMERIC = "setvalue_numeric";
	
	var returnValue = false;
	
	// validation message tag
	var ELEMENTTAG_VALIDATIONMESSAGES = 'ValidationMessages';
	
	// element validator attributes
	var ATTR_SOURCEELEMENTNAME = 'SourceElementName';	
	var ATTR_CONDITIONOPERATOR = 'ConditionOperator';	
	var ATTR_CONDITIONSOURCE = 'ConditionSource';		
	var ATTR_CONDITIONVALUE = 'ConditionValue';
	
	var sourceElement = document.getElementById(elementValidator.SourceElementName);
	
	if(sourceElement != null)
	{
		var conditionSource = elementValidator.ConditionSource;
		var conditionvalue = elementValidator.ConditionValue;
		
		var sourceElementValue = GetElementValue(sourceElement);
		var toCompareValue =  GetRealValueOfElement(sourceElement, sourceElementValue).value; //GetControlValue(sourceElementValue);
		
		if(conditionSource == SOURCE_FORM)
		{
			var screenpartname = conditionvalue.split(SPLIT)[0];
			var elementname = conditionvalue.split(SPLIT)[1];
			elementname = screenpartname + "_" + elementname;
			
			var element = document.getElementById(elementname);			
			
			conditionvalue = GetElementValue(element);
			conditionvalue = GetRealValueOfElement(element, conditionvalue).value;//GetControlValue(conditionvalue);			
		}	
		
		if((toCompareValue == null) || (toCompareValue === '')
		   || (conditionvalue == null) || (conditionvalue === ''))
		{
			//if one of the elements has no value, do not compare.
			return true;
		}
		else
		{				
			var SPLITTER = ',';
			var i;
			switch (elementValidator.ConditionOperator)
			{
				case COND_EQ:
					returnValue = (toCompareValue == conditionvalue);
					break;
				case COND_NEQ:
					returnValue = (toCompareValue != conditionvalue);
					break;
				case COND_LT:
					returnValue = (toCompareValue < conditionvalue);
					break;
				case COND_GT:
					returnValue = (toCompareValue > conditionvalue);
					break;
				case COND_LTE:
					returnValue = (toCompareValue <= conditionvalue);
					break;
				case COND_GTE:
					returnValue = (toCompareValue >= conditionvalue);
					break;
				case COND_IN:
					value = value.split(SPLITTER);
					for (i = 0; i < conditionvalue.length; i++)
						if (toCompareValue == value[i])
						{
							returnValue = true;
							break;
						}
					break;
				case COND_NOTIN:
					conditionvalue = conditionvalue.split(SPLITTER);
					returnValue = true;
					for (i = 0; i < conditionvalue.length; i++)
						if (toCompareValue == conditionvalue[i])
						{
							returnValue = false;
							break;
						}
					break;
			}
			return returnValue;
		}
	}
}

// the elementvalidator blocks are rendered on the page
// as a data island. this function reads it and checks the
// values of the elements if they obey the rules imposed
// by the element validators if any.
function CheckForScreenPartElementValidators(screenpartname, validateform)
{
	var retval = true;
	
	if(validateform)
	{
		var ELEMENTVALIDATOR = '_VALIDATOR';
		
		//get the validators data island if it exists
		var xmlValidator = document.getElementById(screenpartname + ELEMENTVALIDATOR);
		
		//if the validators data island exists:
		if(xmlValidator != null)
		{
			var elementValidators = ElementValidators(xmlValidator);
			var elementValidator;
			
			var i;
				
			for (i = 0; i < elementValidators.length; i++)
			{
				elementValidator = elementValidators[i];
				var sourceElement = document.getElementById(elementValidator.SourceElementName);
                if(!sourceElement.validate && sourceElement.validate_old)
                {
                    continue;
                }
				if(!CheckForASingleElementValidator(elementValidator))
				{
					ValidatorMessage(elementValidator);
					retval = false;
					break;
				}
			}								
		}
	}
	
	return retval;
}


// returns a single elementvalidator object
// when supplied with an xml node containing
// validation information, which comes from
// the data island rendered on the screen part
function ElementValidator(xmlNode)
{
	// constant vaues
	var SOURCE_FORM = "Form";	
	var SOURCE_CONSTANT = "Constant";
	var SPLIT = '.';	
	
	// validation message tag
	var ELEMENTTAG_VALIDATIONMESSAGES = 'ValidationMessages';
	
	// element validator attributes
	var ATTR_SOURCEELEMENTNAME = 'SourceElementName';	
	var ATTR_CONDITIONOPERATOR = 'ConditionOperator';	
	var ATTR_CONDITIONSOURCE = 'ConditionSource';		
	var ATTR_CONDITIONVALUE = 'ConditionValue';
		
	// create a new elementValidator object
	var elementValidator = new Object();
	
	// assign attribute values :
	elementValidator.SourceElementName = xmlNode.getAttribute(ATTR_SOURCEELEMENTNAME);
	
	elementValidator.ConditionOperator = xmlNode.getAttribute(ATTR_CONDITIONOPERATOR);
	
	elementValidator.ConditionSource = xmlNode.getAttribute(ATTR_CONDITIONSOURCE);
	
	elementValidator.ConditionValue = xmlNode.getAttribute(ATTR_CONDITIONVALUE);		
		
	elementValidator.ValidationMessage = MultiLingual(xmlNode.selectSingleNode(ELEMENTTAG_VALIDATIONMESSAGES));
	
	return elementValidator;
}

// when supplied with a not null xmlisland containing conditions
// this function returns it as an array
function ElementValidators(xmlIsland)
{
	if (xmlIsland == null)
	{
		return null;
	}
	else
	{
		var ELEMENTTAG_VALIDATORS = 'ElementValidators/ElementValidator';
		var elementValidators = new Array();
		
		var nodes = xmlIsland.XMLDocument.selectNodes(ELEMENTTAG_VALIDATORS);
		
		for (i = 0; i < nodes.length; i++)
		{
			elementValidators[i] = ElementValidator(nodes.nextNode);
		}
			
		return elementValidators;
	}
}

/*
************************************************************************************************
**************************************** C O M M O N  F U N C T I O N S ***********************
************************************************************************************************
*/

function encodefiltervalue(filtervalue)
{
	var QUOT = '\'', QUOTENCODE = '^QUOT^';
	var COMMA = ',', COMMAENCODE = '^COMMA^';
	var SPLIT = '~', SPLITENCODE = '^SPLIT^';
	var DIYEZ = '#', DIYEZENCODE = '^DIYEZ^';
	return replaceall(replaceall(replaceall(replaceall(filtervalue.toString(), COMMA, COMMAENCODE), SPLIT, SPLITENCODE), QUOT, QUOTENCODE), DIYEZ, DIYEZENCODE);

}

function decodefiltervalue(filtervalue)
{
	var QUOT = '\'', QUOTENCODE = '^QUOT^';
	var COMMA = ',', COMMAENCODE = '^COMMA^';
	var SPLIT = '~', SPLITENCODE = '^SPLIT^';
	var DIYEZ = '#', DIYEZENCODE = '^DIYEZ^';
	return replaceall(replaceall(replaceall(replaceall(filtervalue.toString(), COMMAENCODE, COMMA), SPLITENCODE, SPLIT), QUOTENCODE, QUOT), DIYEZENCODE, DIYEZ);

}

function getfiltervalues(filterString)
{	
	
	
	ResetHttpPostDocument(HPSOURCE_FILTER);
		
	if (trim(filterString) != '')
	{
		var SEPARATOR = ',';
		var SPLITTER = '~';
		var i;
		var filterArray = filterString.split(SEPARATOR);
		var filterValue = new Array(filterArray.length);
		var controlValue;
		var filterElement;
		var functionname;
                
		for (i = 0; i < filterArray.length; i++)
		{		
			filterValue[i] = '';
			filterElement = document.getElementById(filterArray[i]);		
			if (filterElement != null)
			{			
				if (filterElement.filter != null)
				{												
					controlValue = eval(filterElement.filter + '(filterElement);');
					filterValue[i] = encodefiltervalue(controlValue.id) + SEPARATOR + 
					                 encodefiltervalue(controlValue.value);						                 
				}
				else
				{
				     //this control is added for search filters whose value will be get from span
				    filterSpanObj = document.getElementById(filterArray[i] + '_HIDDEN');
				    if(filterSpanObj != null)
				    {
				        filterValue[i] = filterSpanObj.value + SEPARATOR + encodefiltervalue(filterElement.innerText);				
				    }
				}
			}
			// if (i > 0)
			//	returnValue += SPLITTER;
			// returnValue += filterValue[i];
			
			AddFilterItem(filterValue[i]);
		}
	}
	// return returnValue;
}
/*
	This function opens a modal dialog popup for search, load screen controls
*/
function openPopupModal(Url, DialogArguments, sFeatures, postback)
{
	window.showModalDialog( Url, DialogArguments, sFeatures);
	if (postback != null)
	{
		if (postback)
		{
			submitform('', '', '', false);
		}
	}
}

function openPopupModeless(Url, sFeatures, alwaysnewpopup)
{
	var name = '';
	if(event && !alwaysnewpopup && event.srcElement)
	{
		name = event.srcElement.id;
		var sRegExp = eval('/~/g'); 
		name = name.replace(sRegExp,''); 
	}
	var i;
	var myWin = null;
	var found = false;
	
	if (!alwaysnewpopup)
	{
	    for(i = 0; i < childWindows.length; i++)
	    {
		    try
		    {
			    if(childWindows[i] != null)
			    {
				    if((childWindows[i].name == name))
				    {			
					    myWin = childWindows[i];
					    if(!myWin.closed)
					    {
						    found = true;
						    break;
					    }			
				    }
			    }
		    }
		    catch(e)
		    {
		    }
	    }
	}

	if(found)
	{
		myWin.focus();
	}
	else
	{
	    myWin = window.open(Url, name, sFeatures);
	    childWindows[childWindows.length] = myWin;
	}			
}

function shortcutOnClick(screenXML, isScreen, title, screenParts, elements, values, valuefunctions, setdestinations, setsources, resetdestinations, width, height, isModal)
{

	disablesubmit(true);
	openScreen(screenXML, isScreen, title, screenParts, elements, values, valuefunctions, setdestinations, setsources, resetdestinations, width, height, isModal);
	disablesubmit(false);
}
function openScreen(screenXML, isScreen, title, screenParts, elements, values, valuefunctions, setdestinations, setsources, resetdestinations, width, height, isModal)
{
    if (isModal != 0 && isModal != 10 && isModal != 7 && isModal != 1 && isModal != 6 && isModal != 3 && isModal != 5 && isModal != 9)
    {
        if (!ContinueScreenChange())
            return;
    }
	var now = new Date();
	var NOCACHE = 'time=' + now.toUTCString();
	var QS_XML = 'xml';
	var QS_SCREENPART = 'sp';
	var QS_ELEMENT = 'el';
	var QS_VALUE = 'v';
	var QS_SET = 'set';
	var QS_RESET = 'reset';
	
	var QS_WIDTH = 'width';
	var QS_HEIGHT = 'height';
	var SHOWMENUOFF = "menuclosed=1";
	var COMMA = ',';	
	
	var params = '';
	params = NOCACHE + '&' + 'Title=' + title ;
	var page;
	
	var httpPostResult = '';	
	
	if (processing)
		return;
	
	// if (isModal == 2 || isModal == 5 || isModal == 6)
	if (isModal == 2 || isModal == 5)
		disablesubmit(true);

	if (isScreen)
	{
		page = 'Screen.aspx';
		params += '&' + QS_XML + '=' + screenXML;
	}
	else
	{	
		page = screenXML;

	}

	var checkWin = window;
	if (window.top != null)
		checkWin = window.top;
	var popupOpened = (checkWin.opener != null) || (checkWin.dialogArguments != null);
	
	if (isModal != 5)		
	{
		if ((popupOpened && (isModal ==1 || isModal == 0 || isModal == 10 || isModal == 6)) || ((isModal != 2) && (isModal != 3)))
		{
			params += '&' + SHOWMENUOFF;
		}
	}
	var SEPARATOR = '~';
	var index;
	var screenPartArray = screenParts.split(SEPARATOR);
	var elementsArray = elements.split(SEPARATOR);
	var valuesArray = values.split(SEPARATOR);
	var valuefunctionsArray = valuefunctions.split(SEPARATOR);
	var setdestinationsArray = setdestinations.split(SEPARATOR);
	var setsourcesArray = setsources.split(SEPARATOR);
	var resetdestinationsArray = resetdestinations.split(SEPARATOR);
	var sFeatures1 = 'center=yes,resizable=yes';
	var sFeatures2 = 'center:yes;resizable:yes;scroll:no;status:no';
	
	if ( Tigris.Config.CenterDialogs === true )
	{
	    var leftPos = (screen.width ) ? (screen.width  - width ) / 2 : 0;
        var topPos  = (screen.height) ? (screen.height - height) / 2 : 0;
        
        sFeatures1 += ",left=" + leftPos + ",top=" + topPos;
        sFeatures2 += ",left:" + leftPos + ",top:" + topPos;
	}
	
	if (width != 0)
	{
		sFeatures1 += ',width=' + width.toString() + 'px';
		sFeatures2 += ';dialogWidth:' + width.toString() + 'px';
	}
	if (height != 0)
	{
		sFeatures1 += ',height=' + height.toString() + 'px';
		sFeatures2 += ';dialogHeight:' + height.toString() + 'px';
	}
	var ctrlValue, passvalue;
    var lang = document.getElementById("X_LANGUAGE").value;
    var defLang = document.getElementById("X_DEFAULTLANGUAGE").value;
	
	if(HttpPostDocument==null)
	{
	    InitializeHttpPostDocument();
	}
	ResetHttpPostDocument(HPSOURCE_SCREEN);
	
	if (screenPartArray[0] != '')
	{	    
	    var spName, eName, evName, eValue;
		for (index = 0; index < screenPartArray.length; index++)
		{		
		    spName = screenPartArray[index]; 
		    eName = elementsArray[index];
		    evName = QS_VALUE + (index + 1);
						
			if (valuefunctionsArray[index] == "0")
			{
				eValue = valuesArray[index];
			}
			else
			{	
				eval('ctrlValue = ' + valuefunctionsArray[index] + '(document.getElementById(valuesArray[index]));');
				if(ctrlValue!=null)
				{
				    if (ctrlValue.id != '')
					    passvalue = ctrlValue.id;
				    else
		    	        passvalue = ctrlValue.value;
		    	}
			    // TODO: Burası kullanıcının dilindeki ayarlarla geliyor. Default dile çevrilmeli.
	    	    var srcElement = document.getElementById(valuesArray[index]);
		    	if (lang != defLang && srcElement.datatype != null)
		    	{
                    var decimalbuffer = 'DECIMAL';
                    var digitbuffer = 'DIGIT';
	    	        if (srcElement.datatype == "Numeric")
	    	        {
                        var digitsep = GetNumberDigitSeperator();
                        var decimalsep = GetNumberDecimalSeperator();
                        var defaultdigitsep = GetDefaultNumberDigitSeperator();
                        var defaultdecimalsep = GetDefaultNumberDecimalSeperator();
                        passvalue = passvalue.replace(digitsep, digitbuffer);
                        passvalue = passvalue.replace(decimalsep, decimalbuffer);
                        passvalue = passvalue.replace(digitbuffer, defaultdigitsep);
                        passvalue = passvalue.replace(decimalbuffer, defaultdecimalsep);
	    	        }
	    	        else if (srcElement.datatype == "Currency")
	    	        {
                        var digitsep = GetCurrencyDigitSeperator();
                        var decimalsep = GetCurrencyDecimalSeperator();
                        var defaultdigitsep = GetDefaultCurrencyDigitSeperator();
                    	var SPLIT = '~';
                        var defaultdecimalsep = GetDefaultCurrencyDecimalSeperator();
                        var curId = passvalue.split(SPLIT)[0]
                        passvalue = passvalue.split(SPLIT)[1];
                        passvalue = passvalue.replace(digitsep, digitbuffer);
                        passvalue = passvalue.replace(decimalsep, decimalbuffer);
                        passvalue = passvalue.replace(digitbuffer, defaultdigitsep);
                        passvalue = passvalue.replace(decimalbuffer, defaultdecimalsep);
                        passvalue = curId + SPLIT + passvalue;                        
	    	        }
		    	}
					
				eValue = passvalue;								
			}
			
			AddParameterItem(spName, eName, evName, eValue);
		}
	}
		
	SetDestinationsQS(setdestinationsArray, setsourcesArray);		
	ResetDestinationsQS(resetdestinationsArray);
	
	if (width != 0)
		params += '&' + QS_WIDTH + "=" + width.toString();
	
	if (height != 0)
		params += '&' + QS_HEIGHT + "=" + height.toString();		
	
	switch (isModal)
	{
		case 0: // Popup
		        httpPostResult = HttpPost();
		        if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
                    parameterIndex = ParseHttpDocResult(httpPostResult);
				    params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    openPopupModeless('PopupUrl.aspx?Page=' + escape(page) + '&Title=' + title + '&Url=' + encodeURIComponent(params) , sFeatures1, false);	
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				break;
	    case 10: // AlwaysNewPopup
		        httpPostResult = HttpPost();
		        if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
                    parameterIndex = ParseHttpDocResult(httpPostResult);
				    params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    openPopupModeless('PopupUrl.aspx?Page=' + escape(page) + '&Title=' + title + '&Url=' + encodeURIComponent(params) , sFeatures1, true);	
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				break;
	    case 7: // PopupWithPostBack
		        httpPostResult = HttpPost();
		        if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
				    parameterIndex = ParseHttpDocResult(httpPostResult);
		            params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    openPopupModeless('PopupUrl.aspx?Page=' + escape(page) + '&Title=' + title + '&Url=' + encodeURIComponent(params) + '&postback=1',sFeatures1, false);	
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				break;
		case 1: // ModalPopup
		        httpPostResult = HttpPost();
		        if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
		            parameterIndex = ParseHttpDocResult(httpPostResult);
		            params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    openPopupModal('PopupUrl.aspx?Page=' + page + '&Title=' + title + '&Url=' + encodeURIComponent(params), window, sFeatures2, false);	
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				break;
		case 6: // ModalPopupWithPostBack
		        httpPostResult = HttpPost();
		        if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
				    parameterIndex = ParseHttpDocResult(httpPostResult);
		            params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    openPopupModal('PopupUrl.aspx?Page=' + page + '&Title=' + title + '&Url=' + encodeURIComponent(params), window, sFeatures2, true);	
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				break;
		case 3: // Popup With Menu
		        httpPostResult = HttpPost();
		        if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
				    parameterIndex = ParseHttpDocResult(httpPostResult);
		            params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    openPopupModeless('PopupUrl.aspx?Page=' + escape(page) + '&Title=' + title + '&Url=' + encodeURIComponent(params), sFeatures1, false);	
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				break; 
		case 5:
		case 9: // Parent, ParentWithNoClose
				if (popupOpened)
				{
					var iframe = window.parent;	
					var parentWindow = iframe.dialogArguments;
					if (parentWindow != null)
					{
					    httpPostResult = HttpPost();
						var parentPopupFrame = null;
						if (parentWindow.parent != null)
							parentPopupFrame = parentWindow.parent.document.all('frmPopup');
							
						if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		                {
		                    parameterIndex = ParseHttpDocResult(httpPostResult);
		                    params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    
						    if (parentPopupFrame == null)
							    parentWindow.location.href = page + "?" + params;
						    else
							    parentPopupFrame.src = page + "?" + params + '&' + SHOWMENUOFF;
						}
						else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	                    {
	                        GotoLoginPage();
	                    }
						else
						{
						    alert(httpPostResult);
						}
					}
					else
					{
						var openerWindow = window.top.opener;
						if (openerWindow != null)
						{
						    httpPostResult = HttpPost();
							var popupFrame = openerWindow.document.all('frmPopup');
							
							if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		                    {
		                        parameterIndex = ParseHttpDocResult(httpPostResult);
                                params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    
							    if (popupFrame == null)
								    openerWindow.location.href = page + "?" + params;
							    else
								    openerWindow.src = page + "?" + params + '&' + SHOWMENUOFF;
							}
							else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
                            {
                                GotoLoginPage();
                            }
							else
							{
							    alert(httpPostResult);
							}
						}
					}
					if (isModal == 5)
					    CloseWindow();
				}
				break;
			case 8: // New window
			    sFeatures1 += 'scrollbars=yes,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,type=fullWindow';
			
			    httpPostResult = HttpPost();
			    parameterIndex = ParseHttpDocResult(httpPostResult);
			    
		        if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
                    parameterIndex = ParseHttpDocResult(httpPostResult);
                    params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    openPopupModeless('PopupUrl.aspx?Page=' + escape(page) + '&Title=' + title + '&Url=' + encodeURIComponent(params) , sFeatures1, false);	
				}
		        break;
		default:
		//case 2, 4: // SamePage and Iframe
				if (popupOpened)//geriye set/reset edilecek değerleri ve ekran boyutlarını tasımalıyız.
				{
					var SETVALUES = 'X_SETVALUES';
					var RESETVALUES = 'X_RESETVALUES';
					var SETVALUESSOURCE = 'X_SETVALUESSOURCE';
					
					SetDestinationsQS(document.forms(0).elements(SETVALUES).value.split(COMMA), document.forms(0).elements(SETVALUESSOURCE).value.split(COMMA));
					ResetDestinationsQS(document.forms(0).elements(RESETVALUES).value.split(COMMA));
					
					if (checkWin.dialogArguments != null)
					{
						if (params.indexOf("&" + QS_WIDTH + "=") < 0)
						{
							params += '&' + QS_WIDTH + "=" + parseInt(window.external.dialogWidth.toString());
							params += '&' + QS_HEIGHT + "=" + parseInt(window.external.dialogHeight.toString());
						}
					}
				}
				var xmlNode = HttpPostDocument.documentElement;
				parameterIndex = GetParamCounterInd();
				xmlNode.setAttribute("id", parameterIndex);
				httpPostResult = HttpPost();
				
				if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
				    params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
                    if (isModal == 2)
				    {
		                window.location.href = page + "?" + params;
				    }
				    else
				    {
					    var iframe = document.getElementById('frmExcelUpload');
					    iframe.src = page + (page.indexOf('?') > 0 ? "&" : "?") + params;
				    }
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                window.GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				
				break;
	}
}
function ParseHttpDocResult(httpPostResult)
{
    var temp = new Array();
    temp = httpPostResult.split(';');
    
    return temp[1];
}
function openHelp(xmlFileName, title)
{
	var helpPage = "help.aspx?xml=" + xmlFileName;
	openScreen(helpPage, false, title, '', '', '', '', '', '', '', 800, 600, 0);
}

// sets hidden iframe source from hidden value prepared during render.
// This function is used on word template mechanism.
function SetIFrameSource()
{
	var HDNIFRAMEFILENAME = "X_HDNIFRAMEFILENAME";
	var srcElement = document.getElementById(HDNIFRAMEFILENAME);
	if (srcElement != null)
	{
		if (srcElement.value != null)
		{
			if (srcElement.value != '')
			{
				var frame = document.getElementById("frmExcelUpload");
				var now = new Date();
				frame.src = srcElement.value + "?time=" + now;
			}
		}
	
	}
}

function SetDestinationsQS(setdestinationsArray, setsourcesArray)
{
	var params = '';
	var COMMA = ',';
	var QS_SET = 'set';
	
	if (setdestinationsArray[0] != '')
	{
		for (index = 0; index < setdestinationsArray.length; index++)
		{			
			AddSetItem(setdestinationsArray[index] + COMMA + setsourcesArray[index]);
		}
	}	
}

function ResetDestinationsQS(resetdestinationsArray)
{
	var params = '';
	var QS_RESET = 'reset';
	
	if (resetdestinationsArray[0] != '')
	{
		for (index = 0; index < resetdestinationsArray.length; index++)
		{			
			AddResetItem(resetdestinationsArray[index]);
		}
	}	
}

/*
	For minimize and maximize screenparts & elementgroups
	The convention for the names of the images is that:
	file names must end with ".gif". Also the name of the image
	file for closed gif must end with "_sag.gif".
*/
function MinMaxGroup(anchor,screenpartName)
{
    
	var GIF = ".gif";
	var CLOSEDGIF = "_sag.gif";
		
	var patSep = "/";
	var table = anchor.parentElement.parentElement.parentElement;

	if (table.rows.length == 1)
		table = table.parentElement.parentElement.parentElement.parentElement.parentElement;

	var tableRow = table.rows[1];
	visible_element(tableRow, tableRow.style.display == 'none');

	var indexOfPathSep = anchor.src.lastIndexOf(patSep);
	var src = anchor.src;
	var imageName = src.substr(indexOfPathSep + 1, src.length - (indexOfPathSep + 1));
	
	var newSrc = imageName;
	var hiddenScrPartMaximized = document.getElementById(screenpartName + '_SCREENPARTMAXIMIZED');
	var opened = "";
	if(imageName.indexOf(CLOSEDGIF, 0) > 0)
	{
	    newSrc = imageName.replace(CLOSEDGIF, GIF);
		opened = "1";    
	}
	else
	{
	    newSrc = imageName.replace(GIF, CLOSEDGIF);
		opened = "";
	}
	
	if(hiddenScrPartMaximized!=null)
	{
		hiddenScrPartMaximized.value = opened;
	}
	
	src = src.substr(0, indexOfPathSep + 1);	
	src += newSrc;
	anchor.src = src;
}

function RemoveMenu()
{
	try
	{
		
		var div = event.srcElement;
		/*var minXVal, maxXVal;
		var minYVal, maxYVal;
		minXVal = 2;
		minYVal = 2;
		maxXVal = div.offsetWidth - 7; 
		maxYVal = div.offsetHeight - 10; 
		if (event.offsetX < minXVal || event.offsetY < minYVal || event.offsetX > maxXVal || event.offsetY > maxYVal)
		{*/
			div.detachEvent('onmouseleave', RemoveMenu);
			document.body.removeChild(div);
		//}				
	}
	catch (e)
	{
	
	}
}

/* closes the design div*/
function RemoveDesignMenu()
{
	try
	{		
		var div = event.srcElement;		
		div.detachEvent('onmouseleave', RemoveDesignMenu);
		div.style.display = "none";		
	}
	catch (e)
	{
	
	}
}

/* Hides the tooltip div control displayed as the tooltip for an element. */
function Removetooltippopup()
{
	try
	{		
	    if(event.srcElement.TagName == "DIV")
	    {
		    var div = event.srcElement;		
		    div.detachEvent('onmouseleave', Removetooltippopup);
		    div.style.display = "none";		
		}
		else
		{
		    tooltippopup.detachEvent('onmouseleave', Removetooltippopup);
		    tooltippopup.style.display = "none";		
		}		
	}
	catch (e)
	{
	
	}
}

function RemoveMultilingualMenu()
{	
	document.body.removeChild(document.body.lastChild);
}

var posArray = new Array(2);

var DesignPopup = document.createElement("div");
DesignPopup.id = "DesignPopup";

document.attachEvent('onmousemove', getMousePos);
					
window.attachEvent('onload', scrollTo_OnLoad);


function getMousePos()
{
	posArray[0] = event.clientX + document.body.scrollLeft;
	posArray[1] = event.clientY + document.body.scrollTop;
}

function ShowContextMenu(elementName)
{
	var BUTTONMENU = "_BUTTONMENU";
	var ELEMENTRENDERDESIGN = "ELEMENTRENDERDESIGN";
	var DIVMENU = "_DIVMENU";
	var CONTEXTLANGUAGESELECTBUTTON = "contextlanguageselectbutton";
	var button = document.getElementById(elementName + BUTTONMENU);
	var div = document.getElementById(elementName + DIVMENU);

	if(!div.getElementsByTagName) 
	{
		return;
	} 
	var anchors = div.getElementsByTagName("a"); 
	if(anchors.length == 1)
	{
		var anchor = anchors[0]; 
		if(onclick = anchor.getAttribute("onclick"))
		{
			onclick();
		}
	}
	else
	{
		var oPopup = document.createElement("div");
		
		if(div.id.indexOf(ELEMENTRENDERDESIGN, 0) >= 0)
		{			
			oPopup.className = "designcontextmenu";
		}
		else if(div.id.indexOf(CONTEXTLANGUAGESELECTBUTTON, 0) >= 0)
		{
			oPopup.className = "changecontextlanguagemenu";
		}
		else
		{
			oPopup.className = "showshortcut";
		}
		oPopup.style.left = posArray[0] - 5;
		oPopup.style.top = posArray[1] - 5;
		
		oPopup.innerHTML = div.innerHTML ;
		document.body.appendChild(oPopup);
		oPopup.attachEvent('onmouseleave', RemoveMenu);	
	}
}
var tooltippopup = document.createElement("div");
tooltippopup.id = "tooltippopup";

/* Displays the tooltip for an element in a div control. */
function ShowTextValue(elementName)
{	
    return;
	var txtControl = document.getElementById(elementName);
	if(txtControl == null)
	    return;

	var isEmpty = ( "" == txtControl.value );

	try
	{
	    if ( ! YAHOO.example.container ) // yahoo enabled?
	        return;
	}
	catch ( err )
	{}
	
	var tipName = elementName + '_TOOLTIP_XX'; // xx required to make name unique
	var tooltip = YAHOO.example.container[ tipName ];
	
	if ( !tooltip && !isEmpty)
	{
	    // add if we have no tiooltip container for this element
	    try
	    {
	        tooltip = new YAHOO.widget.Tooltip( tipName, { context: elementName, text: txtControl.value });
	        YAHOO.example.container[ tipName ] = tooltip;
	    } 
	    catch ( err )
	    {
	    }
	}
	else if ( tooltip && !isEmpty )
	    // update title
	    tooltip.cfg.setProperty( "text", txtControl.value );
	else if ( tooltip && isEmpty )
	{
	    // remove tooltip
	    tooltip.destroy();
	    YAHOO.example.container[ tipName ] = null;
	}
}
/* Displays a div element containing links to edit delete buttons for design*/
function ShowDesignContextMenu(elementName)
{
	var BUTTONMENU = "_BUTTONMENU";
	var ELEMENTRENDERDESIGN = "ELEMENTRENDERDESIGN";
	var DIVMENU = "_DIVMENU";
	var CONTEXTLANGUAGESELECTBUTTON = "contextlanguageselectbutton";
	var button = document.getElementById(elementName + BUTTONMENU);
	var div = document.getElementById(elementName + DIVMENU);

	if(!div.getElementsByTagName) 
	{
		return;
	} 
	var anchors = div.getElementsByTagName("a"); 
	if(anchors.length == 1)
	{
		var anchor = anchors[0]; 
		if(onclick = anchor.getAttribute("onclick"))
		{
			onclick();
		}
	}
	else
	{		
		DesignPopup.className = "designcontextmenu";
		DesignPopup.style.display = "block";				
		
		var obj = event.srcElement;		
		var objTemp = obj.offsetParent;
        var Left = obj.offsetLeft;
        var Top = obj.offsetTop;
        while (objTemp) {
            Left = Left + objTemp.offsetLeft;
            Top = Top + objTemp.offsetTop;
            objTemp = objTemp.offsetParent;
        }
		
		DesignPopup.style.left = Left;
		DesignPopup.style.top = Top;
		
		DesignPopup.innerHTML = div.innerHTML ;	
		if(document.getElementById("DesignPopup") == null)
		{
			document.body.appendChild(DesignPopup);	
		}
		DesignPopup.attachEvent('onmouseleave', RemoveDesignMenu);	
	}
}

/*
	A function which takes requested page number  and 
	submits the form with filling the values in associated hidden form elements.
*/
function getnextpage(screenpartname, submittername, selectablecolumnname, actionname, pagenumber, totalpagecount)
{
	var elementName;
	var pageNo;
	
	if (selectablecolumnname != '')
	{
	    // If the list is editable and any rows are changed
	    // then confirm to change page without saving.
		var obj;	
		var changed = false;
		obj = eval('document.forms(0).' + screenpartname + '_' + selectablecolumnname);	
		if ( obj != null )
		{
			for (var i = 0; i < obj.length; i++)
			{
			    if(obj[i].style.visibility != 'hidden' && obj[i].style.display != 'none')
			    {
				    if (obj[i].checked)
				    {
					    changed = true;
					    break;
				    }
                }
			}
		}
		
		if (changed)
			if (!confirm(msg[MSG_LISTISCHANGED]))
				return;
	}
	
    elementName = screenpartname + PAGING_GOTOPAGEELEMENTSUFFIX;
	var element = document.forms(0).elements(elementName);

	if (pagenumber == -1)
	{
		if (element[0] == null)
		    pageNo = element.value;		
		else
		{
		    if (element[0].value != '')
		        pageNo = element[0].value;
		    else
		        pageNo = element[1].value;		        
		}
		
		if ( pageNo - totalpagecount  > 0 )
		{						
			pageNo = totalpagecount;
		}		
		if (trim(pageNo) == "")
		{
			return;					
		}
	}
	else
	{
		pageNo = pagenumber;
	}	
	elementName = screenpartname + PAGING_REQUESTEDPAGENUMBER;
	element = document.forms(0).elements(elementName);
	if (element[0] == null)
	{
	    element.value = pageNo;
	}
	else
	{
	    element[0].value = pageNo;
	    element[1].value = '';
	}
	    
	submitform(screenpartname, submittername, actionname, false);
}

function setLetterFilter(listpartname, criteriaformpartname, letter)
{
	elementName = listpartname + PAGING_REQUESTEDPAGENUMBER;
	if (document.forms(0).elements(elementName) != null)
		document.forms(0).elements(elementName).value = "1";	
	elementName = listpartname + ELEMENT_LETTERFILTER;
	if (document.forms(0).elements(elementName) != null)
		document.forms(0).elements(elementName).value = letter;
	submitform(criteriaformpartname, 'X_LETTER', 'X_LETTER', true);	
}

function submitcriteriaform(listpartname, screenpartname, submittername, action, validateform, message)
{
	var elementName = listpartname + PAGING_REQUESTEDPAGENUMBER;
	if ( document.forms(0).elements(elementName) != null )
	{
		document.forms(0).elements(elementName).value = PAGING_FIRSPAGE;		
	}
	if (iscriteriaselected(screenpartname))
	{
		submitform(screenpartname, submittername, action, validateform);
	}
	else
	{
		alert(message);
	}
}

// this is the script executed by the submitting button
// on a listpart where HasQuickFilter is true.
function submitListPartQuickFilters(listpartname, submittername, action, validateform, message)
{
	var elementName = listpartname + PAGING_REQUESTEDPAGENUMBER;
	if ( document.forms(0).elements(elementName) != null )
	{
		document.forms(0).elements(elementName).value = PAGING_FIRSPAGE;		
	}
	if (IsQuickFilterSupplied(listpartname))
	{
		submitform(listpartname, submittername, action, validateform);
	}
	else
	{
		alert(message);
	}
}

// checks whether the user has supplied any 
// values for any of the filters on a listpart where HasQuickFilter is true.
function IsQuickFilterSupplied(screenpartname)
{
    //TODO : implement this
    return true;
}

// this function is used to either open or close the filter interface
// when hasquickfilter is true for a list
function ResetQuickFilterInterface(screenpartname, openedclosed)
{
    var TOPDIVID = "_TOPDIVID";
    var BOTTOMDIVID = "_BOTTOMDIVID";
    var QUICKFILTERROW = "_QUICKFILTERROW";
    var QUICKFILTERSTATE = "_QUICKFILTERSTATE";
    var OPENED = 1;
    
    var topDivId = screenpartname + TOPDIVID;
    var bottomDivId = screenpartname + BOTTOMDIVID;
    var filterRowId = screenpartname + QUICKFILTERROW;
    var filterStateId = screenpartname + QUICKFILTERSTATE;
    
    var topDiv = document.getElementById(topDivId);
    var bottomDiv = document.getElementById(bottomDivId);
    var filterRow = document.getElementById(filterRowId);
    var filterState = document.getElementById(filterStateId);
    
    if(openedclosed == OPENED)
    {
        visible_element(topDiv, '0');
        visible_element(bottomDiv, '1');
        visible_element(filterRow, '1');
        filterState.value = "1";
    }
    else
    {
        visible_element(topDiv, '1');
        visible_element(bottomDiv, '0');
        visible_element(filterRow, '0');
        filterState.value = "0";
    }
}

function iscriteriaselected(screenpartname)
{
	var CHECKBOXSUFFIX = '_CHECKBOX';
	var chkCount = 0;
	var selected = false;
	for (var i = 0; i < document.forms(0).elements.length; i++)
	{	
 		elm = document.forms(0).elements(i);
		if (elm.name.substr(0, screenpartname.length) == screenpartname && elm.name.indexOf(CHECKBOXSUFFIX) >= 0 )
		{
			if (elm.name.substr(elm.name.length - CHECKBOXSUFFIX.length, CHECKBOXSUFFIX.length) == CHECKBOXSUFFIX)
			{					
				chkCount++;
				if (elm.checked)
				{
					selected = true;
					break;	
				}
			}
		}
	}
	if ((chkCount == 0) || ((chkCount > 0) && (selected == true)))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function changelistorder(screenpartname, submittername, action, orderType)
{
    submitform(screenpartname , submittername + '_' + orderType, action, false);	
}

function functionexists(functionname)
{
	var exists = false;
	var i;
	var currentScript;
	for (i = 0; i < document.scripts.length; i++)
	{
		currentScript = document.scripts[i].text;	
		exists = (currentScript.indexOf(functionname + '(') >= 0) || (currentScript.indexOf(functionname + ' (') >= 0);
		if (exists)
			break;
	}
	return exists;
}

function MenuSubmit(menuID, isUrl, url, screenParts, elements, values, isPopup, height, width)
{
    try
    {
        // if the popup message is open then the user should not be able to browse to
        // another page.
        if(YAHOO.example.container.simpledialog1.element.style.visibility == "visible")
        {
            return;
        }
    }
    catch(e)
    {
    }
    
	var sFeatures = 'center:yes;resizable:yes;scroll:no;status:no';
	var sPopupFeatures = 'center:yes;resizable:yes;scroll:no;status:no';
	var httpPostResult = '';
					
	if (isUrl)
	{
		switch (isPopup)
		{
			case 0: 
			    if (!ContinueScreenChange())
			        return;
			    ResetHttpPostDocument(HPSOURCE_SCREEN);
		    
			    parameterIndex = GetParamCounterInd();
			    if(parameterIndex!= -1)
			    {			        
			        var xmlNode = HttpPostDocument.documentElement;
				    xmlNode.setAttribute("id", parameterIndex);
		            httpPostResult = HttpPost();
                }
                else
                {
                   parameterIndex = parseQueryStringForCounterId(location.search);
                   if(parameterIndex != -1)
                   {
                        var xmlNode = HttpPostDocument.documentElement;
                        xmlNode.setAttribute("id", parameterIndex);
                   }
                   httpPostResult = HttpPost();
                   parameterIndex = ParseHttpDocResult(httpPostResult);
                }
			    
			    if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
		            url = url + (url.indexOf('?') > 0 ? "&" : "?") + PARAMCOUNTERIND + '='+ parameterIndex;
				    location.href = url ;
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				break;
				
			case 1:
			case 2:

				isPopup = isPopup -1;
				openScreen(url,false,'','','','','','','','',width,height,isPopup);	
				
				break;	
		    case 3:
				openScreen(url,false,'','','','','','','','',width,height,8);	
				
				break;							
		}
	}
	else
	{
	
		switch (isPopup)
		{
			case 0: 
			    if (!ContinueScreenChange())
			        return;
			    var QS_XML = 'xml';
		        var QS_MENUID = 'menuID';
		        var QS_SCREENPART = 'sp';
		        var QS_ELEMENT = 'el';
		        var QS_VALUE = 'v';
		        var params  = QS_XML + '=' + url + '&' + QS_MENUID + '=' + menuID;
		        var SEPARATOR = '~';
		        var index;
		        var screenPartArray = screenParts.split(SEPARATOR);
		        var elementsArray = elements.split(SEPARATOR);
		        var valuesArray = values.split(SEPARATOR);
		        var spName, eName, evName, eValue;
		        
		        if(HttpPostDocument==null)
	            {
	                InitializeHttpPostDocument();
	            }
		        ResetHttpPostDocument(HPSOURCE_SCREEN);
		        
		        for (index = 0; index < screenPartArray.length; index++)
		        {			        			        
			        spName = screenPartArray[index]; 
                    eName = elementsArray[index];
                    evName = QS_VALUE + (index + 1);
                    eValue = valuesArray[index];
			        
			        AddParameterItem(spName, eName, evName, eValue);
		        }	
		        
		        var xmlNode = HttpPostDocument.documentElement;
		        parameterIndex = GetParamCounterInd();
				xmlNode.setAttribute("id", parameterIndex);
		        httpPostResult = HttpPost();
			    
			    if(httpPostResult.indexOf(HTTPPOSTDONE)>-1)
		        {
		            params = params + '&' + PARAMCOUNTERIND + '='+ parameterIndex;
				    location.href = "screen.aspx?" + params;
				}
				else if(httpPostResult == msg[MSG_HTTPPOSTERROR])
	            {
	                GotoLoginPage();
	            }
				else
				{
				    alert(httpPostResult);
				}
				
				break;
				
			case 1:
			case 2:
			
				isPopup = isPopup -1;
			
				openScreen(url,true,'',screenParts,elements, values,'','','','',width,height,isPopup);				
				break;
				
			 case 3:
				openScreen(url,true,'',screenParts,elements, values,'','','','',width,height,8);																			
		}
		
	}
}
function parseQueryStringForCounterId(queryString) 
{
    paramCounterId = -1;
    if(queryString == 'undefined' || queryString == '') 
    {
        return paramCounterId;
    } 
    else
    {
        // Get rid of a leading '?' so that you can pass 'location.search' to this function
        if(queryString.substr(0, 1) == '?') { queryString = queryString.substr(1); }

        // Split up the querystring
        var components = queryString.split('&');

        // Assign each variable of the querystring to a new property of the final object
        var parts;
        for (var i = 0; i < components.length; i++) 
        {
            parts = components[i].split('=');
            if(parts[0] == PARAMCOUNTERIND)
            {
                paramCounterId =  decodeURI(parts[1]);
            }
        }
        return paramCounterId;
    }
}
function GetParamCounterInd()
{
    parameterIndex = -1;
    if(document.getElementById("X_PARAMCOUNTER")!=null)
    {
        parameterIndex = document.getElementById("X_PARAMCOUNTER").value;
    }
    return parameterIndex;
}

function resetMasterscreenpart(screenPartName, details)
{
    resetscreenpart(screenPartName);
    var list = details.split(',');
    var i = 0;
    for(i = 0; i < list.length; i++)
    {
        resetscreenpart(list[i]);
    }
}

function resetscreenpart(screenPartName)
{
	if (processing)
		return;
		
	var ELEMENTINITIALVALUES = "_INITIALVALUE";
	var SPLIT = '~';	
	xmlInitialValue = document.getElementById(screenPartName + ELEMENTINITIALVALUES);
	if (xmlInitialValue != null)
	{
		var z = ElementInitialValues(xmlInitialValue);
		var i, elementInitialValue;
		var elm, newValue ,id , value;
		submitLoad = false;
		try
		{
			for (i = 0; i < z.length; i++)
			{
				elementInitialValue = z[i];
				elm = document.all(elementInitialValue.Name);
				if (elm != null)
				{
					newValue = elementInitialValue.Value;

					if (newValue.indexOf(SPLIT) >= 0)
					{
						id = newValue.split(SPLIT)[0] + SPLIT + newValue.split(SPLIT)[1];
						value = newValue.split(SPLIT)[1];
					}
					else
					{
						id = newValue;
						value = newValue;
					}
							
					if (elm.length > 0 && elm.set == null)
					{					
						elm = elm(0);										
					}
					//alert(elm.Name + ' ' + id + ' ' + newValue);
					
					if (elm.set != null)
					{
						eval(elm.set + '(elm, controlValue(id,value));');
					}
				}
			}
			
		}
		catch(e)
		{
			
		}
		finally
		{
			submitLoad = true;
		}		
	}	
}

function ElementInitialValue(xmlNode)
{
	var ATTR_NAME = 'Name';
	var ATTR_VALUE = 'Value';
	
	var elementInitialValue = new Object();
	elementInitialValue.Name = xmlNode.getAttribute(ATTR_NAME);
	elementInitialValue.Value = xmlNode.getAttribute(ATTR_VALUE);
	return elementInitialValue;
}

function ElementInitialValues(xmlIsland)
{
	if (xmlIsland == null)
	{
		return null;
	}
	else
	{
		var ELEMENTTAG_ELEMENTINITIALVALUES = 'Elements/Element';
		var elementInitialValues = new Array();
		var nodes = xmlIsland.XMLDocument.selectNodes(ELEMENTTAG_ELEMENTINITIALVALUES);
		for (i = 0; i < nodes.length; i++)
			elementInitialValues[i] = ElementInitialValue(nodes.nextNode);
		return elementInitialValues;
	}
}

// BEGIN TASKID : 46292
function IsMultipleSelectElement(currentSourceElement)
{
    var retval = false;
    var resetmultipleselect = "reset_multipleselect";
    if(currentSourceElement != null)
    {
        if(currentSourceElement.reset != null)
        {
            if(currentSourceElement.reset == resetmultipleselect)
            {
                retval = true;
            }
        }
    }
    return retval;
}
// END TASKID : 46292

// BEGIN TASKID : 46292
function IsMultipleSelectDetailElement(currentSourceElement)
{
    var retval = false;
    var detailid = "_DETAILID";
    if(currentSourceElement != null)
    {
        var id = currentSourceElement.id;
        if(endsWith(id, detailid))
        {
            retval = true;
        }
    }
    return retval;
}
// END TASKID : 46292

function AttachEvents(elementModifier, currentSourceElement)
{
	var ATTRIBUTE_REQUIRED = 'Required', ATTRIBUTE_VISIBLE = 'Visible',
		ATTRIBUTE_ENABLED = 'Enabled', ATTRIBUTE_VALUE = 'Value';
	var EVENT_ONBLUR = 'onblur';
	var EVENT_ONCHANGE = 'onchange';
	var EVENT_ONCLICK = 'onclick';
	var EVENT_ONPROPERTYCHANGE = 'onpropertychange';
	//var attachevent = EVENT_ONCHANGE; //EVENT_ONBLUR;
	var attachevent = EVENT_ONBLUR;
	if (currentSourceElement.tagName.toLowerCase() == 'select')
		attachevent = EVENT_ONCHANGE;
	if (currentSourceElement.modifieronblur != null)
		attachevent = EVENT_ONPROPERTYCHANGE;
	if (currentSourceElement.type == 'checkbox')
		attachevent = EVENT_ONPROPERTYCHANGE;
    if(currentSourceElement.type == 'radio')
        attachevent = EVENT_ONCLICK;		
		
	if(IsMultipleSelectDetailElement(currentSourceElement))
	{	    
	    attachevent = EVENT_ONPROPERTYCHANGE;
	}
	
	switch (elementModifier.Attribute)
	{
		case ATTRIBUTE_REQUIRED: 
			currentSourceElement.attachEvent(attachevent, ModifierRequired);
			ModifierRequiredRun( currentSourceElement, true );
			break;
		case ATTRIBUTE_VISIBLE:
			currentSourceElement.attachEvent(attachevent, ModifierVisible);
			ModifierVisibleRun( currentSourceElement, true );
			break;					
		case ATTRIBUTE_ENABLED: 
			currentSourceElement.attachEvent(attachevent, ModifierEnabled);
			ModifierEnabledRun( currentSourceElement, true );
			break;
		case ATTRIBUTE_VALUE: 
			currentSourceElement.attachEvent(attachevent, ModifierValue);
			ModifierValueRun( currentSourceElement, true );
			break;
	}
	
	if(currentSourceElement.currencyinputtype != null)
	{
		var DEC = "_DEC";
		var CURID = "_CURID";
		
		var idValue = currentSourceElement.id;
		
		var idDec = idValue + DEC;
		var idCurid = idValue + CURID;
		
		var elmDec = document.getElementById(idDec);
		var elmCurid = document.getElementById(idCurid);
		
		switch (elementModifier.Attribute)
		{
			case ATTRIBUTE_REQUIRED: 
				if(elmDec != null)
				{
					elmDec.attachEvent(attachevent, ModifierRequired);
				}
				if(elmCurid != null)
				{
					elmCurid.attachEvent(attachevent, ModifierRequired);
				}
				break;
			case ATTRIBUTE_VISIBLE:				
				if(elmDec != null)
				{
					elmDec.attachEvent(attachevent, ModifierVisible);
				}
				if(elmCurid != null)
				{
					elmCurid.attachEvent(attachevent, ModifierVisible);
				}					
				break;					
			case ATTRIBUTE_ENABLED: 				
				if(elmDec != null)
				{
					elmDec.attachEvent(attachevent, ModifierEnabled);
				}
				if(elmCurid != null)
				{
					elmCurid.attachEvent(attachevent, ModifierEnabled);
				}				
				break;
			case ATTRIBUTE_VALUE: 				
				if(elmDec != null)
				{
					elmDec.attachEvent(attachevent, ModifierValue);
				}
				if(elmCurid != null)
				{
					elmCurid.attachEvent(attachevent, ModifierValue);
				}					
				break;
		}				
	}
}

function InitializeElementModifers(screenpartName)
{
    var SCREENPARTNAMES = 'X_SCREENPARTNAMES';
	var COMMA = ',';

	
	var screenpartobjects = document.forms(0).elements(SCREENPARTNAMES);
	
	//if screenpart names are not unique, handle the first instance
	if ( screenpartobjects!= null)
	{	
		
		if(screenpartobjects.length>1)
		{
			var screenPartNames = screenpartobjects[0].value.split(COMMA);
		}
		else
		{
			var screenPartNames = screenpartobjects.value.split(COMMA);
		}
		
		
		var screenPartNameIndex;
		var xmlModifier;
		for (screenPartNameIndex = 0; screenPartNameIndex < screenPartNames.length; screenPartNameIndex++)
		{
			if (screenPartNames[screenPartNameIndex] != '')
			{
				AttachModifierEvents(screenPartNames[screenPartNameIndex]);
			}
		}
	}
}
/*
	A function which takes arguments from submitter html form element and 
	submits the form with filling the values in associated hidden form elements, if confirmation is ok.
*/
function ConfirmateSubmitForm(screenpartname, submittername, action, validateform, message)
{
	if (!processing)
	{
		if(confirm(message))
		{
			submitform(screenpartname, submittername, action, validateform);
		}
	}
}

/*
    This function is used by bound operation mode delete.
*/
function ConfirmateSubmitMasterForm(screenpartname, submittername, action, validateform, message, details)
{
	if (!processing)
	{
		if(confirm(message))
		{
			submitMasterForm(screenpartname, submittername, action, validateform, details);
		}
	}
}

function ConfirmateSubmitFormByRow(screenpartname, submittername, action, validateform, message, listcolumnname, listrowindex)
{
       //Listede tek satır kaldığında silinmeme problemiden dolayı eklendi. 18-12-2008, emresa
       checkbyrow(screenpartname, listcolumnname, listrowindex);

       // Check only this row's checkbox. Uncheck others
       var objPageNum = document.forms(0)[screenpartname + '_PAGENUMBER'];
       var pagenumber = objPageNum.value;
       var submittercheckbox = document.forms(0)[screenpartname + '_' + listcolumnname + pagenumber][listrowindex];
       if (submittercheckbox != null)
           if(submittercheckbox.checked == false)
               checkbyrow(screenpartname, listcolumnname, listrowindex);
       var othercheckboxes = document.forms(0)[screenpartname + '_' + listcolumnname + pagenumber];
       if(othercheckboxes != null)
       {
           for(var i=0;i<othercheckboxes.length;i++)
        {
            if(i != listrowindex)
            {
                var elmCheckbox = document.forms(0)[screenpartname + '_' + listcolumnname + pagenumber][i];
                if(elmCheckbox != null)
                    reset_checkbox(elmCheckbox);
            }
        }
    }
       
       // Call ConfirmateSubmitForm
       ConfirmateSubmitForm(screenpartname, submittername, action, validateform, message);
}

function disablebutton(element, value)
{
	var TYPEBUTTON = 'button';
	if (element != null)
		if (element.type == TYPEBUTTON)
			element.disabled = value;
}

function disablesubmit(value)
{
	var BLOCKERFREE = 'X_PROCESSINGPOPUPBLOCKERFREE';
	var HIDDENPROCESSINGPOPUP = 'X_PROCESSINGPOPUP';
    var elementblockerfree = document.forms(0).elements(BLOCKERFREE);			
    var blockervalue = elementblockerfree.value;
    
    if(blockervalue == "0" || blockervalue == "")
    {
	    if (msg[MSG_PROCESSING] != null)
	    {
		    if (value)
		    {
			    processing = true;
			    document.body.style.cursor = 'wait';
			    var processingPopupBody = processingPopup.document.body;
			    if(processingPopup.document.styleSheets.length == 0)			
			    {
				    for (i = 0; i < document.styleSheets.length; i++)
				    {
					    var styleSheet = document.styleSheets[i];
					    if(styleSheet.href.indexOf("processing.css", 0) >= 0)
					    {
						    processingPopup.document.createStyleSheet(styleSheet.href, i);
					    }
				    }
			    }
			    processingPopupBody.className = "processingpopup";
			    var processingMessage = "<div id=processingPopupDiv class=processingpopupdiv><p><span class=processingpopupspan id=processingpopupspan>" + msg[MSG_PROCESSING] + "</span><br></p><p>&nbsp;</p><p><img src=images/pleasewait.gif></p></div>";
			    processingPopupBody.innerHTML = "<table border=1 class=processingpopuptable><tr class=processingpopuptr><td class=processingpopuptd>" + processingMessage + "</td></tr></table>";

			    var obj = GetWindow();
			    var windowHeight = obj.screen.availHeight;
			    var windowWidth = obj.screen.availWidth;

			    popupLeft = (windowWidth - PROCESSING_POPUP_WIDTH) / 2;
			    popupTop = (windowHeight - 2 * PROCESSING_POPUP_HEIGHT) / 2;
			    processingPopup.show(popupLeft, popupTop, PROCESSING_POPUP_WIDTH, PROCESSING_POPUP_HEIGHT, document.body);
		    }
		    else
		    {
			    document.body.style.cursor = 'auto';
			    processingPopup.hide();
			    processing = false;
		    }
	    }
	}
	else
	{
	    if (value)
	    {
	        var SPLIT = '~';			    
    	    
	        var definition = blockervalue.split(SPLIT);	
	        var body = document.forms(0).elements(HIDDENPROCESSINGPOPUP).value;	    			    
    	    			    			    
	        initProcessingPopup(definition, body);				    			    			    
    	    
	        YAHOO.example.container.simpledialog1.show();
	    }
	    else
	    {
	        if((YAHOO.example.container != null) && (YAHOO.example.container.simpledialog1 != null))
	            YAHOO.example.container.simpledialog1.hide();
	    }
	}
	
}

function submitYes()
{
	var SUBMITTERNAME = 'X_SUBMITTER', 
	SUBMITTERSCREENPARTNAME = 'X_SUBMITTERSCREENPART',
	ACTIONNAME = 'X_ACTION',
	VALIDATE = 'X_VALIDATE',
	YESNO = 'X_YESNO';
	
	var submittername, screenpartname, action, validateform
	submittername = document.forms(0).elements(SUBMITTERNAME).value;
	screenpartname = document.forms(0).elements(SUBMITTERSCREENPARTNAME).value;
	action = document.forms(0).elements(ACTIONNAME).value;
	validateform = (document.forms(0).elements(VALIDATE).value == "1");	
	document.forms(0).elements(YESNO).value = "1";
	submitform(screenpartname, submittername, action, validateform);
}

/*
    This function is used by BoundOperation mode. It tries to
    validate a single detail screenpart whose name is given by
    spname parameter.
*/
function ValidateSingleDetailScreenPart(screenpartname, submittername)
{
    var valid = true;	

	var customValidate = 'validate' + 'beforesubmit';
	var listValidate = 'validate' + 'beforesubmit_' + screenpartname;
	
	var buttonname = screenpartname + "_" + submittername;
	var element = document.getElementById(buttonname);
	var validate = false;
	if(element != null)
	{
	    if(element.validateform != null)
	    {
	        if(element.validateform == "1")
	        {
	            validate = true;
	        }
	    }
	}
	
	var SUBMITTERNAME = 'X_SUBMITTER', 
		SUBMITTERSCREENPARTNAME = 'X_SUBMITTERSCREENPART',
		ACTIONNAME = 'X_ACTION',
		VALIDATE = 'X_VALIDATE',
		LETTERACTION = 'X_LETTER';
		
    if(validate)	
	{
	    if (functionexists(listValidate))
	    {
		    valid = eval(listValidate + '(screenpartname);');
	    }	
	    else if (functionexists(customValidate))	
	    {				
		    valid = eval(customValidate + '(screenpartname);');
	    }
    	
        if (valid)
	    {
		    valid = ValidateForm(screenpartname, true);
	    }
	}
	
	return valid;
}

/*
    This function is used by BoundOperation mode. It tries to
    validate the detail screenparts for a master screenpart.
    detailscreenparts : is a comma separated list of detail screenparts
*/
function ValidateDetailScreenParts(detailscreenparts, validateform, submittername)
{
    var COMMA = ',';
    var valid = true;
    
    if(validateform)
    {
        if(detailscreenparts != '')
        {
            var list = detailscreenparts.split(COMMA);
            var i = 0; 
            var detail = '';       
            
            for(i = 0; i < list.length; i++)
            {
                detail = list[i];
                valid = ValidateSingleDetailScreenPart(detail, submittername);
                if(!valid)
                {
                    break;
                }
            }
        }
    }
    
    return valid;
}

/*
    This function is used by BoundOperation mode. It tries to
    validate the master screenpart [form].
*/
function submitMasterForm(screenpartname, submittername, action, validateform, detailscreenparts)
{
    if (processing)
		return;
		
	try
	{
		var valid = true;
		if(event != null)
		{
			var submitter = event.srcElement;
			disablebutton(submitter, true);
		}

		var customValidate = 'validate' + 'beforesubmit';
		var listValidate = 'validate' + 'beforesubmit_' + screenpartname;
		
		var SUBMITTERNAME = 'X_SUBMITTER', 
			SUBMITTERSCREENPARTNAME = 'X_SUBMITTERSCREENPART',
			ACTIONNAME = 'X_ACTION',
			VALIDATE = 'X_VALIDATE',
			LETTERACTION = 'X_LETTER';
			
		valid = ValidateDetailScreenParts(detailscreenparts, validateform, submittername);
		
		if(valid)
		{	
		    if (validateform)
		    {				
			    if (functionexists(listValidate))
			    {
				    valid = eval(listValidate + '(screenpartname);');
			    }	
			    else if (functionexists(customValidate))	
			    {				
				    valid = eval(customValidate + '(screenpartname);');
			    }
		    }
		    
		    if (valid)
		    {
			    valid = ValidateForm(screenpartname, validateform)
			    if (valid)
			    {
			        if(submitter != null && submitter.ConfirmScreenChange == '1')
		            {
		                if (!ContinueScreenChange())
		                {
		                    disablebutton(submitter, false);
			                disablesubmit(false);
		                    return;
		                }
		            }
        		    disablesubmit(true);

				    document.forms(0).elements(SUBMITTERNAME).value = submittername;
				    document.forms(0).elements(SUBMITTERSCREENPARTNAME).value = screenpartname;
				    document.forms(0).elements(ACTIONNAME).value = action;
				    document.forms(0).elements(VALIDATE).value = validateform ? "1" : "0";
    									
				    if(document.getElementById("X_OFFSET") != null)
				    {
					    /*
					    document.getElementById("Y_OFFSET").value = window.event.clientY + 2;
					    document.getElementById("X_OFFSET").value = window.event.clientX + 2;
					    */
					    document.getElementById("Y_OFFSET").value = window.scrollTop  + 2;
					    document.getElementById("X_OFFSET").value = window.scrollLeft + 2;
					    
					    // TASK(51811): SmartNavigation after popup w/ postback problem.
					    //              set X_INITFOCUS = 0 to disable automatic focus
					    document.getElementById("X_INITFOCUS").value = "0";
				    }

				    document.forms(0).submit();
			    }
		    }
		}		
		
		
	}
	finally
	{
		if (!valid)
		{
			disablebutton(submitter, false);
			disablesubmit(false);
		}
	}
}

/*
	A function which takes arguments from submitter html form element and 
	submits the form with filling the values in associated hidden form elements.
*/
function submitform(screenpartname, submittername, action, validateform)
{
	if (processing)
		return;
		
	try
	{
		var valid = true;
		var submitter = null;
		if(event != null)
		{
			submitter = event.srcElement;
			disablebutton(submitter, true);
		}

		var customValidate = 'validate' + 'beforesubmit';
		var listValidate = 'validate' + 'beforesubmit_' + screenpartname;
		
		var SUBMITTERNAME = 'X_SUBMITTER', 
			SUBMITTERSCREENPARTNAME = 'X_SUBMITTERSCREENPART',
			ACTIONNAME = 'X_ACTION',
			VALIDATE = 'X_VALIDATE',
			LETTERACTION = 'X_LETTER';
			
		if (validateform && action != LETTERACTION)
		{				
			if (functionexists(listValidate))
			{
				valid = eval(listValidate + '(screenpartname);');
			}	
			else if (functionexists(customValidate))	
			{				
				valid = eval(customValidate + '(screenpartname);');
			}
		}
		
		if (valid)
		{
			valid = ValidateForm(screenpartname, validateform)
			if (valid)
			{
			    if(submitter != null && submitter.ConfirmScreenChange == '1')
		        {
		            if (!ContinueScreenChange())
		            {
		                disablebutton(submitter, false);
			            disablesubmit(false);
		                return;
		            }
		        }
        		disablesubmit(true);

				document.forms(0).elements(SUBMITTERNAME).value = submittername;
				document.forms(0).elements(SUBMITTERSCREENPARTNAME).value = screenpartname;
				document.forms(0).elements(ACTIONNAME).value = action;
				document.forms(0).elements(VALIDATE).value = validateform ? "1" : "0";
									
				if(document.getElementById("X_OFFSET") != null)
				{
				    /*
					document.getElementById("Y_OFFSET").value = window.event.clientY + 2;
					document.getElementById("X_OFFSET").value = window.event.clientX + 2;
					*/

                    //TODO: check if following lines compliant
                    // ref: http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
				    document.getElementById("Y_OFFSET").value = document.body.scrollTop  + 2;
				    document.getElementById("X_OFFSET").value = document.body.scrollLeft + 2;

				    // TASK(51811): SmartNavigation after popup w/ postback problem.
				    //              set X_INITFOCUS = 0 to disable automatic focus
				    document.getElementById("X_INITFOCUS").value = "0";
				}

				document.forms(0).submit();
			}
		}
	}
	finally
	{
		if (!valid)
		{
			disablebutton(submitter, false);
			disablesubmit(false);
		}
	}	
}

function submitformbyrow(screenpartname, submittername, action, validateform, listcolumnname, listrowindex)
{
	checkbyrow(screenpartname, listcolumnname, listrowindex);
	
	// Call submitform
	submitform(screenpartname, submittername, action, validateform);
}

function checkbyrow(screenpartname, listcolumnname, listrowindex)
{
	// Check only this row's checkbox. Uncheck others.
	var checkboxname = screenpartname + '_' + listcolumnname;
	var obj = document.forms(0)[checkboxname];
	if(obj!=null)
	{
	    obj.click();
	    if (obj.checked) obj.click();
	}
	// Find submitter		
	var objPageNum = document.forms(0)[screenpartname + '_PAGENUMBER'];
	var pagenumber = objPageNum.value;
	var submittercheckbox = document.forms(0)[screenpartname + '_' + listcolumnname + pagenumber][listrowindex];
	if (submittercheckbox == null)
	{
		submittercheckbox = document.forms(0)[checkboxname];
	}
	
	// Call submitter's click
	submittercheckbox.click();	
}

function showerror(sMsg, sUrl, sLine)
{
	//alert('javascript error: (' + err.number + ') ' + err.description);
	var message = 'A jscript error occured, please save the message for your reference...\n';
	message += 'javascript error: ' + sMsg + '\n';
	message += 'error line: ' + sLine + '\n';
	message += 'url: ' + sUrl;
	alert(message);
	return false;
}

function ValidateForm(screenpartname, validateform)
{
	var validate = true;
	var callfunction;
	var elm;
	if (validateform)
	{
		for (var i = 0; i < document.forms(0).elements.length; i++)
		{	
 			elm = document.forms(0).elements(i);
			if (elm.name.substr(0, screenpartname.length) == screenpartname)
				if (elm.validate != null)
				{					
					callfunction = elm.validate;
					validate = eval(callfunction + '(elm);');
					if (!validate)
						break;
				}
		}
	}
	
	if(validate)
	{
		validate = CheckForScreenPartElementValidators(screenpartname, validateform);
	}
	
	return validate;
}

function AfterInit()
{
    var seperator = document.all['X_NUMBERDIGITSEP'];
	escapeCharFromObj(seperator);

	seperator = document.all['X_NUMBERDECIMALSEP'];
	escapeCharFromObj(seperator);

	seperator = document.all['X_CURRDIGITSEP'];
	escapeCharFromObj(seperator);

	seperator = document.all['X_CURRDECIMALSEP'];
	escapeCharFromObj(seperator);
	
	
	if (afterInitFunction != "")
		if (functionexists(afterInitFunction))
		{
			eval(afterInitFunction + '();');
		}
}


function syncValues()
{
    var element = event.srcElement.parentElement.parentElement;
    
    while ( null != element && null == element.elementType )
        element = element.previousSibling;
    
    if ( element == null )
        return;
    
    var srcValue = eval( element.filter + "( element ); ");
    
    var elms = document.getElementsByName( element.id );
    
    for ( var nItem = 0; nItem < elms.length; nItem++ )
    {
        eval( elms[ nItem ].set + "( elms[ nItem ], srcValue ); " );
    }
}


/*
	if the row selected then sets source element value to similar elemets which in same column
*/
function setallrowvalueoflist(sourceName, screenpartname, selectableElementName,pageSize)
{
	var name;
	var obj;
	var objSource = eval('document.getElementById(\'' + sourceName + '\')');	
	if (!objSource.readOnly)
	{
		obj = eval('document.forms(0).' + selectableElementName);	
		if ( obj.length > 0 )
		{
			for (var i = 0; i < pageSize; i++)
			{	    	 		
				if (obj[i] != null )	
				{		
					if ( obj[i].checked	)					
					{
						setrowvalue(objSource,screenpartname,'_' +  obj[i].value,pageSize);		
					}
				}
			}
		}
		else
		{		
			if ( obj.checked	)					
			{				
				setrowvalue(objSource,screenpartname,'_'+ obj.value,pageSize)
			}
		}
	}	
}

/*
	Get value from source object and set to new element   
*/
function setrowvalue(objSource,screenpartname,index,pageSize)
{
    var LANGUAGE_ALL = '*';
	var pgSize = new String();
	pgSize = pageSize + '';	
	var lenPageSize =  pgSize.length + 1;
	var newElementName;
	var newElement;
	var newValue;
	var languageExt;
	
	//var newElementName = objSource.name.substr(0,objSource.name.length-lenPageSize) + index;
   	//var newElement = eval('document.forms(0).' + newElementName );   	
   	//var newValue;
   	
   	if (objSource.name != null)
   	{
   	    languageExt = objSource.name.substr(objSource.name.length - 1, 1);
   	    if (languageExt == LANGUAGE_ALL)
   	    {
   	        // Element is a Multilingual element defined in separate mode.
		    newElementName = objSource.name.substr(0,objSource.name.length-lenPageSize-2) + index + '_' + languageExt;		    
   	    }
   	    else
   	    {   	
   	        //languageExt = objSource.name.substr(objSource.name.length - lenPageSize + 1, lenPageSize - 1);
   	        languageExt = objSource.name.split('_')[2];
   	        //if (languageExt == pgSize)
   	        if(languageExt == 0)
   	        {
		        //newElementName = objSource.name.substr(0,objSource.name.length-lenPageSize) + index;
		        newElementName = objSource.name.substr(0,objSource.name.length-(languageExt.length+1)) + index;
		    }
		    else
		    {
				languageExt = objSource.name.split('_')[4];
		        // Element is a Multilingual element defined in toggling mode.
				// newElementName = objSource.name.substr(0,objSource.name.length-lenPageSize-3) + index + '_' + languageExt;		    
		        newElementName = objSource.name.substr(0,objSource.name.length-lenPageSize-2) + index + '_' + languageExt;		    
		    }
		}
   		newElement = eval('document.forms(0).elements(\'' + newElementName + '\')');   	
   		if ( objSource.filter != null )
   		{
   			if (newElement != null)
   			{   	
   				if (newElement.setvalue != null)
   				{	
   					eval(newElement.setvalue + "(newElement,objSource);");
   				}
	   			
   			}
   		} 
   	}
   	// fix for radio buttons
   	else if (objSource.length != null)
   	{
   		for (var i = 0; i < objSource.length; i++)
   		{
   			var objSourceButton = objSource[i];
   			newElementName = objSourceButton.name.substr(0,objSourceButton.name.length-lenPageSize) + index;
   			newElement = eval('document.forms(0).' + newElementName + '[' + i + ']' );
   			if (newElement != null)
   			{   	
   				newElement.checked = objSourceButton.checked;
   				if ( objSource.filter != null )
   				{
   					if (newElement.setvalue != null)
   					{	
	   					eval(newElement.setvalue + "(newElement,objSourceButton);");
	   				}
	   			}
   			}
   		}
   	}
}

/*
	Find all checkbox element in criteriaformpart and change selected 
*/
function changeCriteriaCheckBox(screenpartname, selectvalue)
{
	var CHECKBOXSUFFIX = '_CHECKBOX';
	for (var i = 0; i < document.forms(0).elements.length; i++)
		{	
 			elm = document.forms(0).elements(i);
			if (elm.name.substr(0, screenpartname.length) == screenpartname && elm.name.indexOf(CHECKBOXSUFFIX) >= 0 )
			{
				if (elm.name.substr(elm.name.length - CHECKBOXSUFFIX.length, CHECKBOXSUFFIX.length) == CHECKBOXSUFFIX)
				{
					if (elm.IsRetainValueForce == null)
						elm.checked = selectvalue;
				}
			}
		}
}

/*
  This function is executed by the onchange event of the combo
  boxes listing the search keys in the criteria form. It makes
  the related row of the given table visible and others invisible.
*/
function WFSearchKeyChange(combo, tablename, index)
{
    var table = document.getElementById(tablename);
    var lang = document.getElementById("X_LANGUAGE").value;
    
    if(table != null)
    {
        var NULLVALUE = ' ';
        var CRITERIACOUNT = 4;
        var SEP = '_';
        var FIRST = 'FIRST';
        var SECOND = 'SECOND';
        var SPLIT = '~';
        var TYPE_DATE = 'Date';
        var TYPE_FREETEXT = 'FreeText';
        var TYPE_LIST = 'List';
        var TYPE_NUMERIC = 'Numeric';
        
        var selectedvalue = combo.value;
        var list = selectedvalue.split(SPLIT);
        var type = list[1];
        
        visible_element(table.rows[3], '0');
        visible_element(table.rows[0], '0');
        visible_element(table.rows[1], '0');
        visible_element(table.rows[2], '0');
        
        switch(type)
        {
            case TYPE_DATE:
                visible_element(table.rows[3], '1');
                visible_element(table.rows[0], '0');
                visible_element(table.rows[1], '0');
                visible_element(table.rows[2], '0');
                break;
            case TYPE_FREETEXT:
                visible_element(table.rows[0], '1');
                visible_element(table.rows[3], '0');
                visible_element(table.rows[1], '0');
                visible_element(table.rows[2], '0');
                break;
            case TYPE_LIST:
                visible_element(table.rows[1], '1');
                visible_element(table.rows[0], '0');
                visible_element(table.rows[3], '0');
                visible_element(table.rows[2], '0');
                
                var tname = list[2];
                var TABLEPARAMETER = 'TableName';
                var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
                xmlHttp.open("GET", "GetListContent.aspx?" + TABLEPARAMETER + '=' + tname, false)
                xmlHttp.send();
                var response = xmlHttp.responseText;
                
                var listcomboname = tablename.split(SEP)[0] + SEP + 'LISTELEMENT' + SEP + index + SEP + lang;
                var listcombo = document.getElementById(listcomboname);
                
                if(listcombo.options != null)
                {
                    if(listcombo.options.length > 0)
                    {
                        var j;
                        var len = listcombo.options.length;
                        for(j = 0; j < len; j++)
                        {
                            listcombo.options.remove(0);
                        }
                    }
                }
                
                if(response != '')
                {
                    var XmlDocument = new ActiveXObject("Msxml.DOMDocument");
                    XmlDocument.loadXML(response);                    
                    
                    var nodes = XmlDocument.selectNodes('Table/row');
                    var node;
                    var newOption;
                    
		            for (i = 0; i < nodes.length; i++)
		            {
		                node = nodes.nextNode;
		                newOption = document.createElement("OPTION") 
                        newOption.text = node.getAttribute("desc");
                        newOption.value = node.getAttribute("id");                        
                        listcombo.options.add(newOption);  
		            }			        
                }
          
                break;
            case TYPE_NUMERIC:
                visible_element(table.rows[2], '1');
                visible_element(table.rows[0], '0');
                visible_element(table.rows[1], '0');
                visible_element(table.rows[3], '0');
                break;
        }
    }
}

// This function is almost equal to organizealllistcheckbox
// except it calls organizelistcheckbox for each checkbox on the list
// this call is required to avoid unnecessary validation checks for
// element in rows that are not checked
function InitializeListCheckBoxes( screenPartName, elementName, index )
{
	var obj = null;
	
	obj = eval( 'document.forms(0).' + elementName );	

	if ( obj != null )
	{
		if ( obj.length > 0 )
		{
			for ( var nCheckBox = 0; nCheckBox < index; nCheckBox++ )
			{
				if ( obj[ nCheckBox ] != null )	
					organizelistcheckbox( obj[ nCheckBox ], screenPartName, '_' + nCheckBox );
			}

		}
		else
		{
		    organizelistcheckbox( obj, screenPartName, '_0' );
		}
		removevalidateattribute( screenPartName, '_' + index );
	}

}

/*
	Find all checkbox element in list and call organizelistcheckbox function for each element
*/
function organizealllistcheckbox(screenpartname,elementname,index)
{
	var name;
	var obj;	
	obj = eval('document.forms(0).' + elementname);	
	if ( obj != null )
	{
		if ( obj.length > 0 )
		{
			for (var i = 0; i < index; i++)
			{	    	 		
				if (obj[i] != null )	
				{
				    // Run onclick event of the checkbox.
				    // The first call in click event is already organizelistcheckbox function.
				    // Then the code declared in OnClickJS attribute of the ListColumn is called.
				    if ( obj[ i ].onclick )
				    eval(obj[i].onclick());
					//organizelistcheckbox(obj[i],screenpartname,'_' + i);		
				}
			}
	
		}
		else
		{
//			organizelistcheckbox(obj,screenpartname,'_' + i)
		}			
		removevalidateattribute(screenpartname, '_' + index);
	}
}

/*
	Returns is any checkbox selected 
*/
function IsListRowSelected(elementname, index)
{
	var retval = false;
	var count;
	count = ListRowSelectedCount(elementname, index);	
	if (count > 0)
	{
		retval = true; 
	}
	else
	{
		retval = false;
	}
	return retval;
}

// coded by YelizT on 20071203 10:25
// pasted by ErdoganK
function SelectListRow(screenpartname, selectablecolumnname, pagenumber, index)
{
    var obj;    
    obj = eval('document.forms(0).' + screenpartname + '_' + selectablecolumnname);     
    if ( obj != null )
    {
		if (index <obj.length && index >= 0)
		{
			if ( obj[ index ] != null )
			{
				if ( !obj[ index ].checked )
				{
					obj[ index ].click();
				}
			}
			else
			{
				if ( !obj.checked )
				{
				  obj.click();
				}
			}
		}
    }
}

function ListRowSelectedCount(elementname, index)
{
	var count = 0;
	var name;
	var obj;	
	obj = eval('document.forms(0).' + elementname);	
	if ( obj != null )
	{
		if ( obj.length > 0 )
		{
			for (var i = 0; i < index; i++)
			{	    	 		
				if (obj[i] != null )	
				{																	
					if (obj[i].checked)
					{
						count++;
					}
				}
			}
		}
		else
		{
			if (obj.checked)
			{
				count++;			
			}
		}			
	}	
	return count;
}

function GetFirstSelectedListRowValue(elementname, index)
{
	var retval = '';
	var name;
	var obj;	
	obj = eval('document.forms(0).' + elementname);	
	if ( obj != null )
	{
		if ( obj.length > 0 )
		{
			for (var i = 0; i < index; i++)
			{	    	 		
				if (obj[i] != null )	
				{																	
					if (obj[i].checked)
					{
						retval = obj[i].idvalue;
						break;
					}
				}
			}
		}
		else
		{
			if (obj.checked)
			{
				retval = obj.idvalue;			
			}
		}			
	}	
	return retval;
}

/*	
	if element is checked then restore element validate attribute 
	otherwise removes validate attribute
*/
function organizelistcheckbox(obj,screenpartname, index)
{	
	if (obj.checked)
	{		
		restorevalidateattribute(screenpartname, index);	
	}
	else
	{		
		removevalidateattribute(screenpartname, index);
	}
}

/*	
	Backup elements validate attribute to validate_old and removes validate attribute
	for each element which element name ends with "index" parameter 
*/
function removevalidateattribute(screenpartname, index)
{
	var len = index.length;
	var rowIndex = index.substr(1, index.length-1);	
	var listArray = eval(screenpartname + "JS");	
	if (rowIndex >= listArray.length)
	{		
		rowIndex = listArray.length - 1;		
	}
	var currentListRow = listArray[rowIndex];	
	
	var elementsArray = currentListRow.split(',');	   	
   	for (var i = 0; i < elementsArray.length; i++)
	{	
 		elm = document.getElementById(elementsArray[i]); 
	 					
		if (elm != null)
		{
			elm.setAttribute('validate_old', elm.validate);			
			elm.validate = null;			
		}
	}

	
}

/*	
	Restore elements validate_old attribute to validate attribute
	for each element which element name ends with "index" parameter 
*/
function restorevalidateattribute(screenpartname, index)
{
	var len = index.length;
	var rowIndex = index.substr(1, index.length-1);	
	var currentListRow = eval(screenpartname + "JS[" + rowIndex + "]");
	var elementsArray = currentListRow.split(',');	
   	for (var i = 0; i < elementsArray.length; i++)
	{			
 		elm = document.forms(0).elements(elementsArray[i]);
		if (elm != null)
		{					
			if (( null != elm ) && ( null != elm.validate_old ))
			{				
				elm.validate = elm.validate_old;				
			}
		}
	}
}

/*
	Sets and Resets parent window elements (PopUpActions)
*/
function setPopupScreenValuesToParent()
{
	//There should be at least one screen part at Loaded state
	var hasLoaded = false;
	var SCREENPARTNAMES = 'X_SCREENPARTNAMES';
	var FORMMODENAME = "_X_FORMMODE"
	var MODELOADED = "Loaded";
	var MODENEW = "New";
	var COMMA = ',';
	var elementScreenPartNames = document.forms(0).elements(SCREENPARTNAMES);
	
	var partNames = null;
	var partModes = {};
	var nItemsToSet = 0;
	var nItemsSet = 0;
	
	if (elementScreenPartNames != null)
	{
		partNames = document.forms(0).elements(SCREENPARTNAMES).value.split(COMMA);
		if (partNames[0] != '')
		{
		    partModes = new Array();
			for (i = 0; i < partNames.length; i++)
			{
				if (document.forms(0).elements(partNames[i] + FORMMODENAME) != null)
				{
					partModes[ partNames[ i ]] = document.forms(0).elements(partNames[i] + FORMMODENAME).value;
					hasLoaded = hasLoaded || ( partModes[ partNames[ i ]] == MODELOADED );
					//if (hasLoaded)
					//	break;
				} 
			}
		}
		else
		{
		    partModes = new Array( Number( partNames.length ));
		}
	}
	
	if ( hasLoaded )
	{
		var iframe = window.parent;	
		var parentWindow = iframe.dialogArguments;
		if(parentWindow == null)
	    {
	        return;
	    }
		var SETVALUES = 'X_SETVALUES';
		var RESETVALUES = 'X_RESETVALUES';
		var SETVALUESSOURCE = 'X_SETVALUESSOURCE';
		var destinationControls = document.forms(0).elements(SETVALUES).value.split(COMMA);
		var sourceControls = document.forms(0).elements(SETVALUESSOURCE).value.split(COMMA);
		var destinationControl;
		var sourceControl;
		var callfunctionName;
		var setValue, i;
		var error = false;
		//Set
		if (destinationControls[0] != '')
		{
			for (i = 0; i < destinationControls.length; i++)
			{
				destinationControl = parentWindow.document.forms(0).elements(destinationControls[i]);
				if(destinationControl != null)
				{
				
					callfunctionName = destinationControl.set;	
					if (callfunctionName != null)
					{
						sourceControl = document.forms(0).elements(sourceControls[i]);
						if (sourceControl != null)
						{
						    nItemsToSet++;
				            var scrPartName = ScreenPartOfElement( sourceControl );
        				    
				            if ( partModes[ scrPartName ] && ( partModes[ scrPartName ] == MODENEW )) // is this part loaded?
    				            continue;
							
							if (sourceControl.filter != null)
							{
								eval('setValue = ' + sourceControl.filter + '(sourceControl);');
								eval('parentWindow.' + callfunctionName + '(destinationControl,setValue);'); 
								
								nItemsSet++;
							}
						}
						else
						{
							alert('Source element was not found : ' + sourceControls[i] + ' !');
							error = true;
							break;
						}
					}
				}
				else
				{
					alert('Destination element was not found : ' + destinationControls[i] + ' !');
					error = true;
					break;
				}
			}
		}
		
		// if there is no error and at least one item is to be set, and at least one ha been set
		if(!error && (( nItemsSet = 0 ) && ( nItemsToSet > 0 )))
		{
			//ReSet
			destinationControls = document.forms(0).elements(RESETVALUES).value.split(COMMA);
			if (destinationControls[0] != '')
			{
				for (i = 0; i < destinationControls.length; i++)
				{
					destinationControl = parentWindow.document.forms(0).elements(destinationControls[i]);
					if(destinationControl != null)
					{
						callfunctionName = destinationControl.reset;	
						if (callfunctionName != null)
						{

							eval('parentWindow.' + callfunctionName + '(destinationControl);')
						}				
					}
					else
					{
						alert('Destination element was not found : ' + destinationControls[i] + ' !');
						error = true;
						break;
					}
				}
			}
		}
	}
}

/*
	Sets checked attribute of each checkbox element in list 
*/
function checkboxaction(obj,listpartName,pageSize,chkElementName)
{
	var skipControl;
	var objPageNum = eval ( 'document.forms(0).' + listpartName + '_PAGENUMBER');
	if ( objPageNum != null ) 
	{
		var tmpObj;
		var pageNumber = objPageNum.value;
		tmpObj = eval ( 'document.forms(0).' + obj.name + pageNumber);
		if ( tmpObj != null )
		{
			if ( tmpObj.length > 0 )
			{ 
				for (var index = 0; index < pageSize; index++)
				{			
					if ( tmpObj[index] != null )
					{
						if (!tmpObj[index].disabled)
						{							
							skipControl = 0;														
							if (tmpObj[index].readOnly != null)
							{
								if (tmpObj[index].readOnly)
								{
									skipControl = 1;
								}
							}
							if (skipControl == 0)
							{							
								tmpObj[index].checked = obj.checked;
							}
						}
					}
				}
			}
			else
			{
				if (!tmpObj.disabled)
				{
					tmpObj.checked = obj.checked;				
				}
			}						
			organizealllistcheckbox(listpartName,chkElementName,pageSize)
		}
	}
}

function submitsavedquery(menuid, xmlname, currentpageelementname, screenpartname, submittername, action, validateform,setpageNo)
{	
	var selectSavedQuery = document.forms(0).elements(screenpartname + '_' + submittername);
	if (selectSavedQuery.options[selectSavedQuery.selectedIndex].value == '')
	{
		MenuSubmit(menuid, false, xmlname, '', '', '', 0);
	}
	else
	{
		if (setpageNo)
		{	
			if (document.forms(0).elements(currentpageelementname) != null)
				document.forms(0).elements(currentpageelementname).value = 1;
		}
		submitform( screenpartname, submittername, action, validateform );
	}
}

// This function is called from save button of savequery screenparts.
function submitsavequery(screenpartname, submittername, action, validateform)
{
	// if listmode==cube
	var cube = document.getElementById('DCube');
	if (cube != null)
	{
		var DCRow = 2;
		var DCColumn = 1;
		var DCData = 3;
		var DCHidden = 0;
		var DCPage = 4;
		
		// set CubeLayout with cube's layout.
		var cubeLayout = document.getElementById(screenpartname + "_CubeLayout");
		
		// create new XML document
		var xmlIsland = document.getElementById(screenpartname + "_CubeDataIsland");

		// read cube's fields
		for (var i = 0; i < cube.Fields.Count(); i++)
		{
			var field = cube.Fields.Item(i);
			// set Axis and HasCubeTotal attributes.
			var xmlCubeLayoutNode = xmlIsland.XMLDocument.firstChild;
			var xmlNode = xmlIsland.XMLDocument.createElement("CubeField");
			xmlNode.setAttribute("Name", field.VarName);
			var orientationValue = "X";
			switch(field.Orientation)
			{
				case DCRow:
					orientationValue = "X";
					break;
				case DCColumn:
					orientationValue = "Y";
					break;
				case DCData:
					orientationValue = "Value";
					break;
				case DCHidden:
					orientationValue = "Hidden";
					break;
				case DCPage:
					orientationValue = "Page";
					break;			
			}
			xmlNode.setAttribute("Axis", orientationValue);
			xmlNode.setAttribute("HasColumnTotal", field.GroupFooterVisible ? '1' : '0');

/*			var xmlAttr = xmlIsland.XMLDocument.createAttribute("Name");
			xmlAttr.value = field.Name;
			xmlNode.attributes.append(xmlAttr);
			xmlAttr = null;
			
			xmlAttr = xmlIsland.XMLDocument.CreateAttribute("Axis");
			switch(field.Orientation)
			{
				case DCRow:
					xmlAttr.value = "X";
					break;
				case DCColumn:
					xmlAttr.value = "Y";
					break;
				case DCData:
					xmlAttr.value = "Value";
					break;
				case DCHidden:
					xmlAttr.value = "Hidden";
					break;
				case DCPage:
					xmlAttr.value = "Page";
					break;			
			}
			xmlNode.attributes.append(xmlAttr);
			xmlAttr = null;
			
			xmlAttr = xmlIsland.XMLDocument.CreateAttribute("HasColumnTotal");
			xmlAttr.value = field.GroupFooterVisible ? '1' : '0';
			xmlNode.attributes.append(xmlAttr);
			xmlAttr = null;
			*/
			xmlCubeLayoutNode.appendChild(xmlNode);

		}	
		// write XML to CubeLayout input.
		cubeLayout.value = xmlIsland.XMLDocument.xml;
		
	}
	
	submitform(screenpartname, submittername, action, validateform);
}

/*
	Initialize the msg array for system messages
*/
function InitMessages()
{
	var JSMESSAGES = 'X_JSMESSAGES';
	var PREFIXCODE = 'J_MSG';
	var XML_CODE = 'c';
	var LANGUAGE = 'X_LANGUAGE';
	var element_language = document.getElementById(LANGUAGE);
	if (element_language == null)
		return;
	var language = element_language.value;
	var i = 0, code;
	var jmessage = document.getElementById(JSMESSAGES);
	if (jmessage != null)
	{
		var xmlIsland = jmessage.XMLDocument;
		if (xmlIsland != null)
		{
			for (i = 0; i < xmlIsland.documentElement.childNodes.length; i++)
			{
				code = xmlIsland.documentElement.childNodes[i].getAttribute(XML_CODE);
				if (code != null)
				{
					if (code.indexOf(PREFIXCODE) == 0)
					{
					    try
					    {
						    eval('msg[' + code.substr(2) + '] = xmlIsland.documentElement.childNodes[i].text;');
						}
						catch (e)
						{
						    customMessageCodes[customMessageCodes.length] = code.substr(2);
						    customMessages[customMessages.length] = xmlIsland.documentElement.childNodes[i].text;
						}
					}
				}
			}
		}
	}
}

function GetCustomMessage(code)
{
	var PREFIXCODE = 'J_MSG';
	var i = 0;
	var msg;
	
	if (code.indexOf(PREFIXCODE) == 0)
	    code = code.substr(2);
	    
	for (i = 0; i < customMessageCodes.length; i++)
	{
	    if (customMessageCodes[i] == code)
	    {
	        msg = customMessages[i];
	        break;
	    }
	}
	return msg;	
}

function InitPopupActions()
{
	//if (window.dialogArguments != null)
	window.attachEvent('onbeforeunload', setPopupScreenValuesToParent);
}

function InitSystemMessage()
{
	var LASTMESSAGE = 'X_LASTMESSAGE';
	var BLOCKERFREE = "X_BLOCKERFREE";	
	
	var elementmessage = document.forms(0).elements(LASTMESSAGE);
	
	if (elementmessage != null)
	{
		if (elementmessage.value != '')
		{		
		    var elementblockerfree = document.forms(0).elements(BLOCKERFREE);			
		    var blockervalue = elementblockerfree.value;
	    
		    var ind1 = elementmessage.value.indexOf( "#$#" );
		    var ind2 = elementmessage.value.indexOf( "-$#$" );
		    
		    var ids = elementmessage.value.substring( ind1 + 3, ind2 );		    
		    
		    if(ids != "")
		    {
		        var IdDefinition = ids.split(";");		
		        if (IdDefinition.length = 2)
		        {		        
			        var listCheckBoxToCorrectSelections = document.getElementsByName(IdDefinition[0]);
			        if(listCheckBoxToCorrectSelections != null)
			        {   
			            for(i = 0; i < listCheckBoxToCorrectSelections.length; i++)
		                {
		                    if(listCheckBoxToCorrectSelections[i].idvalue == IdDefinition[1])
		                    {
		                        listCheckBoxToCorrectSelections[i].checked = true;
		                    }
		                }
		            }
		        }		        	        
		    }
		    
		    if(blockervalue == "0")
		    {
			    var now = new Date();
			    var url = 'MessageShow.aspx?menuclosed=1&time=' + now.toUTCString();
			    var features = 'dialogHeight:200px;dialogWidth:300px;center:yes;resizable:no;scroll:no;status:no';
			    elementmessage.value = '';
			    openPopupModal(url, window, features, false);
			}
			else
			{
			    var SPLIT = '~';			    
			    
			    var definition = blockervalue.split(SPLIT);			    			    
			    			    			    
			    initBlockerFreePopup(definition, elementmessage.value);				    			    			    
			    
			    elementmessage.value = '';			    			    
			    
			    YAHOO.example.container.simpledialog1.show();		    
			}
		}
	}
}

function FindButton(buttonvalue)
{
	var retval = null;
	var BUTTONTAG = "button";
	var buttons = document.getElementsByTagName(BUTTONTAG);		

	if(buttons != null)
	{				
		for(i = 0; i < buttons.length; i++)
		{				
			if(buttons[i].id.indexOf(buttonvalue) > 0)
			{								
				retval = buttons[i];
				break;
			}
		}
	}
	
	return retval;
}

function RunButtonClick(buttonvalue)
{	
	var button = FindButton(buttonvalue);
	
	if(button != null)
	{		
		button.onclick();
	}
}

function DoShortcutCheck()
{
	var altKey = event.altKey;			
    var ctrlKey = event.ctrlKey;
	var shiftKey = event.shiftKey
		
	if (ctrlKey && !altKey && !shiftKey)
	{				
        switch (event.keyCode)
        {				
	        case 25:	// CTRL + Y : Çıkış/Quit				
		        Logout();
		        break;
	        case 10:    // CTRL + Enter : Kaydet / Save

		        RunButtonClick("_Save");
		        break;
	        case 21:    // CTRL + U : Tamam / OK
		        RunButtonClick("_Ok");
		        break;
	        case 11:	// CTRL + K : Yeni / New
		        RunButtonClick("_New");
		        break;
	        case 7:	// CTRL + G : Temizle / Reset
		        RunButtonClick("_Reset");
		        break;
	        case 13:	// CTRL + M : Sil / Delete
		        RunButtonClick("_Delete");
		        break;
		}
	}
}

function DisableRefresh()
{
	var key_f5 = 116, key_R = 82;
    if ((event.keyCode == key_f5) || ((event.ctrlKey) && (event.keyCode == key_R)))
    {
		event.keyCode = 0;
		event.returnValue = false;
		event.cancelBubble = true;
		return false;
    }
}

function DisableNew()
{
	var key_N = 78;

    if ((event.ctrlKey) && (event.keyCode == key_N))
    {
		event.keyCode = 0;
		event.returnValue = false;
		event.cancelBubble = true;
		return false;
    }
}

function DisableBack()
{
	history.forward();
}

function InitDisableUserSelfNavigation()
{
	var REFRESH = 'X_NAGIVATEREFRESH', NNEW = 'X_NAVIGATENEW', 
	    CONTEXTMENU = 'X_CONTEXTMENU', BACK = 'X_NAVIGATEBACK';
	if (document.getElementById(REFRESH) == null)
		document.attachEvent("onkeydown", DisableRefresh);
	if (document.getElementById(NNEW) == null)
		document.attachEvent("onkeydown", DisableNew);
	if (document.getElementById(CONTEXTMENU) == null)
		document.oncontextmenu = new Function("return false;");
	if (document.getElementById(BACK) == null)
		DisableBack();
		
	document.attachEvent("onkeypress", DoShortcutCheck);
}

function IsFirstFocusEnabled()
{
	var HIDEVALUE = '0';
	var ELEMENTNAME = 'X_INITFOCUS';
	//enabled by default
	var initFocus = true;
	var i, element;
	if (document.getElementById(ELEMENTNAME) != null)
	{
		initFocus = !(document.getElementById(ELEMENTNAME).value == HIDEVALUE);
	}
	
	return initFocus;		
}

function FocusFirstElement(startIndex)
{
	var i, element;
	try
	{
		if (IsFirstFocusEnabled())
		{
			for(i = startIndex; i < document.forms(0).elements.length; i++)
			{
				element = document.forms(0).elements[i];
				if (element != null)
					if (element.style.visibility != "hidden")
						if (element.type != null)
							if ((element.type == "text") || (element.type == "password") || (element.type == "textarea"))
								if (!element.readOnly && element.name.indexOf(PAGING_GOTOPAGEELEMENTSUFFIX) < 0 && element.name.indexOf("QueryDataHidden") < 0)
								{
									element.focus();
									break;
								}
			}
		}
	}
	catch (e)
	{
		FocusFirstElement(++i);
	}
}


function ElementGotFocus()
{
	try
	{
		var element = event.srcElement;
		if(disableElementFocusChange == 0)
		{
			if (element.tagName == 'INPUT')
			{
				if(element.type != 'checkbox')
				{
					element.style.backgroundColor = BACKCOLOR_FOCUS;
				}
				if (element.type == 'text')
					element.select();
			}
			else 
			{
				element.style.backgroundColor = BACKCOLOR_FOCUS;
				if (element.tagName == 'SELECT')
				{
					var index;
					for (index = 0; index < element.options.length; index++)
						element.options[index].style.backgroundColour = BACKCOLOR_FOCUS;
				}
			}
		}
		else if(element.value!=null && element.value!='')
		{
			disableElementFocusChange = 0;
		}
	}
	catch (e)
	{
	}
}

function ElementLostFocus()
{
	try
	{
	    var element = event.srcElement;

		if (element.tagName == 'INPUT')
		{
			if(element.type != 'checkbox')
			{
				element.style.backgroundColor = BACKCOLOR_BLUR;
			}
		}
		else
		{
			element.style.backgroundColor = BACKCOLOR_BLUR;
		}

	}
	catch (e)
	{
	}
}

function FocusElement()
{
	var i, element;
	
	for( i = 0; i < document.all.length; i++)
	{
		element = document.all[i];
		if ((element.tagName == 'INPUT') || (element.tagName == 'SELECT') || (element.tagName == 'TEXTAREA'))
		{
			element.attachEvent('onfocus', ElementGotFocus);
			element.attachEvent('onblur', ElementLostFocus);
		}
	}
}

function AndClose()
{
	var ELEMENTNAME = 'X_ANDCLOSE';
	var CLOSEVALUE = '1';
	var element = document.getElementById(ELEMENTNAME);
	
	if (element != null)
	{
	    if ( YAHOO.example.container.simpledialog1 )
	    {
	    if(!(YAHOO.example.container.simpledialog1.element.style.visibility == 'visible'))
	    {
		    CloseWindow();
		}
	}
		else //if ( element.value == CLOSEVALUE )
		{
		    CloseWindow();
		}
	}
}

function GetWindow()
{
	var obj = window.top;
//	if (obj.parent != null)
//		obj = obj.top;
	return obj;
}

function MaximizeWindow()
{
	var obj = GetWindow();
	var HEIGHT = obj.screen.availHeight;
	var WIDTH = obj.screen.availWidth;
	if (obj.dialogArguments == null)
	{
		obj.resizeTo(WIDTH, HEIGHT);
		obj.moveTo(0, 0);
	}
	else
	{
		obj.dialogTop = 0;
		obj.dialogLeft = 0;
		obj.dialogWidth = WIDTH;
		obj.dialogHeight = HEIGHT;
	}
	
}

function CloseWindow()
{
    var obj = GetWindow();
    var postBackObj = obj.document.forms[0].POSTBACK;
    
    if( postBackObj != null && postBackObj.value === '1' )
    {
        obj.window.opener.document.forms[0].submit(); 
    }
    obj.close();
}


/*
	This function is called when body.onload event is fired
	All functions that should be call should be added to this function
*/
function initpage()
{
	InitializeHttpPostDocument();
    var obj = document.getElementById("div_Screen");
    if(obj == null)
    {
       obj = document.forms[0];
    }
    
    obj.style.visible = "hidden";
	ReplaceRichText();
	InitMessages();
	InitPopupActions();
    initIconDefContainer();
	resizeWindow();
	RunServerSideSetActions(); // needs to be before element modifiers
	InitializeElementModifers();	
	InitSystemMessage();
	InitDisableUserSelfNavigation();
	FocusFirstElement(0);
	//FocusElement();
	//InitRichTextEditor();
	AfterInitPage();
	AndClose();
	ToggleHiddenElements();
	PrepareCalendar();	
	SetIFrameSource();
	
	obj.style.visible = "block";
	
}

function RunServerSideSetActions()
{
    var setActions = $( "X_SERVERSIDESETACTIONS" )

    if ( null === setActions || undefined === setActions )
        return;

    RunActionXml( setActions.value, false );
}

function RunActionXml( /*string*/ actionsXml, /*bool*/ callOnChange )
{
    var doc = new ActiveXObject("Msxml.DOMDocument");
    doc.loadXML( actionsXml );
    
    var nodes = doc.selectNodes( "/actions/set" );
    
    for ( var nSet = 0; nSet < nodes.length; nSet++ )
    {
        var node = nodes[ nSet ];
        
        var val = controlValueByArray([ node.selectSingleNode("@id").value, node.selectSingleNode("@value").value ]);
        
        var elm = $( node.selectSingleNode("@element").value );
        
        eval( elm[ "set" ] + '( elm, val );' );
        
        RaiseOnChange( elm );

        if ( true === callOnChange )
            CallElementModifiers( elm );
    }

    nodes = doc.selectNodes( "/actions/reset" );
    
    for ( var nReset = 0; nReset < nodes.length; nReset++ )
    {
        var node = nodes[ nReset ];       
        
        var elm = $( node.selectSingleNode("@element").value );
        
        eval( elm[ "reset" ] + '( elm );' );

        RaiseOnChange( elm );

        if ( true === callOnChange )
            CallElementModifiers( elm );
    }
}

function RaiseOnChange( /* HtmlElement */ targetElement )
{
    var type = targetElement.elementType;
    var onChangeFunction = "onchange";
    
    switch ( type )
    {
        case 'TextArea':
        case 'Search':
        case 'Phone':
        case 'Password':
        case 'MultipleSelect':
        case 'MultipleList':
        case 'Load':
        case 'List':
        case 'ListString':
        case 'EMail':
        case 'Duration':
        case 'Date':
        case 'Text':
        case 'Button':
            onChangeFunction = "onchange";
            break;

        case 'Numeric':
        case 'Currency':
            onChangeFunction = "onblur";
            break;

        case 'CheckBox':
            onChangeFunction = "onclick";
            break;
        
        case 'Upload':        
        case 'Label':
        case 'Marquee':
        case 'Shortcut':
            // no on change
            return;
    }

    var code = targetElement[ onChangeFunction ];
    try
    {
        if ( "function" == typeof( code ))
            code.call( targetElement );
        else
            TigrisEval( code );
    }
    catch ( err )
    {}
}

function CallElementModifiers( /*HtmlElement*/ raiseElement )
{
    // this is a very very ugly way to call element modifiers, but we have no chance but to call them
    ModifierRequired( null,  raiseElement );
    ModifierVisible( null, raiseElement );
    ModifierEnabled( null, raiseElement );
    ModifierValue( null, raiseElement );
}

function AfterInitPage()
{
	var afterInitFunction = 'after' + 'initpage';
	if (functionexists(afterInitFunction))	
		eval(afterInitFunction + '();');
}

function ChangeSecurityRight(imgElement, hiddenElementName, screenMode, index, module, isModule)
{
	var hiddenElement;
	var SCREENMODE_POSITION = "Position";	
	var SCREENMODE_MERGEDUSERGROUP = "MergedUserSecurityRights";	
	var IMG_CHKDENIED = "images/chkDenied.jpg", 
		IMG_CHKGRANTED = "images/chkGranted.jpg", 
		IMG_CHKUNSELECTEDRO = "images/chkUnSelected.jpg",
		IMG_CHKUNSELECTED = "images/chkUnSelected.jpg";
	var imageCount;
	var imageArray;
	var denyChar;
	var rightLength;
	var intervalString = '';
	
	if (screenMode == SCREENMODE_POSITION || screenMode == SCREENMODE_MERGEDUSERGROUP)
	{
		imageCount = 3;
		imageArray = [IMG_CHKUNSELECTEDRO, IMG_CHKGRANTED, IMG_CHKDENIED];
		denyChar = '.';
	}
	else
	{
		imageCount = 2;
		imageArray = [IMG_CHKUNSELECTED, IMG_CHKGRANTED];
		denyChar = '_';
	}
	hiddenElement = document.all(hiddenElementName);
	var beforeValue = hiddenElement.value;

	if (hiddenElement.value == "")
	{
		hiddenElement.value = 0;
	}
	else
	{
		hiddenElement.value = hiddenElement.value*1 + 1;		
	}
	hiddenElement.value = hiddenElement.value % imageCount;	
	imgElement.src = imageArray[hiddenElement.value];
	
	//Replacing security right sign with new one
	
	var hdnRightString = document.all('ShortTablePart2_RIGHTS');
	if (hdnRightString == null)
		hdnRightString = document.all('ShortTablePart_RIGHTS');
	var rightString = hdnRightString.value;
	rightLength = rightString.length;
	var firstPart = rightString.substring(0, index);
	if (index < rightLength)
	{
		rightString = rightString.substring(index + 1, rightString.length);
	}
	else
	{
		rightString = '';
		for (var i = 0; i < (index - rightLength); i++)
		{ 
			intervalString = intervalString + denyChar;
		}
	}
	var newSign = '';
	
	switch(hiddenElement.value)
	{
		case '0':
		{
			newSign = (screenMode == SCREENMODE_POSITION || screenMode == SCREENMODE_MERGEDUSERGROUP) ? '.' : '_';
			break;
		}
		case '1':
		{
			newSign = (screenMode == SCREENMODE_POSITION || screenMode == SCREENMODE_MERGEDUSERGROUP ) ? '+' : 'X';
			break;
		}
		case '2':
		{
			newSign = (screenMode == SCREENMODE_POSITION || screenMode == SCREENMODE_MERGEDUSERGROUP) ? '-' : '';
			break;
		}
	}
	
	hdnRightString.value = firstPart + intervalString + newSign + rightString;
	
	//if its a module change all security signs to newSign of this module members
	if(isModule)
	{
		var inputs = document.getElementsByTagName("input"); 
		
		if(inputs.length > 0)
		{
			for(i = 0; i < inputs.length ; i++)
			{
				var input = inputs[i];
				if(input.name != hiddenElementName)
				{
					if(atribModule = input.getAttribute("module"))
					{
						if(atribModule == module)
						{
							input.value = beforeValue;
							var img = document.all(input.image);
							if(img != null)
							{
								if(onclick = img.getAttribute("onclick"))
								{
									onclick();
									img.src = imgElement.src;
								}
							}
						}
					}
				}
			}
		}
	}
	else
	{
		// Find parent image
		if (hiddenElement.value != 0)
		{
			if (imgElement.parent != null)
			{
				var parentImage = document.getElementById(imgElement.parent);
				if (parentImage != null)
				{
					var parentHidden = document.getElementById(parentImage.hiddenname);
					if (parentHidden.value == "" || parentHidden.value == "0")
						ChangeSecurityRight(parentImage, parentHidden.id, screenMode, parseInt(parentImage.positionIndex), module, isModule);
				}
			}
		}
	}

}

function openListLog(screenPartName, tableName, selectableColumnName, pageSize, message)
{
	count = ListRowSelectedCount(selectableColumnName, pageSize);			
	if (count == 1)
	{
		selectedValue = GetFirstSelectedListRowValue(selectableColumnName, pageSize);
		if (!isNaN(parseInt(selectedValue)))
		{
			openScreen('SHOWLOG.XML',true,'Log','FormPart~FormPart','ID~tbl',selectedValue + '~' + tableName,'0~0','','','',750,750,1);
		}
	}
	else
	{
		alert(message);
	}
}
function goBackFromErrorPage(URL)
{
	if (history.length>0)
		history.back()
	else
		if (URL != "")
			window.location = URL
		else
			window.close();
}

/*
************************************************************************************************
****************************** R E P O R T I N G   S E R V I C E S *****************************
************************************************************************************************
*/

function PrintReport(Submitter, ReportName, ParameterNames, Parameters, Title)
{
	var elementNames = Parameters.split(",");
	var parameterNames = ParameterNames.split(",");
	var elementValues = "";
	var elementValue = "";
	var SPLITTER = "_";
	var formPartName = Submitter.id.split(SPLITTER)[0];
	for (i = 0; i < elementNames.length; i ++)
	{
		if (parameterNames[i].length > 0)
		{
			var element = document.all[formPartName + SPLITTER + parameterNames[i]];
			eval('elementValue = ' + element.filter + '(element);');	
			elementValues += "&" + parameterNames[i] + "=" + GetControlValue(elementValue);
		}
	}


	var sFeatures2 = 'center:yes;resizable:yes;scroll:no;status:no;dialogWidth:200px;dialogHeight:200px';
	var url = "ReportPrint.aspx?Report=" + ReportName + elementValues;
	openPopupModal(url, window, sFeatures2, false);	
}

var reportPopup;
function OpenReportFile()
{
	if (typeof(reportPopup) != "object") 
	{
		reportPopup = window.open(afterInitParams[0]);
		reportPopup.focus(); 
		if (window.opener != null || window.dialogArguments != null) 
		{
			window.close(); 
		} 
	}
}

function NavigateReport(screenPartName, relativeNumber)
{
	var pageNumberElement = document.getElementById(screenPartName + "_PageNumber");
	var pageValue = parseInt(pageNumberElement.value) + parseInt(relativeNumber);
	var totalPageCount = parseInt(document.getElementById(screenPartName + "_TotalPageCount").value);
	if (pageValue > totalPageCount)
		pageValue = totalPageCount;
	pageNumberElement.value = pageValue;
	if (pageNumberElement.value == 0)
		pageNumberElement.value = "1";	
	
	var buttonPreview = document.getElementById(screenPartName + "_Preview");
	buttonPreview.click();
}

/*
************************************************************************************************
*********************************************** I N F O B A R **********************************
************************************************************************************************
*/

function hideInfoBar()
{
	var i, item;
	for (i = 0; i < document.all.length; i++)
	{
		item = document.all(i);
		if (item.tagName == 'TABLE')
			if (item.className != null)
				if (item.className == 'infocontainer')
				{
					visible_element(item, '0');
					break;
				}
	}	
}

/*
InfoBar table is a table with the ID value of "ScreenInfoTable".
This method finds this table and sets its printeroff attribute to 1.
*/
function SetInfoBarPrinterOff()
{
	var INFOTABLEID = "ScreenInfoTable";	
	var infoTable = document.getElementById(INFOTABLEID);
	if(infoTable != null)
	{
		infoTable.printeroff = 1;		
	}
}

/*
************************************************************************************************
*********************************************** D Y N A M I C U B E ****************************
************************************************************************************************
*/
function ExportCubeToExcel(screenPartName)
{
	var fileName = ""
	var includeTotals = document.getElementById(screenPartName + "_INCLUDETOTALS").checked;
	var formatNumbers = document.getElementById(screenPartName + "_EXPORTFORMATTEDNUMBERS").checked;
	var includeColors = document.getElementById(screenPartName + "_INCLUDECOLORS").checked;
	var merge = document.getElementById(screenPartName + "_MERGESAMEROWSANDCOLUMNS").checked;
	var dialog = document.getElementById('cDialog');
	
	dialog.Filter = "Excel Document|*.xls";
	dialog.filename="";
	dialog.Flags = 2;
	dialog.ShowSave();
	fileName =dialog.filename;
	
	if (fileName != "")
	{ 
	     DCube.ExportToExcel(fileName, includeTotals,formatNumbers, includeColors, merge);
	     window.alert("Exported to " + fileName + "." );
	}
}

//

function ExportCubeToHtml(screenPartName)
{
	var includeTotals = document.getElementById(screenPartName + "_INCLUDETOTALS").checked;
	var formatNumbers = document.getElementById(screenPartName + "_EXPORTFORMATTEDNUMBERS").checked;
	var includeColors = document.getElementById(screenPartName + "_INCLUDECOLORS").checked;
	var merge = document.getElementById(screenPartName + "_MERGESAMEROWSANDCOLUMNS").checked;
	
	var dialog = document.getElementById('cDialog');
	dialog.Filter = "HTML Document|*.html";
	dialog.filename="";
	dialog.Flags = 2;
	dialog.ShowSave();
	
	var fileName = dialog.filename;
	
	if (fileName != "")
	{
	     DCube.ExportToHTML(fileName, includeTotals,formatNumbers, includeColors, merge);
   	     window.alert("Exported to " + fileName + "." );
	}
}

function CubePrintPreview(screenPartName)
{
    DCube.IncludeColorsInPrintout = document.getElementById(screenPartName + "_INCLUDECOLORSINPRINTOUT").checked;
	DCube.ColHeadingsOnEveryPage = document.getElementById(screenPartName + "_INCLUDEHEADINGS").checked;
	DCube.RowHeadingsOnEveryPage = document.getElementById(screenPartName + "_INCLUDEHEADINGS").checked;
	DCube.PrintRowFieldNames = document.getElementById(screenPartName + "_PRINTFIELDNAMES").checked;
	DCube.PrintColFieldNames = document.getElementById(screenPartName + "_PRINTFIELDNAMES").checked;
	DCube.PrintPreview();
}
// [dFilter] - A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand - March 27th, 2003
// Please reuse & redistribute while keeping this notice.

var dFilterStep

function dFilterStrip (dFilterTemp, dFilterMask)
{
    dFilterMask = replace(dFilterMask,'#','');
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
		{
		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}
		return dFilterTemp;
}

function dFilterMax (dFilterMask)
{
 		dFilterTemp = dFilterMask;
    for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
		{
		 		if (dFilterMask.charAt(dFilterStep)!='#')
				{
		        dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
				}
		}
		return dFilterTemp.length;
}


function dFilter (key, textbox, dFilterMask)
{
	dFilterNum = dFilterStrip(textbox.value, dFilterMask);
	
	if (key==9 || textbox.readOnly)
	{
		return true;
	}
	else if (key==8&&dFilterNum.length!=0)
	{
		dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
	}
 	else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )
	{
		if(key>95&&key<106)
		{
			key = key - 48;
		}
		
	    dFilterNum=dFilterNum+String.fromCharCode(key);
	}
	else if (key == 13)
	{   	
	    // when the user presses the Enter key
	    // today's date is set as the element value    	    	    
	    var SPLIT = '_';           
        var names = textbox.id.split(SPLIT);
        var defaultname = "";
        for(var i=0;i<names.length -1;i++) // Date element default name
            defaultname += names[i] + SPLIT;
        var BUTTONDEFAULT = "BUTTONDEFAULT";
        var imgname = defaultname + BUTTONDEFAULT;
        ExecuteDefaultCalendar(imgname);

	    return true;
	}

	var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
	{
        if (dFilterMask.charAt(dFilterStep)=='#')
		{
			if (dFilterNum.length!=0)
			{
				dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
				dFilterNum = dFilterNum.substring(1,dFilterNum.length);
			}
			else
			{
				dFilterFinal = dFilterFinal + "";
			}
		}
		else if (dFilterMask.charAt(dFilterStep)!='#')
		{
			dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			
		}
//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
	}

	var dValueIsNumeric = false;
	for (i = 0; i < dFilterFinal.length; i++)
	{
		if (!isNaN(dFilterFinal.substring(i, i + 1)))
		{
			dValueIsNumeric = true;
			break;
		}
	}
	
	if (dValueIsNumeric)
		textbox.value = dFilterFinal;
	else
		textbox.value = '';
    return false;
}

function replace(fullString,text,by) {
// Replaces text with by in string
    var strLength = fullString.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return fullString;

    var i = fullString.indexOf(text);
    if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
    if (i == -1) return fullString;

    var newstr = fullString.substring(0,i) + by;

    if (i+txtLength < strLength)

        newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

    return newstr;
}

/*
************************************************************************************************
*********************************************** X M L H T T P - A J A X ************************
************************************************************************************************
*/
var httpRequest;
var httpRequestContainer;
var httpRequestSource;

function newHttp()
{
	if (window.ActiveXObject)
	{		
		return new ActiveXObject("Microsoft.XMLHTTP");	
	}	
	else
	{		
		return new XMLHttpRequest;	
	}
}

function getResponseHttp(url, container, trigger)
{	
	httpRequestSource = trigger;
	//httpRequestSource.disabled = true;

	httpRequestContainer = container;
	//hideFocus(httpRequestContainer);

	httpRequest = newHttp();
	httpRequest.onreadystatechange = stateChangeHttp;

	httpRequest.open("GET", url, true);	
	httpRequest.send(null);
}

function readyStateText(readyState)
{
/*
	readyState
	0 = uninitialized
	1 = loading
	2 = loaded
	3 = interactive
	4 = complete

	status
	200 - page Ok
	404 - page Not found

	statusText
	status explanation returned
*/	
	var text = '';
	switch (readyState)
	{
		case 0 : text = 'uninitialized'; break;
		case 1 : text = 'loading'; break;
		case 2 : text = 'loaded'; break;
		case 3 : text = 'interactive'; break;
		case 4 : text = 'complete'; break;
	
	}
	return text;
}


function stateChangeHttp()
{
	if (httpRequest.readyState == 4)
	{
		if (httpRequest.status == 200)
		{
			httpRequestContainer.innerHTML = httpRequest.responseText;
			httpRequestContainer.style.position = 'absolute';
			httpRequestContainer.style.left = getPositionX(httpRequestSource);
			httpRequestContainer.style.top = getPositionY(httpRequestSource) + httpRequestSource.offsetHeight + 1;
			httpRequestContainer.style.width = httpRequestSource.offsetWidth;
			httpRequestContainer.firstChild.style.width = httpRequestSource.offsetWidth;
			httpRequestContainer.style.visibility = 'visible';
			initGridTable();
		}
		httpRequest = null;
		//unhideFocus(httpRequestContainer);
		httpRequestContainer = null;
	}
}

function setFocusFalse()
{
	return false;
}

function hideFocus(element)
{
	if (element != null)
	{
		element.attachEvent('onfocus', setFocusFalse);
	}
}

function unhideFocus(element)
{
	if (element != null)
	{
		element.detachEvent('onfocus', setFocusFalse);
	}
}

//Get X position
function getPositionX(element)
{
    var x=0;
    while(element)
    {
        x += element.offsetLeft;
        element = element.offsetParent;
    }
    return x;
}

//Get Y position
function getPositionY(element)
{
    var y=0;
    while(element)
    {
        y += element.offsetTop;
        element = element.offsetParent;
    }
    return y;
}

/*
************************************************************************************************
*********************************  Q U I C K S E A R C H   *************************************
************************************************************************************************
*/ 


var GRIDSELECTITEMID = 'grdSelectItem'; 
var GRIDSELECTEDCLASS = 'quicksearchgridselecteditem';
var GRIDSELECTEDCLASS_RECENT = 'quicksearchgridselecteditem_recent';
var GRIDID = 'grdQuickSearch';
var VALIDROWCLASSNAME1 = 'quicksearchgriditem',        VALIDROWCLASSNAME2 = 'quicksearchgridalternateitem', 
    VALIDROWCLASSNAME3 = 'quicksearchgriditem_recent', VALIDROWCLASSNAME4 = 'quicksearchgridselecteditem_recent';

var grdDialog = document.getElementById(GRIDID);
var grdDialogCurrentRow = Number.NEGATIVE_INFINITY;
var grdDialogMinRow, grdDialogMaxRow;

function quicksearchbutonpressed()
{
	var keyCode = event.keyCode;
		
	switch (keyCode)
	{
		case KEYUP: 
			dialogKeyUp();
			YAHOO.util.Event.preventDefault(event);
			break;
		case KEYDOWN: 
			dialogKeyDown();
			YAHOO.util.Event.preventDefault(event);
			break;
		case ENTER:
			enterRow();
			break;
		case ESC:
		    hideQuickSearchFrame();
		    break;
		case TAB:
		    hideQuickSearchFrame();
		    break;
	}	
}
/*
     Run Quick Search 
*/ 
function QuickFilterSearch(screenPartName)
{
    var keyCode = event.keyCode;
    if(keyCode == ENTER)
    {
        submitListPartQuickFilters(screenPartName,screenPartName+ '_QUICKFILTERSEARCHBUTTON','',false,'Please supply filter!');
    }
}
function hideQuickSearchFrame()
{
    document.activeElement.style.visibility = 'hidden';
    grdDialogCurrentRow = Number.NEGATIVE_INFINITY;
    quickSearchOpenerElement.focus();
}

function isDataRow(rowId)
{
	var tr = grdDialog.rows(rowId);
	return (   (tr.className == VALIDROWCLASSNAME1)
	        || (tr.className == VALIDROWCLASSNAME2)
	        || (tr.className == VALIDROWCLASSNAME3)
	        || (tr.className == VALIDROWCLASSNAME4)
	        || (tr.className == GRIDSELECTEDCLASS));
}

function validRow(rowId)
{
	return ((grdDialogMinRow <= rowId) && (rowId <= grdDialogMaxRow) && isDataRow(rowId));
}

function saveclassName(rowId)
{
	if (validRow(rowId))
	{
		var tr = grdDialog.rows(rowId);
		if (tr.savedClassName == null)
			tr.setAttribute('savedClassName', tr.className);	
	}
}

function restoreRow(rowId)
{
	if (validRow(rowId))
	{
		var tr = grdDialog.rows(rowId); 			
		tr.className = tr.savedClassName;
	}	
}

function selectRow(rowId)
{
	if (validRow(rowId))
	{
		var tr = grdDialog.rows(rowId); 
	
	    if ( tr.className.endsWith( "_recent" ))
		    tr.className = GRIDSELECTEDCLASS_RECENT;
	    else
		    tr.className = GRIDSELECTEDCLASS;
		grdDialogCurrentRow = rowId;
		return true;
	}
	return false;
}

function moveTo(from, to)
{
	restoreRow(from);
	selectRow(to);
}

function dialogKeyUp()
{
	var rowId = grdDialogCurrentRow;
	restoreRow(grdDialogCurrentRow);
	rowId = grdDialogCurrentRow > grdDialogMinRow ? grdDialogCurrentRow - 1 : grdDialogCurrentRow;
	if (!selectRow(rowId))
	{
	    rowId--;
	    selectRow(rowId);
	}
}

function dialogKeyDown()
{
	if (grdDialogCurrentRow < grdDialogMinRow)
	{
		// Select first item with dialogKeyDown
		selectRow(grdDialogMinRow);
	}
	else
	{
		var rowId = grdDialogCurrentRow;
		restoreRow(rowId);
		rowId = grdDialogCurrentRow < grdDialogMaxRow ? grdDialogCurrentRow + 1 : grdDialogCurrentRow;
		if (!selectRow(rowId))
		{
		    rowId++;
		    selectRow(rowId);
		}
	}
}

function mouseSelectRow()
{
	var tr = event.srcElement;
	restoreRow(grdDialogCurrentRow);
	grdDialogCurrentRow = tr.rowIndex;
	selectRow(grdDialogCurrentRow);
	tr.style.cursor = 'pointer';
}

function mouseUnselectRow()
{
	var tr = event.srcElement;
	restoreRow(grdDialogCurrentRow);
	grdDialogCurrentRow = tr.rowIndex;
	restoreRow(grdDialogCurrentRow);
	tr.style.cursor = 'default';
}	

function runOnClick(element)
{
	if (element != null)
	{
		element.click();
	}
}

function callOnClick(row)
{
	if (row != null)
	{
        grdDialogCurrentRow = Number.NEGATIVE_INFINITY;
		runOnClick(row);
	}
}

function clickRow()
{
	var tr = event.srcElement.parentElement;
	callOnClick(tr);
}

function enterRow()
{
	if (validRow(grdDialogCurrentRow))
	{
		if (document.activeElement.tagName == 'DIV')
			callOnClick(grdDialog.rows[grdDialogCurrentRow]);
	}
}

function initGridTable()
{
	grdDialog = document.getElementById(GRIDID);
	if (grdDialog != null)
	{
		// set min and max row values
		grdDialogMinRow = Number.POSITIVE_INFINITY, grdDialogMaxRow = Number.NEGATIVE_INFINITY; //grdDialog.rows.length - 1;
		
		// attache key events
		// save styles 
		var i;
		for (i = 0; i < grdDialog.rows.length; i++)
		{
			if (isDataRow(i))
			{
				if (i < grdDialogMinRow)
					grdDialogMinRow = i;

				if (i > grdDialogMaxRow)
					grdDialogMaxRow = i;

				row = grdDialog.rows[i];
				//row.attachEvent('onclick', clickRow);
				row.attachEvent('onmouseenter', mouseSelectRow);
				row.attachEvent('onmouseleave', mouseUnselectRow);
				
				saveclassName(i);
			}
		}
	}
}

/// This method is used to update the cookie value for a search [load] element
/// which executes in quick search mode. It is also called by the setValueToParent
/// function implemented in Search.aspx.cs and Load.aspx.cs.
function UpdateQuickSearchCookie(elementSearch, screenpartname, elementname, value, idvalue, cookieValue, actionsXml )
{
    if(elementSearch.recentsearchitemcount != null)   
	{
        var QUICKSEARCH = '_QUICKSEARCH';
        var SPLIT = '~';
	    var IDSPLIT = '^';
	    
	    var cookieName = screenpartname + '_' + elementname + QUICKSEARCH;
        var cookie = GetCookie(cookieName);
        if (cookie != null)
        {            
            cookie = cookieValue + IDSPLIT + value + IDSPLIT + idvalue + IDSPLIT + actionsXml + SPLIT + cookie;
            var recentItems = cookie.split(SPLIT);
            var alreadyInList = false;
            cookie = '';
            for (i = 0; i < elementSearch.recentsearchitemcount; i++)
            {
                if (recentItems.length > i)
                {
                    alreadyInList = false; 
                    for (j = 0; j < i; j++)
                    {
                        if (recentItems[i].split(IDSPLIT)[0] == recentItems[j].split(IDSPLIT)[0])
                        {
                            alreadyInList = true;
                            break;
                        }
                    }
                    if (!alreadyInList)
                    {
                        cookie += recentItems[i] + SPLIT;
                    }
                }
            }
            cookie = cookie.substring(0, cookie.length - 1);
        }
        else
        {            
            cookie = cookieValue + IDSPLIT + value + IDSPLIT + idvalue + IDSPLIT + actionsXml;
        }
        
        SetCookie(cookieName, cookie); 
	}
}

function setQuickSearch(screenpartname, elementname, value, idvalue, cookieValue, actionsXml )
{
    var doc = window.document;
	var BUTTON = "_BUTTON";
	
	hideQuickSearch( false );
		
    var elementSearch = doc.getElementById(screenpartname + "_" + elementname);
    
    elementSearch.description = value;
    elementSearch.value = idvalue;
    
    UpdateQuickSearchCookie(elementSearch, screenpartname, elementname, value, idvalue, cookieValue, actionsXml);
    
    var elementSearchDescription = doc.getElementById(screenpartname + "_" + elementname + DESCRIPTIONSUFFIX);
    var elementSearchButton = doc.getElementById(screenpartname + "_" + elementname + BUTTON);
    
    elementSearchDescription.value = value;
    
    elementSearchDescription.onchange();
    
    RunActionXml( actionsXml, true );
}

function hideQuickSearch( /*bool*/ immediately )
{
    // if we should hide the quicksearch grid immediately
    if ( true === immediately )
    {
        try
        {
	        var quickSearchDiv = $( 'X_QUICKSEARCH' );
	        quickSearchDiv.style.visibility = 'hidden';
	    }
	    catch ( err )
	    {}
	}
	else // or, should we delay the hide operation?
	{
	    window.setTimeout( "hideQuickSearch( true );", 250 ); //250 ms is enough for any mouse event
	}
}

function setQuickLoad(screenpartname, elementname, value, idvalue, cookieValue)
{
    var doc = window.document;
	var BUTTON = "_BUTTON";	
	
	hideQuickSearch();
	
    var elementLoad = doc.getElementById(screenpartname + "_" + elementname);
    var elementLoadID = doc.getElementById(screenpartname + "_" + elementname + "_ID");
    elementLoadID.value = idvalue;
        
    UpdateQuickSearchCookie(elementLoadID, screenpartname, elementname, value, idvalue, cookieValue);
        
    var elementSearchButton = doc.getElementById(screenpartname + "_" + elementname + BUTTON);
    
    elementLoad.value = value;
    
    submitform(screenpartname, elementname, 'LB', false);    
}

function showOtherIconPanel( biziCaller )
{
    var panel = YAHOO.example.container.panel1;
    
    // hide if visible
    if ( true === panel.cfg.getProperty( "visible" ))
    {
        panel.hide();
        return;
    }
    
    // if top section makes the clal then locate the item just under the info bar
    if ( biziCaller === "topItem" )
    {
        var table = document.all[ "infoBarTable" ]; // find info bar table if it exists
        if ( table && table.getBoundingClientRect )
        {
            var rect = table.getBoundingClientRect();
            panel.moveTo( rect.right - panel.element.offsetWidth, rect.bottom );
        }
    }
        
    panel.show( panel, true );
}

function DateValid(start_date, end_date)
{
   var startDate= start_date.value;
   var endDate= end_date.value;
   
   if (startDate == "" || endDate== "")
   { 
		return true;
   }
   str1= startDate.split(".");
   str2= endDate.split(".");
   my_startDate=new Date();
         
   my_startDate.setFullYear(str1[2],str1[1],str1[0]);
   my_endDate=new Date();
   my_endDate.setFullYear(str2[2],str2[1],str2[0]);
   var orderPeriod = DateDiff("dd", my_startDate, my_endDate);
  if(orderPeriod < 0){
    
	return orderPeriod;
  }      
   return orderPeriod;    
}


function IsNameRequiredForSaveQuery( listElm, txtElm )
{
    var lst = $( listElm );
    var v = eval( lst.filter )( lst );
    var a = v.id.split( "~" );

    var required = ( a[ 0 ] == "");

    if ( !required )
        return false;

    var txt = $( txtElm )
    var v2 = eval( txt.filter )( txt );

   
    if ( null == v2.value || undefined == v2.value || "" == v2.value )
    {
        txt.focus();

        alert( msg[ MSG_REQUIRED ]);

        return true;
    } 
    return false;
}

function returnLowerCase(obj)
{
       obj.value = obj.value.toLowerCase();
}

function returnUpperCase(obj)
{
       obj.value = obj.value.toUpperCase();
}

 

function returnProperCase(obj)
{
       var ObjValues = obj.value.split(' ');       

       var newValue = "";     
       for(var i=0;i<ObjValues.length;i++)
       {

           newValue += ObjValues[i].substring(0,1).toUpperCase() + ObjValues[i].substring(1,ObjValues[i].length).toLowerCase();

           if(ObjValues.length != i + 1) newValue += " ";
       }
       obj.value = newValue;
}
function ShowErrorDetail(obj)
{
    if (obj.childNodes[0] != null && obj.childNodes[0].idvalue != "")
    {
        var ajax = new Tigris.Ajax.AjaxClient( "AjaxFunctions.aspx" );

        ajax.AddUrlParameter("Function", "GetErrorData");
        ajax.AddUrlParameter("ErrorId", obj.childNodes[0].idvalue);
        if ( ajax.Send() )
        {
            if ( ajax.IsSuccess() )
            {
                var xmlDoc = ajax.GetXmlDoc();
                var errorData = xmlDoc.selectSingleNode( "/Result" ).text;
                var attr = xmlDoc.selectSingleNode( "/Result/@Definition" );
                var LASTMESSAGE = 'X_LASTMESSAGE';
	            var BLOCKERFREE = "X_BLOCKERFREE";	
	
	            document.forms(0).elements(LASTMESSAGE).value = errorData;
	            document.forms(0).elements(BLOCKERFREE).value = attr.value;
	            InitSystemMessage();
	        }
	    }
	}
}

function OpenWFInboxRecord(obj, openInNewWindow, takeOn, positionId)
{
    var wfStepID = obj.idvalue;
    if(wfStepID > 0)
    {
        var ajax = new Tigris.Ajax.AjaxClient("AjaxFunctions.aspx");
        var now = new Date();
        ajax.AddUrlParameter("Function", "GetWFStepURL");
        ajax.AddUrlParameter("WFStepID", wfStepID);
        ajax.AddUrlParameter("TakeOn", takeOn);
        ajax.AddUrlParameter("PositionId", positionId);
        ajax.AddUrlParameter("Time",  now.toUTCString());
        if (ajax.Send())
        {
            if (ajax.IsSuccess())
            {
                var xmlDoc = ajax.GetXmlDoc();
                var windowURL = xmlDoc.selectSingleNode( "/Result" ).text;
                if (windowURL != '')
                {
                    if (openInNewWindow == '1')
                    {
                        window.open(windowURL, 'mywindow', 'menubar=0,resizable=1,width=900,height=700');
                    }
                    else
                    {
                        location.href = windowURL;
                    }
                }
	        }
	        else
	        {
	            var xmlDoc = ajax.GetXmlDoc();	            
	            var row = GetCurrentRow(obj);
	            if(row != null)
	            {
	                row.style.display = 'none';
			        row.style.visibility = 'hidden';
	            }
	            alert(xmlDoc.selectSingleNode( "/Result/msgs/msg/@message").text);
	        }
	    }
    }
}

function GetCurrentRow(obj)
{
    var element = obj.parentElement;
    if(element != null && element != undefined)
    {
        if (element.tagName == "TR" || element.tagName == "tr")
        {
            return element;
        }
        else
        {
            return GetCurrentRow(element);
        }
    }
    else
    {
        return null;
    }
}

function ContinueScreenChange()
{
    var element = document.getElementById('X_SCREENVALUECHANGED');
    var continueOperation = true;
    if (element != null && element.value == '1')
    {
        if (confirm(msg[MSG_DESIGNEXITWITHOUTSAVE]))
	    {
	        continueOperation = true;
	    }
	    else 
	    {
	        continueOperation = false;
	    }
    }
    return continueOperation;
}

function SetScreenChanged()
{
    if(event != null && event.type == 'blur')
        return;
    var element = document.getElementById('X_SCREENVALUECHANGED');
    if (element != null && element.value != '1')
    {
        element.value = '1';
    }
}

// Internal. intended to be used by Tigris Framework
function RunPipelineViaAjax( submitter, pipelineName )
{
    var submitterScreenPart = $( "X_SUBMITTERSCREENPART" );
    
    if ( submitterScreenPart )
        submitterScreenPart.value = ScreenPartOfElement( submitter );
    
    var formData  = Tigris.Ajax.LoadFormData();
        formData += Tigris.Ajax.FormatField( { id: "__PIPELINE"  },  pipelineName );
        formData += Tigris.Ajax.FormatField( { id: "__SUBMITTER" }, submitter.id );

    if ( !submitterScreenPart )
        formData += Tigris.Ajax.FormatField( { id: "X_SUBMITTERSCREENPART" }, ScreenPartOfElement( submitter ));
    
    var ajax = new Tigris.Ajax.AjaxClient( "AjaxFunctions.aspx?Function=CallPipeline" );

    ajax.SetAction( Tigris.Ajax.ActionType.POST );
    ajax.Send( formData );
    
    if ( ajax.IsSuccess() )
    {
        var xmlDoc = ajax.GetXmlDoc();
        var script = xmlDoc.selectSingleNode( "/Result" ).text;
    
        try
        {
            eval( script );
        }
        catch ( evalErr )
        {}
    }
}

// Internal. intended to be used by Tigris Framework
function RunListPipelineViaAjax( submitter, pipelineName, listRowIndex, listColumnName )
{
    var screenPartName = ScreenPartOfElement( submitter );
    
    checkbyrow( screenPartName, listColumnName, listRowIndex );
	
	return RunPipelineViaAjax( submitter, pipelineName );
}

function ChangeStyleForEmptyRequiredFields(elmObj)
{
	elmObj.style.backgroundColor = BACKCOLOR_ERRORFOCUS;
	disableElementFocusChange = 1;
}


/*
************************************************************************************************
***************************************** S U B L I S T ****************************************
************************************************************************************************
*/
function OpenSubList(tableContainer, caller , colspan, parentScreenPartName, screenpartName, listLevel, uniqueIdValue, submitterName, actionName, orderType)
{
    var SUBLISTCONTAINER = "_SUBLISTCONTAINER";
    var SUBLISTPARENTROWUNIQUEID = "_SUBLISTPARENTROWUNIQUEID";
    var rowIndex = caller.parentElement.parentElement.rowIndex;
    var table = $(tableContainer);
    if(caller.isSubRowInserted == null || caller.isSubRowInserted != 0)
    {  
        var row = table.insertRow(rowIndex+1);
        row.style.height = 100;
        var cell = row.insertCell(0)

        cell = row.insertCell(1);
        cell.colSpan=colspan+1;
        
        caller.src='images/minus1.gif';
        cell.className = "subListContainer"; 
        caller.isSubRowInserted = 0;
        var uniqueIdHidden = document.createElement("INPUT");
        uniqueIdHidden.type = "hidden";
        uniqueIdHidden.id = screenpartName + SUBLISTPARENTROWUNIQUEID;
        uniqueIdHidden.value = uniqueIdValue;
        cell.appendChild(uniqueIdHidden);
        
	    var parentListPageIndex = GetSublistParentPageIndex(parentScreenPartName);
        var divObject = document.createElement("div");
        divObject.id = screenpartName + SUBLISTCONTAINER;
        LoadSubListScreenPart(cell,parentScreenPartName,screenpartName,divObject, listLevel, uniqueIdValue, parentListPageIndex, submitterName, actionName, orderType);        		
        cell.appendChild(divObject);
    }
    else if(caller.isSubRowInserted == 0)
    {
        table.deleteRow(rowIndex +1);
        caller.src='images/plus.gif';
        caller.isSubRowInserted = 1;
        
    }
}

function LoadSubListScreenPart(parentContainer, parentScreenPartName, screenpartName, divObject, listLevel, uniqueIdValue, pageIndex, submitterName, actionName, orderType, nextPage)
{

	if ( null != sp_ajax )
		return;

	var PREFIXSCREENPARTNAME = "ScreenPart_";
	var SCPARTFILEPREFIX = "X_SCPARTXMLFILENAME";
    var FILTERS = "_FILTERS";
	var xmlFilename = $("X_SCREENXMLFILENAME").value
	if(nextPage == null){nextPage = "";}
	
	if(screenpartName!= "")
	{
		if( xmlFilename != "")
		{
			var hiddenObj = $(parentScreenPartName + SCPARTFILEPREFIX);
//			if(divObject.innerHTML == '' || divObject.innerHTML == null)
//			{
				var submitterScreenPart = $( "X_SUBMITTERSCREENPART" );
				if ( submitterScreenPart )
				submitterScreenPart.value = screenpartName;
			    
				var formData  = Tigris.Ajax.LoadFormData();
					formData += Tigris.Ajax.FormatField( { id: "__SUBMITTER" }, '');

				if ( !submitterScreenPart )
					formData += Tigris.Ajax.FormatField( { id: "X_SUBMITTERSCREENPART" }, screenpartName);
			    
				sp_ajax = new Tigris.Ajax.AjaxClient( "AjaxFunctions.aspx" );
				sp_ajax.AddUrlParameter( "Function"             , "GetSubListScreenPart"            );
				sp_ajax.AddUrlParameter( "ScreenPart"           , screenpartName                    );
				sp_ajax.AddUrlParameter( "ParentScreenPart"     , parentScreenPartName              );
				sp_ajax.AddUrlParameter( "ScreenFileName"       , xmlFilename                       );
				sp_ajax.AddUrlParameter( "ListLevel"            , listLevel                         );
				sp_ajax.AddUrlParameter( "UniqueIdValue"        , uniqueIdValue                     );
				sp_ajax.AddUrlParameter( "SubmitterName"        , submitterName                     );
				sp_ajax.AddUrlParameter( "OrderType"            , orderType                         );
				sp_ajax.AddUrlParameter( "ActionName"           , actionName                        );
				sp_ajax.AddUrlParameter( "NextPage"             , nextPage                        );
				
				var xml = $(screenpartName + FILTERS)
                var xmlDoc = InitializeXmlDOM();
                xmlDoc.loadXML(xml.innerHTML);
                if(xmlDoc.documentElement != null)
                {
                    var filters = xmlDoc.documentElement.selectNodes("Filter");
                    if(filters != null)
                    {
                        for( i = 0; i<filters.length; i++ )
                        {
                            var filter = filters[i]; 
                            var filterElement = filter.getAttribute("FilterColumnName");
                            var filterOperator = filter.getAttribute("FilterOperator");
                            var filterQuery = filter.getAttribute("FilterQuery");
                            var filterIsNull = filter.getAttribute("IsNull");
                            var filterSource = filter.getAttribute("Source");
                            var filterValue = filter.getAttribute("Value");
                            
                            if(filterSource != null && filterSource == "Form")
                            {
                                var valueArray = filterValue.split(".")
                                var filterScreenPartName = valueArray[0];
                                var filterValueElementName = valueArray[1];
                                SetFilterValueFromListElement(filter, filterScreenPartName, filterValueElementName, pageIndex, uniqueIdValue)
                            }
                        }
				        sp_ajax.AddUrlParameter( "Filters"        , xmlDoc.documentElement.xml);
				    }
				}
				
				sp_ajax.SetAction( Tigris.Ajax.ActionType.POST );
				
				sp_ajax.divObj = divObject;
				hiddenObj.value = xmlFilename;
				sp_ajax.hiddenElement = hiddenObj;
				sp_ajax.formData = formData;
				sp_ajax.scpartName = xmlFilename;
				sp_ajax.screenpartName = parentScreenPartName;			
				
				showThrobber(parentContainer,'images/clockThrobber-trans.gif');
				window.setTimeout( DeferredLoadScreenPart, 100 );			
//			}
		}
		else
		{
			divObject.innerHTML = '';
		}
	}
}

function InitializeXmlDOM()
{
    var xmlDoc = null;
    if (window.ActiveXObject) { // IE
        try {
	        xmlDoc = new ActiveXObject("Msxml2.XMLDOM");
        } catch (e) {
	        try {
	        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	        } catch (e) {}
        }
    }
    return xmlDoc;
}

function ChangeSubListOrder( parentScreenPartName, screenpartName,  listLevel, submitterName, actionName, orderType)
{
    var SUBLISTCONTAINER = "_SUBLISTCONTAINER";
    var SUBLISTPARENTROWUNIQUEID = "_SUBLISTPARENTROWUNIQUEID";
    var uniqueIdValue = $(screenpartName + SUBLISTPARENTROWUNIQUEID);
    var xmlFilename = $("X_SCREENXMLFILENAME").value;
    var divObject = $(screenpartName + SUBLISTCONTAINER);
	var parentListPageIndex = GetSublistParentPageIndex(parentScreenPartName);
    ScreenPartReadOnly(divObject.parentElement,divObject.parentElement.id,null,true)    
    LoadSubListScreenPart(divObject.parentElement, parentScreenPartName, screenpartName, divObject, listLevel, uniqueIdValue.value, parentListPageIndex, submitterName, actionName, orderType);
    ScreenpartEnabled(divObject.parentElement,divObject.parentElement.id);
}

function GoToNextSubListPage(parentScreenPartName, screenpartName,  listLevel, submitterName, actionName, nextPage, totalPageCount)
{
    var SUBLISTCONTAINER = "_SUBLISTCONTAINER";
    var SUBLISTPARENTROWUNIQUEID = "_SUBLISTPARENTROWUNIQUEID";
    var uniqueIdValue = $(screenpartName + SUBLISTPARENTROWUNIQUEID);
    
    var pageNo = -1;
    elementName = screenpartName + PAGING_GOTOPAGEELEMENTSUFFIX;
	var element = document.forms(0).elements(elementName);

	if (nextPage == -1)
	{
		if (element[0] == null)
		    pageNo = element.value;		
		else
		{
		    if (element[0].value != '')
		        pageNo = element[0].value;
		    else
		        pageNo = element[1].value;		        
		}
		
		if ( pageNo - totalPageCount  > 0 )
		{						
			pageNo = totalPageCount;
		}	
			
		if (trim(pageNo) == "")
		{
			return;					
		}
	}
	else
	{
		pageNo = nextPage;
	}
	var parentListPageIndex = GetSublistParentPageIndex(parentScreenPartName);
    var divObject = $(screenpartName + SUBLISTCONTAINER);
    var xmlFilename = $("X_SCREENXMLFILENAME").value;
    ScreenPartReadOnly(divObject.parentElement,divObject.parentElement.id,null,true)    
    LoadSubListScreenPart(divObject.parentElement, parentScreenPartName, screenpartName, divObject, listLevel, uniqueIdValue.value, parentListPageIndex, submitterName, actionName, "", pageNo);
    ScreenpartEnabled(divObject.parentElement,divObject.parentElement.id);
}

function GetSublistParentPageIndex(parentScreenpartName)
{
    var SCREENPAGENUMBER = "PAGENUMBER";
    var nextPageObj = $(parentScreenpartName + "_" + SCREENPAGENUMBER) ;
    var retval = 1;
    if(nextPageObj != null)
    {
        if(IsNumeric(nextPageObj.value))
        {
            retval = nextPageObj.value;
        }
    }
    return retval;
}

function SubListToExcel(parentScreenPartName, screenpartName, listLevel)
{
    var FILTERS = "_FILTERS";
    var SUBLISTCONTAINER = "_SUBLISTCONTAINER";
    var SUBLISTPARENTROWUNIQUEID = "_SUBLISTPARENTROWUNIQUEID";
	
	var xmlFilename = $("X_SCREENXMLFILENAME").value
	var SCREENPAGENUMBER = "PAGENUMBER";
    var pageIndex = $(parentScreenPartName + "_" + SCREENPAGENUMBER).value ;
    var uniqueIdValue = $(screenpartName + SUBLISTPARENTROWUNIQUEID).value;
    
    var url = "ListToExcel.aspx?menuclosed=1&name=" + screenpartName + "&filename=" + xmlFilename; 
    url = AddParameterToUrl( url, "ScreenPart"           , screenpartName                    );
	url = AddParameterToUrl( url, "ParentScreenPart"     , parentScreenPartName              );
	url = AddParameterToUrl( url, "ListLevel"            , listLevel                         );
	url = AddParameterToUrl( url, "ListType"             , "SubList"                         );
	
	var parentContainer = $(screenpartName + SUBLISTCONTAINER).parentElement;
	var xml = $(screenpartName + FILTERS)
    var xmlDoc = InitializeXmlDOM();
    xmlDoc.loadXML(xml.innerHTML);
    if(xmlDoc.documentElement != null)
    {
        var filters = xmlDoc.documentElement.selectNodes("Filter");
        if(filters != null)
        {
            for( i = 0; i<filters.length; i++ )
            {
                var filter = filters[i]; 
                var filterElement = filter.getAttribute("FilterColumnName");
                var filterOperator = filter.getAttribute("FilterOperator");
                var filterQuery = filter.getAttribute("FilterQuery");
                var filterIsNull = filter.getAttribute("IsNull");
                var filterSource = filter.getAttribute("Source");
                var filterValue = filter.getAttribute("Value");
                
                if(filterSource != null && filterSource == "Form")
                {
                    var valueArray = filterValue.split(".")
                    var filterScreenPartName = valueArray[0];
                    var filterValueElementName = valueArray[1];
                    SetFilterValueFromListElement(filter, filterScreenPartName, filterValueElementName, pageIndex, uniqueIdValue)
                }
            }
	        url = AddParameterToUrl( url, "Filters", xmlDoc.documentElement.xml);
	    }
	}
	var s = url;
	ExcelUpload(url);
}

function AddParameterToUrl(url,parameterName, parameterValue)
{
    if(url.indexOf("?")>-1)
    {
        url += "&";
    }
    else
    {
        url += "?";
    }
    url += parameterName + "=" + parameterValue;
    return url;
}

//*****************************************************************************************//

function ListToPrint(screenPartName, filename)
{
    var url = 'ListToExcel.aspx?menuclosed=1&TOPRINTER=1&name='+ screenPartName + '&filename=' + filename;
    window.open(url);
}

function ElementGroup_SetValue( /*string*/ destinationElementName, /*string*/ newValue )
{
    var grpTable = $( destinationElementName );
    
    if ( ! grpTable )
        return;
  
    try
    {
        grpTable.parentElement.parentElement.parentElement.parentElement.rows[ 0 ].cells[ 1 ].innerText = newValue;
    }
    catch ( err )
    {
    }
}

function ElementGroup_Visibility( /*string*/ destinationElementName, /*string*/ newValue )
{
    var grpTable = $( destinationElementName );
    
    if ( ! grpTable )
        return;
  
    try
    {
        var parentTable = grpTable.parentElement.parentElement.parentElement.parentElement;
        
        if ( newValue === '0' )
        {
            parentTable.style.display = 'none';
            parentTable.style.visibility = 'hidden';
        }
        else
        {
            parentTable.style.display = 'block';
            parentTable.style.visibility = 'visible';
        }
        
        var RestoreElementFn = function ( el )
        {
            if ( el.validate_old )
            {
                el.validate = el.validate_old;
                el.validate_old = null;
            }
        }

        var BackupElementFn = function ( el )
        {
            if ( !el.validate_old )
            {
                el.validate_old = el.validate;
                el.validate = null;
            }
        }
        
        ForEachElementUnderElement( grpTable, function( el, parm ) {
            if ( parm == '1' )
                RestoreElementFn( el );
            else
                BackupElementFn( el );
        }, newValue );
        
    }
    catch ( err )
    {
    }
}

function ForEachElementUnderElement( /*HTMLElement*/ group, /*delegate void( HTMLElement, parm )*/ fnToCall, /*object*/ parm )
{
    var spName = FindScreenPartNameOfGroup( group );

    var ForEachElementInGroupInternal = function ( parent, spName, fnToCall, parm )
    {
        for ( var nElement = 0; nElement < parent.childNodes.length; nElement++ ) 
        {
            var el = parent.childNodes[ nElement ];
            
            if ( !el.elementType )
            {
                if ( el.childNodes.length > 0 )
                    ForEachElementInGroupInternal( el, spName, fnToCall, parm );
            }
            else if ( el.id && el.id.startsWith( spName ))
            {
                fnToCall( el, parm );
            }
        }
    }

    ForEachElementInGroupInternal( group, spName, fnToCall, parm );
}

function FindScreenPartNameOfGroup( /*HTMLElement*/ group )
{
    var o = group;

    while ( o.parentElement )
    {
        o = o.parentElement;
        
        if ( ! o.id )
            continue;
            
        if ( !o.id.startsWith( SCREENPARTPREFIX ))
            continue;
        
        var id = o.id.substring( SCREENPARTPREFIX.length + 1 );
        
        return id;
    }
    
    return null;
}

function ElementGroup_Enabled( /*string*/ destinationElementName, /*string*/ newValue )
{
    var grpTable = $( destinationElementName );
    
    if ( ! grpTable )
        return;
  
    try
    {
        ForEachElementUnderElement( grpTable, function( el, parm ) {
            eval( el.enable + '( el, parm );' );
        }, newValue );
    }
    catch ( err )
    {
    }
}

