//=== IE-only section 
var CONST_DEV2GO_JS_PREFIX						= "dev2go_1"; //=== Update also in constants
var ieBar

function USER_EVENT_HANDLER_OnContextMenu()
{
	//=== Create the toolbar on the left
	if (ieBar) {
		ieBar.style.display = 'inline';
	}
	else {
		var ieButton = null;
		ieBar = document.createElement('DIV');
		
		ieButton = document.createElement('INPUT');
		ieBar.style.textAlign = 'right';
		ieButton.type = 'button';
		ieButton.style.height = ieButton.style.width = 20;
		ieButton.style.height = ieButton.style.height = 18;
		ieButton.style.fontSize = 2;
		ieButton.style.borderWidth = 1;
		ieButton.style.backgroundColor = 'transparent';
		ieButton.style.backgroundImage = 'url(idune_img/menu_bt_login.gif)';
		ieButton.onclick = USER_COMMAND_LoginWindow;
		ieBar.appendChild(ieButton);

	}
	ieBar.style.backgroundColor = '#FFB900';
	ieBar.style.paddingTop = 1;
	ieBar.style.paddingRight = 2;
	ieBar.style.borderTopStyle = 'outset';
	ieBar.style.borderTopWidth = 2;
	ieBar.style.position = 'absolute';
	ieBar.style.top = document.body.clientHeight + document.body.scrollTop -22;
	ieBar.style.left = 0;
	ieBar.style.width = document.body.clientWidth;
	ieBar.style.height = 22;
	ieBar.style.backgroundImage = 'url(idune_img/menulogo_horizontal.jpg)';
	//ieBar.style.backgroundPosition = 'right';
	ieBar.style.backgroundRepeat = 'no-repeat';
	ieBar.onclick = new Function('event.cancelBubble = true;event.returnValue = false;');
	document.body.appendChild(ieBar);

	document.body.onclick = USER_EVENT_HANDLER_OnClick;
}

function USER_EVENT_HANDLER_OnClick()
{
	if (ieBar) {
		ieBar.style.display = 'none';
	}
}

function USER_COMMAND_Logout()
{
	var oForm = self.document.PageForm;

	if ( confirm(TEXTS_CONFIRM_LOG_OFF) ) {
		oForm.Mode.value = MODES_LOG_OUT;
		oForm.submit();
	}
}

function USER_COMMAND_LoginWindow()
{
	var oForm = self.document.PageForm;

	USER_EVENT_HANDLER_OnClick();
	var sLoc = CONST_DEV2GO_JS_PREFIX + '/' + g_lLanguageID + '/iDune_HTML/Other/Login_1.htm';
	sRetval = self.showModalDialog(sLoc, null, 'resizable:no;status:no;dialogHeight:286px;dialogWidth:427px;');
	if (sRetval) {
		oForm.Mode.value = '';
		oForm.submit();
	}
}

function user_SetToolbar(sToolbarLevel)
{
	if ((''+sToolbarLevel) != 'none') {
		document.body.oncontextmenu		= USER_EVENT_HANDLER_OnContextMenu;
	}
}

//=== End of IE-only section 

var CONST_FILE_INPUT_PREFIX						= 'f_zfq__';
var g_lLanguageID								= 1033;

//=== Logics values
var VALUES_LOGIC_IS								=	1
var VALUES_LOGIC_IS_NOT							=	2

//=== JS check function values
var VALUES_JS_CF_IS_EMPTY						=	1
var VALUES_JS_CF_IS_VALID_DATE_EUROPE			=	2
var VALUES_JS_CF_IS_VALID_EMAIL					=	3
var VALUES_JS_CF_IS_INTEGER						=	4
var VALUES_JS_CF_IS_NUMERIC						=	5
var VALUES_JS_CF_IS_AT_LEAST					=	6
var VALUES_JS_CF_IS_AT_MOST						=	7
var VALUES_JS_CF_IS_VALID_DATE_USA				=	8
var VALUES_JS_CF_IS_VALID_PHONE					=	9

var MODES_LOG_OUT								= 50;

var TEXTS_CONFIRM_LOG_OFF				= 'Are you sure you want to log off?';


