//----------------------------------------------------------------------------------------------------------------
// exd.mi
//
// extra definitions for internal objects
//----------------------------------------------------------------------------------------------------------------
#ifndef included
#error This script can only be compiled as a #include
#endif

#ifndef __EXD_MI
#define __EXD_MI



//*****************************************************************************
// String CLASS
//*****************************************************************************

Function String replaceString(string baseString, string toreplace, string replacedby);

/**
 replaceString()

 Returns the class name for the object.

 @param  baseString    The String which you want to modify.
 @param  toreplace     The String you want to be replaced.
 @param  replacedby    The String instead of 'toreplace'.
 @ret                  The replaced string.
*/

String replaceString(string baseString, string toreplace, string replacedby) {
	if (toreplace == "") return baseString;
	string sf1 = strupper(baseString);
	string sf2 = strupper(toreplace);
	int i = strsearch(sf1, sf2);
	if (i == -1) return baseString;
	string left = "", right = "";
	if (i != 0) left = strleft(baseString, i);

	if (strlen(basestring) - i - strlen(toreplace) != 0) {
		right = strright(basestring, strlen(basestring) - i - strlen(toreplace));
	}
	return left + replacedby + right;
}

Function String cutString(string baseString, string toreplace);

/**
 cutString()

 Returns the class name for the object.

 @param  baseString    The String which you want to modify.
 @param  toreplace     The String you want to be replaced.
 @ret                  The replaced string.
*/

String cutString(string baseString, string toreplace) {
	if (toreplace == "") return baseString;
	int i = strsearch(baseString, toreplace);
	if (i == -1) return baseString;
	string left = "", right = "";
	if (i != 0) left = strleft(baseString, i);

	if (strlen(basestring) - i - strlen(toreplace) != 0) {
		right = strright(basestring, strlen(basestring) - i - strlen(toreplace));
	}
	return left + right;
}

Function String fillStringBefore(string baseString, string after, string before);

/**
 fillStringBefore()

 Returns the class name for the object.

 @param  baseString    The String which you want to modify.
 @param  toreplace     The String you want to be replaced.
 @ret                  The replaced string.
*/

String fillStringBefore(string baseString, string filled, string anchor) {
	int i = strsearch(baseString, anchor);
	if (i == -1) return baseString;

	string left = "", right = "";
	if (i != 0) left = strleft(baseString, i);
	if (strlen(basestring) - i - strlen(toreplace) != 0) {
		right = strright(basestring, strlen(basestring) - i);
	}
/*	bef.setText(integerToString(i) + " - " + left);
	aft.setText(integerToString(strlen(basestring) - i) + " - " + right);
*/	return left + filled + right;
}


Function Int countSubString(string str, string substr);

int countSubString(string str, string substr) {
	int n = 0;
	for ( int i = 0; i < 666; i++ ) {
		int r = strSearch(str, substr);
#ifdef DEBUG
		debug(integerToString(r));
#endif
		if (r == -1) i = 666;
		else {
			str = strright(str, strlen(str) - (r + 1));
			n++;
			if (strlen(str) - r == 1) return n;
		}
	}
	return n;
}	

#endif