// Common Functions
function browsertype() {
	var type = new String();
	if (document.getElementById) {	//Standard - NN6,Mozilla,IE5
		type = 'STD';
	} else if (document.all) {		//IE4
		type = 'IE4';
	} else if (document.layers) {	//NN4
		type = 'NN4';
	} else {						//Other
		type = 'OTH';
	}
	return(type);
}

function constract_ajax() {
	if(window.XMLHttpRequest) {
	    ajax = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
	    try {
	        ajax = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch(e) {
	        ajax = new ActiveXObject("Microsoft.XMLHTTP");
	    }
	}
	return(ajax);
}

function ajax_pageload(div, url) {
	var ajax = constract_ajax();
	ajax.open('GET', url);
	ajax.onreadystatechange = function() {
	    if (ajax.readyState == 4 && ajax.status == 200) {
	        var obj = document.getElementById(div);
	        if (obj == null) return;
	        obj.innerHTML = ajax.responseText;
	    }
	}
	ajax.send('');
}

function objform(name) {
	switch (browsertype()) {
		case 'STD':
		case 'OTH':
			var obj = document.getElementsByName(name);
			obj = obj[0];
			break;
		case 'IE4':
		case 'NN4':
			var obj = document.forms[0].elements[name];
			break;
		default:
			break;
	}
	return(obj);
}

function arr_objform(name) {
	switch (browsertype()) {
		case 'STD':
		case 'OTH':
			var obj = document.getElementsByName(name);
			if (obj.length == 1) obj = obj[0];
			break;
		case 'IE4':
		case 'NN4':
			var obj = document.forms[0].elements[name];
			break;
		default:
			break;
	}
	return(obj);
}

function objelement(id) {
	switch (browsertype()) {
		case 'STD':
		case 'OTH':
			var obj = document.getElementById(id);
			break;
		case 'IE4':
			var obj = document.all(id);
			break;
		case 'NN4':
			var obj = document.layers[id];
			break;
		default:
			break;
	}	
	return(obj);
}

function reload(key, value) {
	url = window.location.protocol + '//' + window.location.hostname + window.location.pathname;
	query = window.location.search;	
	url += setquery(query, key, value);
	if (key == 'order') {
		if (query.indexOf('desc') == -1) {
			url += '&desc';
		} else {
			url = url.replace('&desc', '');
		}
	}
	window.location.href = url;
}

function setquery(query, key, value) {
	if (query.indexOf(key) == -1) {
		if (query == '') {
			query = '?';
		} else {
			query += '&';
		}
		query += key + '=' + value;
	} else {
		re = new RegExp(key + '=([^&]*)', 'gi')
		query = query.replace(re, key + '=' + value);
	}
	return query;
}

function parse_cookie() {
	
	var query = new String(document.cookie);
	var retval = new Array();	// Return Array: [name] = value;

	if (query.length == 0) return;
	
	arr_queries = query.split(';');
		
	for (key in arr_queries) {
		var arr_temp = arr_queries[key].split('=');
		if (!arr_temp[1]) arr_temp[1] = '';
		retval[trim(arr_temp[0])] = trim(arr_temp[1]);
	}	
	return(retval);
}

function setcookie(name, value) {
	var expires = new String('expires=Thu, 1-Jan-2030 00:00:00 GMT;');
	document.cookie = name + '=' + value + '; ' + expires;
}

function trim(str) {
	return str.replace(/^\s+|\s+$/g, '');
}

function format_number(value) {
	return value.replace(/[^-0-9.]/g, '');
}

function isemail(value) {
	value = new String(value);
	re 	  = new RegExp('^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$', 'i');	
	if (re.test(value)) {		
		return true;
	} else {
		return false;
	}
}

function num(obj, integer, decimal, delimiter) {
	
	var val = new String(obj.value);
	var is_negative = new Boolean();
	var reg = new RegExp('-?\\d{0,' + integer + '}\\.\\d{0,' + decimal + '}');
	
	if (val.length == 0) return;
	if (val.indexOf('-') == 0) is_negative = true;
	
	val = obj.value.replace(/[^\d.]/g, '');
	
	if (val.indexOf('.') == -1) val += '.';
	
	val = new String(val.match(reg));
	val = val.split('.');
	
	var val_int = new String(val[0]);
	var val_dec = new String(val[1]);
	
	if (delimiter.valueOf()) {
		var tmp_val = new String();
		while (val_int != (tmp_val = val_int.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2"))) {
    		val_int = tmp_val;
  		}
	}

	if (val_int.length == 0) val_int = '0';
	var retval = new String(val_int);
	if (val_dec.length > 0) retval += '.' + val_dec;
	if (is_negative.valueOf()) retval = '-' + retval;
	
	obj.value = retval;
}

function change_geolist(type, parentid, selectedid, fieldkey) {

	if (type == '') return;
	
	var related_geotype = new String();
	
	document.getElementById(fieldkey + type).innerHTML = 'Now Loading...';
	
	switch (type) {
		case 'country':
			related_geotype = 'state';
			break;
		case 'state':
			related_geotype = 'county';
			break;
		case 'county':
			related_geotype = '';
			break;
		default:
			break;
	}	
	
	var ajax = constract_ajax();
	ajax.open('GET', '/application/geolist.php?parentid=' + parentid + '&selectedid=' + selectedid);
	ajax.onreadystatechange = function() {
	    if (ajax.readyState == 4 && ajax.status == 200) {
	        var obj = document.getElementById(fieldkey + type);
	        obj.innerHTML = '<select' +
	        				'	name="' + fieldkey + type + 'id" ' +
	        				'	class="comboBox" ' +
	        				'	onchange="change_geolist(\'' + related_geotype + '\', this.value, 0, \'' + fieldkey + '\')" ' +
	        				'	style="width:200px;" ' +
	        				'>' +
	        				ajax.responseText + 
	        				'<\/select>';
	    }
	}
	ajax.send('');
}