//=== Error messages
var TEXTS_ALERT_SHOULD_NOT_BE_EMPTY				= 'The input should not be empty.';
var TEXTS_ALERT_SHOULD_BE_EMPTY					= 'The input should be empty.';
var TEXTS_ALERT_SHOULD_NOT_BE_VALID_EMAIL		= 'The input should not be a valid e-mail address.';
var TEXTS_ALERT_SHOULD_BE_VALID_EMAIL			= 'The input should be a valid e-mail address.';
var TEXTS_ALERT_SHOULD_NOT_BE_INTEGER			= 'The input should not be whole number(integer).';
var TEXTS_ALERT_SHOULD_BE_INTEGER				= 'The input should be whole number(integer).';
var TEXTS_ALERT_SHOULD_NOT_BE_NUMERIC			= 'The input should not be a number';
var TEXTS_ALERT_SHOULD_BE_NUMERIC				= 'The input should be a number.';
var TEXTS_ALERT_SHOULD_BE_AT_LEAST				= 'The input should be at least ';
var TEXTS_ALERT_SHOULD_LESS						= 'The input should be less than ';
var TEXTS_ALERT_SHOULD_BE_AT_MOST				= 'The input should be at most ';
var TEXTS_ALERT_SHOULD_MORE						= 'The input should be more than ';
var TEXTS_ALERT_SHOULD_BE_USA_DATE				= 'Please enter a valid date (mm/dd/yyyy).';
var TEXTS_ALERT_SHOULD_BE_EUROPE_DATE			= 'Please enter a valid date (dd/mm/yyyy).';
var TEXTS_ALERT_SHOULD_NOT_BE_USA_DATE			= 'Input cannot be a valid date.';
var TEXTS_ALERT_SHOULD_NOT_BE_EUROPE_DATE			= 'Input cannot be a valid date.';
var TEXTS_ALERT_SHOULD_NOT_BE_VALID_PHONE		= 'The input should not be a valid phone number.';
var TEXTS_ALERT_SHOULD_BE_VALID_PHONE			= 'Please insert a valid phone number.';

var user_oLastImg, user_sLastImgSrc;
var Dev2Go_OnSubmitForm = null;

//=== Activated every time a page is rendered for the user.
function user_OnLoad(sMessageForUser, lLanguageID)
{
	g_lLanguageID = lLanguageID;

	if (sMessageForUser)
		alert(sMessageForUser);
	if (self.document.PageForm)
		Highlight(self.document.PageForm.lHighlight.value);	

	user_Scroll();
}

//=== Used to scroll the page
function user_Scroll()
{
	if ('' != self.document.PageForm.sScrollLeft.value) {
		self.document.body.scrollLeft = self.document.PageForm.sScrollLeft.value;
	}

	if ('' != self.document.PageForm.sScrollTop.value) {
		self.document.body.scrollTop = self.document.PageForm.sScrollTop.value;
	}
}

//=== When updating this function, check Submit in ClinetAdmin.js
function Submit()
{
	if (self.document.all) {
		self.document.PageForm.sScrollLeft.value = self.document.body.scrollLeft;
		self.document.PageForm.sScrollTop.value = self.document.body.scrollTop;
	}
	self.document.PageForm.submit();
}

//=== Toggle a node in the tree.
function t(lID)
{
	self.document.PageForm.lToggle.value = lID;
	Submit();
}

//=== Highlight a node in the tree
function Highlight(lID) 
{
	return;
	var oImg, i, s, ns;

	if (user_oLastImg) {
		user_oLastImg.src = user_sLastImgSrc;
	}
	oImg = eval('self.document.i' + lID);
	if (oImg) {
		s = oImg.src;
		user_oLastImg = oImg; 
		user_sLastImgSrc = s;

		ns = '';
		i = s.lastIndexOf('/');
		ns = mid(s,0,i+1) + 'a' + mid(s,i+1,s.length-i-1);
		oImg.src = ns;
	}
	
	self.document.PageForm.lHighlight.value = lID;
}


function userCancelEvent()
{
	event.cancelBubble=true;
	event.returnValue = false;
}

