
function jsFormSetRequirements(obj, descr, req, check) {
	if (document.getElementById && document.getElementById(obj) && document.getElementById(obj).form)
		obj = document.getElementById(obj);
	else
		obj = jsFindObj(obj);

	// set properties
	if (obj)
	{
		obj.validateReq = req;
		obj.validateCheck = check;
		obj.validateDescr = descr;
	}
}

function jsFormSetUnique(obj, unique) {
	if (document.getElementById && document.getElementById(obj) && document.getElementById(obj).form)
		obj = document.getElementById(obj);
	else
		obj = jsFindObj(obj);

	// set properties
	if (obj)
		obj.validateUnique = unique;
}

function jsFormSetUpperCaseFirst(obj, single) {
	if (document.getElementById && document.getElementById(obj) && document.getElementById(obj).form)
		obj = document.getElementById(obj);
	else
		obj = jsFindObj(obj);

	// set properties
	if (obj)
	{
		obj.validateUpperCaseFirst = true;
		obj.validateUpperCaseFirstSingle = (single) ? true : false;
	}
}

function jsFormUpdate(obj) {
	if (obj.validateUpperCaseFirst && obj.type && obj.type.toLowerCase() == 'text')	{
		if (obj.validateUpperCaseFirstSingle == true)
			obj.value = jsUpperCaseFirstSingle(obj.value);
		else
			obj.value = jsUpperCaseFirstAll(obj.value);
	}

	if (obj.validateCheck || obj.validateReq) {
		err = false;
		val = '';

		obj_type = (obj.type) ? obj.type.toLowerCase() : false;

		if (obj_type == 'select-one') {
			err = (obj.validateReq == true && (obj.selectedIndex < 0 || obj.value == ''));
		} else if (obj_type == 'select-multiple') {
			err = (obj.validateReq == true && obj.options.length == 0);
		} else {
			obj.value = jsAllTrim(obj.value);
			val = obj.value;
			err = (obj.validateReq == true && (val == '' || val == '-' || val == 'http://' || val == 'https://'));
		}

		if (obj.validateCheck && err == false && val != '') {
			if (obj.validateCheck == 'url' &&
				val.substr(0,7) != 'http://' &&
				val.substr(0,8) != 'https://')
				err = true;

			if (obj.validateCheck == 'email' &&
				(val.indexOf('@') < 1 || val.indexOf('@') == (val.length - 1)))
				err = true;

			if (obj.validateCheck == 'number*' &&
				(isNaN(val) && val != '*' || parseInt(val) < 0))
				err = true;

			if (obj.validateCheck.substr(0,7) == 'number+') {
				if (obj.validateCheck.length > 7)
					min = obj.validateCheck.substr(7,obj.validateCheck.length - 7);
				else
					min = 0;

				if (min == 0 && val == '-') val = 0;

				if (isNaN(val) || parseInt(val) < parseInt(min))
					err = true;
			}

			if (obj.validateCheck.substr(0,8) == 'compare:') {
				compare = obj.validateCheck.substr(8,obj.validateCheck.length - 8);
				compareobj = jsFindObj(compare);

				if (val != compareobj.value)
					err = true;
			}

			if (obj.validateCheck == 'unique') {
				needle = obj.value.toLowerCase();
				haystack = obj.validateUnique.toLowerCase();

				if (haystack.indexOf('|'+needle+'|') > -1)
					err = true;
			}
		}

		// Change class
		if (err)
			obj.className='error';
		else
			obj.className='flat';

		return (err);
	}
}

function jsFormCheck(f) {
	var noerrors = true;
	var first    = false;
	var fields   = new Array();

	for (var i = 0; i < f.elements.length; i++) {
		// Check for letter cases
		if (f.elements[i].validateUpperCaseFirst)
			jsFormUpdate(obj = f.elements[i]);

		// Check for errors
		if (f.elements[i].validateCheck || f.elements[i].validateReq) {
			err = jsFormUpdate(obj = f.elements[i]);

			if (err) {
				if (first == false) first = i;

				fields.push(f.elements[i].validateDescr);
				noerrors = false;
			}
		}
	}

	if (noerrors == false) {
		alert ('Aşağıdaki bilgiler eksik ya da hatalı.\n' +
			   'Lütfen kontrol ediniz.\n\n' +
			   '- ' +
			   fields.join('\n- ') +
			   '\n');
		f.elements[first].focus();
	}

	return (noerrors);
}

function jsLTrim(s) {
	if (s.length > 0) {
		while (s.substring(0,1) == ' ')
			s = s.substring(1,s.length);
	}
	return s;
}

function jsRTrim(s) {
	if (s.length > 0) {
		while (s.substring(s.length-1,s.length) == ' ')
			s = s.substring(0,s.length-1);
	}
	return s;
}

function jsAllTrim(s) {
	if (s.length > 0) {
		s = jsLTrim(s);
		s = jsRTrim(s);
	}
	return s;
}

function jsUpperCaseFirstSingle(s) {
	var s = jsAllTrim(s);
	if (s == '') return '';
	first = s.substring(0,1).replace('i','İ');
	rest = s.substring(1,s.length).replace(/\I/g,'ı');
	s = first.toUpperCase() + rest.toLowerCase();
	return s;
}

function jsUpperCaseFirstAll(s) {
	var s = jsAllTrim(s);
	if (s == '') return '';
	var o_w = (s.indexOf(' ') == -1) ? new Array (s) : s.split(' ');
	var n_w = new Array ();
	var count = 0;
	for (i=0; i<o_w.length; i++) {
		o_w[i] = jsAllTrim(o_w[i]);
		if (o_w[i] != '' && o_w[i] != null) {
			first = o_w[i].substring(0,1).replace('i','İ');
			rest = o_w[i].substring(1,o_w[i].length).replace(/\I/g,'ı');
			n_w[count] = first.toUpperCase() + rest.toLowerCase();
			count++;
		}
	}
	s = '';
	for (i=0; i<n_w.length; i++) {
		s = s + n_w[i] + ' ';
	}
	return jsRTrim(s);
}

function jsSelectDate(field, path) {
	if (!(path)) var path = '.';
	var dlgParams = new Array();
	var fld = document.getElementById(field);
	var val = fld.value;
	var MM = parseInt(val.substring(3,5)) - 1;
	var YY = parseInt(val.substring(6,10));
	if (MM==null || MM=="NaN" || MM<0 || MM>11) MM = "";
	if (YY==null || YY=="NaN" || YY<1900 || YY>9999) YY = "";
	dlgParams['month'] = MM;
	dlgParams['year'] = YY;
	var calendarDate = showModalDialog(path+"/calendar.htm", dlgParams, "dialogHeight:190px; dialogWidth: 210px; scroll: no; status: no; help: no;");
	if (calendarDate) {
		fld.value = calendarDate;
	}
}