function mid(str,start, l)
{
	var s = '';
	for(i=0; i<l; i++) {
		s += str.charAt(start+i);	
	}
	return s;
}

function GetMonthName(month) {
	if (0==month)
		return 'January';
	else if (1==month)
		return 'February';
	else if (2==month)
		return 'March';
	else if (3==month)
		return 'April';
	else if (4==month)
		return 'May';
	else if (5==month)
		return 'June';
	else if (6==month)
		return 'July';
	else if (7==month)
		return 'August';
	else if (8==month)
		return 'September';
	else if (9==month)
		return 'October';
	else if (10==month)
		return 'November';
	else if (11==month)
		return 'December';	
	else 
		return 'Error';
}

function ShowMonth(sDiv, year, month,year2, month2, day2) {
	var sTable, sMonthName;
	var nMonth, pMonth, nYear, pYear;
	var currentDate;
	var i;
	var sNUrl, sPUrl

	nMonth = month+1;
	nYear = year;
	pMonth = month-1;
	pYear = year;
	if (nMonth>11) {
		nMonth = 0;
		nYear++;
	}
	if (pMonth<0) {
		pMonth = 11;
		pYear--;
	}
		
	sMonthName = GetMonthName(month);
	sNUrl = '<A HREF="Javascript:ShowMonth(\'' + sDiv + '\',' + nYear + ',' + nMonth + ',' + year2 + ',' + month2 + ',' + day2 + ');">';
	sPUrl = '<A HREF="Javascript:ShowMonth(\'' + sDiv + '\',' + pYear + ',' + pMonth + ',' + year2 + ',' + month2 + ',' + day2 + ');">';
	sTitle = sPUrl + '<IMG SRC="/img/aleft.gif" border=0></A>&nbsp;&nbsp;' + sMonthName + ' ' + year + '&nbsp;&nbsp;' + sNUrl + '<IMG SRC="/img/aright.gif" border=0></A>';
	sTable = '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=0 BGCOLOR=336699>';
	sTable += '<TR><TD COLSPAN=7 CLASS=MonthTitle>' + sTitle + '</TD></TR>';
	sTable += '<TR>';
	sTable += '<TD CLASS=DayTitle>sun</TD>';
	sTable += '<TD CLASS=DayTitle>mon</TD>';
	sTable += '<TD CLASS=DayTitle>tue</TD>';
	sTable += '<TD CLASS=DayTitle>wed</TD>';
	sTable += '<TD CLASS=DayTitle>thu</TD>';
	sTable += '<TD CLASS=DayTitle>fri</TD>';
	sTable += '<TD CLASS=DayTitle>sat</TD>';
	sTable += '</TR>';
	
	currentDate = new Date(year, month, 1);
	while ( month == currentDate.getMonth() ) {
		sTable += '<TR>';
		for(i=0; i<currentDate.getDay(); i++) {
			sTable += '<TD CLASS=Day>&nbsp;</TD>';
		}
		for(;i<7 && month==currentDate.getMonth(); i++) {
			if (day2 == currentDate.getDate() && month2 == currentDate.getMonth() && year2 == currentDate.getYear())
				sTable += '<TD CLASS=DayB>' + currentDate.getDate() + '</TD>';
			else
				sTable += '<TD CLASS=Day>' + currentDate.getDate() + '</TD>';
			currentDate.setDate(currentDate.getDate()+1);
		}
		for(;i<7; i++) {
			sTable += '<TD CLASS=Day>&nbsp;</TD>';
		}
		sTable += '</TR>';
	}
	
	
	sTable += '</TABLE>';
	document.all[sDiv].innerHTML = sTable;
}

//=== Open a url in a new window
function OpenInNewWindow(sLoc)
{
	top.window.open(sLoc,'iDuneNewWin' + parseInt(Math.random()*10000));
}

//=== Validate the form input
function Validate(oForm, sInputName, lLogic, lCheckFunc, sLimit)
{
	var oInput, sValue

	//=== Get the input
	oInput = oForm.elements[sInputName];

	if (oInput && 'hidden' == oInput.type) 
		oInput = document.all[CONST_FILE_INPUT_PREFIX + oInput.name];
	
	if (oInput) { //=== We have a valid input object
		if (oInput.length) 
			oInput[0].style.backgroundColor = '';
		else if (oInput.style)
			oInput.style.backgroundColor = '';
		sValue = oInput.value;
		if (!aux_EnsureTrue(oInput, sValue, lLogic, lCheckFunc, sLimit)) {
			return false;
		}
	}
	
	return true;
}

function aux_EnsureTrue(oInput, sValue, lLogic, lCheckFunc, sLimit)
{
	var bRetval, bIsOneChecked;

	bRetval = true;
	if (VALUES_JS_CF_IS_EMPTY == lCheckFunc) {
		if (oInput.length && !oInput.options) {
			bIsOneChecked = false;
			for (i=0;i<oInput.length;i++) {
				if (oInput[i].checked)
					bIsOneChecked = true;
			}
			bRetval = !bIsOneChecked;
		}
		else if ('checkbox' == oInput.type) {
			bRetval = !(oInput.checked);
		}
		else {
			if ('' != sValue) {
				bRetval = false;
			}
		}
	}
	else if (VALUES_JS_CF_IS_VALID_EMAIL == lCheckFunc) {
		bRetval = IsValidEmail(sValue);
	}
	else if(VALUES_JS_CF_IS_VALID_PHONE == lCheckFunc) {
		bRetval = IsValidPhone(sValue);
	}
	else if (VALUES_JS_CF_IS_INTEGER == lCheckFunc) {
		bRetval = IsInteger(sValue);
	}
	else if (VALUES_JS_CF_IS_NUMERIC == lCheckFunc) {
		bRetval = IsReal(sValue);
	}
	else if (VALUES_JS_CF_IS_AT_LEAST == lCheckFunc) {
		if (!IsReal(sValue) || !IsReal(sLimit))
			bRetval = false;
		else {
			bRetval = (parseInt(sValue) >= parseInt(sLimit));
		}
	}
	else if (VALUES_JS_CF_IS_AT_MOST == lCheckFunc) {
		if (!IsReal(sValue) || !IsReal(sLimit))
			bRetval = false;
		else {
			bRetval = (parseInt(sValue) <= parseInt(sLimit));
		}
	}
	else if (VALUES_JS_CF_IS_VALID_DATE_EUROPE == lCheckFunc) {
		bRetval = aux_IsValidDate(sValue, lCheckFunc);
	}
	else if (VALUES_JS_CF_IS_VALID_DATE_USA == lCheckFunc) {
		bRetval = aux_IsValidDate(sValue, lCheckFunc);
	}
	
	if (VALUES_LOGIC_IS_NOT == lLogic)
		bRetval = !bRetval;

	//=== Report an error
	if (!bRetval) {
		if (oInput.length) {
			oInput[0].focus(); 
			if (oInput[0].style)
				oInput[0].style.backgroundColor = '#ffffcc';
		}
		else {
			oInput.focus(); 
			if (oInput.style)
				oInput.style.backgroundColor = '#ffffcc';
		}

		if (VALUES_JS_CF_IS_EMPTY == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_NOT_BE_EMPTY);
			else alert(TEXTS_ALERT_SHOULD_BE_EMPTY);
		}
		
		else if (VALUES_JS_CF_IS_VALID_EMAIL == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_NOT_BE_VALID_EMAIL);
			else alert(TEXTS_ALERT_SHOULD_BE_VALID_EMAIL);
		}

		else if (VALUES_JS_CF_IS_VALID_PHONE == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_NOT_BE_VALID_PHONE);
			else alert(TEXTS_ALERT_SHOULD_BE_VALID_PHONE);
		}
		
		else if (VALUES_JS_CF_IS_INTEGER == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_NOT_BE_INTEGER);
			else alert(TEXTS_ALERT_SHOULD_BE_INTEGER);
		}
		else if (VALUES_JS_CF_IS_NUMERIC == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_NOT_BE_NUMERIC);
			else alert(TEXTS_ALERT_SHOULD_BE_NUMERIC);
		}
		else if (VALUES_JS_CF_IS_AT_LEAST == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_LESS + sLimit);
			else alert(TEXTS_ALERT_SHOULD_BE_AT_LEAST + sLimit);
		}
		else if (VALUES_JS_CF_IS_AT_MOST == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_MORE + sLimit);
			else alert(TEXTS_ALERT_SHOULD_BE_AT_MOST + sLimit);
		}
		else if (VALUES_JS_CF_IS_VALID_DATE_EUROPE == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_NOT_BE_EUROPE_DATE);
			else alert(TEXTS_ALERT_SHOULD_BE_EUROPE_DATE);
		}
		else if (VALUES_JS_CF_IS_VALID_DATE_USA == lCheckFunc) {
			if (VALUES_LOGIC_IS_NOT == lLogic) alert(TEXTS_ALERT_SHOULD_NOT_BE_USA_DATE);
			else alert(TEXTS_ALERT_SHOULD_BE_USA_DATE);
		} 
	}

	return bRetval;
}
		


//=== Check if strEmail is a valid email adress
function IsValidEmail(strEmail)
{
	if (Trim('' + strEmail) == '')
		return true;

	var string2 = Trim('' + strEmail);
	if (string2.length==0||string2.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1)
	{
		return false;
	}
	else
	{
		return true;
	}
}

//=== Check if str is an integer
function IsInteger(str)
{
	var i;

	var lLenStr;
	lLenStr = str.length;
	if (0 == lLenStr)
	  return false;

	if ('-' != str.charAt(0) && '+' != str.charAt(0) && ('0' > str.charAt(0) || '9' < str.charAt(0)))
	  return false;

	if (1 == lLenStr && ('0' > str.charAt(0) || '9' < str.charAt(0)))
	  return false;

	for (i=1; i<lLenStr; i++)
	   if ('0' > str.charAt(i) || '9' < str.charAt(i))
	     return false;

	return true;
}

function IsReal(str)
{
var i;

	var lLenStr,lNumPoint;
	lLenStr = str.length;
	if (0 == lLenStr)
	  return false;

	if ('-' != str.charAt(0) && '+' != str.charAt(0) && ('0' > str.charAt(0) || '9' < str.charAt(0)))
	  return false;

	if (1 == lLenStr && ('0' > str.charAt(0) || '9' < str.charAt(0)))
	  return false;

	lNumPoint = 0;
	for (i=1; i<lLenStr; i++) {
	   if (('0' > str.charAt(i) || '9' < str.charAt(i)) && ('.' != str.charAt(i)))
	     return false;
	   if ('.' == str.charAt(i))
	     lNumPoint++;
	}

	if ('.' == str.charAt(lLenStr-1))
	  return false;

	if (1 < lNumPoint)	
	  return false;
	else {
	  if (0 < lNumPoint) {
	    var lposPoint;
	    lposPoint = str.indexOf('.');
	    if (1 == lposPoint && ('-' == str.charAt(0) || '+' == str.charAt(0)))
	      return false;
	  }
	}

	return true;
}

function aux_IsValidDate(sValue,lCheckFunc)
{
	var bRetval, aParts;
	bRetval = false;
	
	if (Trim('' + sValue) == '')
		return true;

	if (VALUES_JS_CF_IS_VALID_DATE_EUROPE == lCheckFunc) { //==== dd/mm/yyyy
		aParts = Split(sValue,'/')
		if (aParts.length && aParts.length == 3) {
			bRetval = IsValidDate(aParts[0], aParts[1], aParts[2]);	
		}
	}
	else if (VALUES_JS_CF_IS_VALID_DATE_USA == lCheckFunc) {//==== mm/dd/yyyy
		aParts = Split(sValue,'/')
		if (aParts.length && aParts.length == 3) {
			bRetval = IsValidDate(aParts[1], aParts[0], aParts[2]);	
		}
	}
	else {
		return false;
	}

	return bRetval;
}

function Split(str, sSeparator)
{
var i;

	if (0 == str.length)
	  return 0;

	var lNumMembers;
	lNumMembers = 0;
	for (i=0; i<str.length; i++) {
	   if (sSeparator == str.charAt(i))
	     lNumMembers++;
	}

	var arrMembers;

	if (0 == lNumMembers) {
	  arrMembers = new Array(1);
	  arrMembers[0] = str;
	  return arrMembers;
	}

	arrMembers = new Array(lNumMembers);
	  
	var lposStartMember,lposEndMember;
	lposStartMember = 0;
	for (i=0; i<lNumMembers; i++) {
	   lposEndMember = str.indexOf(sSeparator,lposStartMember);
	   arrMembers[i] = str.substring(lposStartMember,lposEndMember);
	   lposStartMember = lposEndMember + 1;
	}
	
	arrMembers[i] = str.substring(lposStartMember,str.length);

	return arrMembers;
}

function IsValidDate(arg)
{
var lDay, lMonth, lYear;
var alNumDaysOfMonth;

   alNumDaysOfMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31); // array number days of month 

   if (IsValidDate.arguments.length == 0)  // no parametrs
      return false;
   
   if (IsValidDate.arguments.length == 3)
   {
      lDay = IsValidDate.arguments[0];
      lMonth = IsValidDate.arguments[1];
      lYear = IsValidDate.arguments[2];
   }
   else
      if (IsValidDate.arguments.length == 2)
      {
         lDay = IsValidDate.arguments[0];
         lMonth = IsValidDate.arguments[1];
         lYear = 1801;
      }
      else
      {
         lDay = IsValidDate.arguments[0];
         lMonth = 1;
         lYear = 1801;
      }
// if parametrs of function not integer
   if (lDay != Math.round(lDay) || lMonth != Math.round(lMonth) || lYear != Math.round(lYear))
      return false;
   if (lDay < 1 || lDay > 31)           // check day
      return false;
   if (lMonth < 1 || lMonth > 12)       // check month
      return false;
   if (lYear < 1801 || lYear > 9999)    // check year
      return false; 

   if (lDay > alNumDaysOfMonth[lMonth-1] && lMonth != 2) // check day of month 2
      return false;

   if (lDay == 29 && lMonth == 2)        
      if (lYear/4 == Math.round(lYear/4)) 
         if (lYear/100 == Math.round(lYear/100))
            if (lYear/400 == Math.round(lYear/400))
               return true;
            else
               return false;
         else
            return true;
      else
         return false;
   else if (lDay > 29 && lMonth == 2)
   	return false;

   return true;
}

function IsValidPhone(str)
{
var i;
var lCountOpenSograim, lCountCloseSograim, lCountPlus;
var charPrevLetter;
var newStr;

	newStr = "";
	for (i=0; i<str.length; i++)
	   if (" " != str.charAt(i))
	     newStr = newStr + str.charAt(i);

	if (0 == str.length)
	  return true;

	lCountOpenSograim = 0;
	lCountCloseSograim = 0;
	lCountPlus = 0;
	charPrevLetter = "null";

	if ("-" == newStr.charAt(0))
	  return false;

	for (i=0; i<newStr.length; i++) {

	   switch (newStr.charAt(i)) {
		case "(":
		   lCountOpenSograim++;
		   break;
		case ")" :
		   lCountCloseSograim++;
		   break;
		case "+" :
		   lCountPlus++;
		   break;
		case "-" :
		{
		   if ("-" == charPrevLetter || "(" == charPrevLetter)
		     return false;
		}
		   break;
		case ")" :
		{
		   if ("-" == charPrevLetter)
		     return false;
		}
		   break;
		default :
		{
		   if ("0" > newStr.charAt(i) || "9" < newStr.charAt(i))
		     return false;
		}
	   }
	   charPrevLetter = newStr.charAt(i);

	}

	if (1 < lCountOpenSograim || 1 < lCountCloseSograim || 1 < lCountPlus)
	  return false;

	if ((0 < lCountOpenSograim || 0 < lCountCloseSograim) && (lCountOpenSograim != lCountCloseSograim))
	  return false;

	if ("-" == str.charAt(str.length-1) || "+" == str.charAt(str.length-1))
	  return false;

	return true;
}

//=== Trim a string
function Trim(str) {
	var sWorker = new String(str);
	
	if (!str)
		return '';
		
    	//=== Left trim
	for (i=0;i<sWorker.length; i++) {
		if ( ' ' != sWorker.charAt(i) )
			break;
	}
	sWorker = sWorker.substring(i,sWorker.length);

	//=== Right trim
	for (i=sWorker.length-1;i>=0; i--) {
		if ( ' ' != sWorker.charAt(i) )
			break;
	}
	sWorker = sWorker.substring(0,i+1);
	
	return sWorker;
}

function D2G_AttachEvent(sEvent, fFunc) 
{
	var sTemp = sEvent.toLowerCase();

	if ('onsubmit' == sTemp) {
		Dev2Go_OnSubmitForm = fFunc;
	}
}

//=== Executed on before submit form by user
function idune_OnBeforeSubmit(ieForm)
{
	var i;
	var ieInput, sType;
	var sInputs='';
	var bFileUploadSupport = false;

	for (i=0; i<ieForm.elements.length; i++) {
		ieInput = ieForm.elements[i];
		if (ieInput.name) {
			sType = ieInput.type;
			sType = sType.toLowerCase();
			if ('file' == sType) {
				bFileUploadSupport = true;
				if (ieForm.elements[ ieInput.name.substr(CONST_FILE_INPUT_PREFIX.length) ])
					ieForm.elements[ ieInput.name.substr(CONST_FILE_INPUT_PREFIX.length) ].value = ieInput.value;				
			}
			else {
				sInputs += ieInput.name + ',';
			}
		}
	}
	
	if (bFileUploadSupport){
		ieForm.sInputNames.value = sInputs;
		ieForm.encoding = 'multipart/form-data';
	}

	//=== Execute the users confirmation function
	if (Dev2Go_OnSubmitForm) {
		if ( !Dev2Go_OnSubmitForm(ieForm) ) {
			return false;
		}
	}
	
	return true;
}

function D2G_ChangeFont(ieObject, sColor, sFontSize, sFontWeight, sBackgroundColor )
{
	if (ieObject && ieObject.style) {
		if (sColor) {
			ieObject.bOldColor = true;
			ieObject.oldColor = ieObject.style.color;
			ieObject.style.color = sColor;
		}
		else if (ieObject.bOldColor) {
			ieObject.bOldColor = false;
			ieObject.style.color = ieObject.oldColor;
		}
	}
	
	if (ieObject && ieObject.style) {
			if (sFontSize) {
				ieObject.bOldFontSize = true;
				ieObject.oldFontSize = ieObject.style.fontSize;
				ieObject.style.fontSize = sFontSize;
			}
			else if (ieObject.bOldFontSize) {
				ieObject.bOldFontSize = false;
				ieObject.style.fontSize = ieObject.oldFontSize;
			}
	}
	
	if (ieObject && ieObject.style) {
				if (sFontWeight) {
					ieObject.bOldFontWeight = true;
					ieObject.oldFontWeight = ieObject.style.fontWeight;
					ieObject.style.fontWeight = sFontWeight;
				}
				else if (ieObject.bOldFontWeight) {
					ieObject.bOldFontWeight = false;					
					ieObject.style.fontWeight = ieObject.oldFontWeight;
				}
	}
	
	if (ieObject && ieObject.style) {
			if (sBackgroundColor) {
				ieObject.bOldBackgroundColor = true;
				ieObject.oldBackgroundColor = ieObject.style.backgroundColor;
				ieObject.style.backgroundColor = sBackgroundColor;
			}
			else if (ieObject.bOldBackgroundColor) {
				ieObject.bOldBackgroundColor = false;
				ieObject.style.backgroundColor = ieObject.oldBackgroundColor;
			}
	}
}

function D2G_ChangeBlock(ieObject, sBackgroundColor )
{
	if (ieObject && ieObject.style) {
			if (sBackgroundColor) {
				ieObject.bOldBackgroundColor = true;
				ieObject.oldBackgroundColor = ieObject.style.backgroundColor;
				ieObject.style.backgroundColor = sBackgroundColor;
			}
			else if (ieObject.bOldBackgroundColor) {
				ieObject.bOldBackgroundColor = false;
				ieObject.style.backgroundColor = ieObject.oldBackgroundColor;
			}
	}
}