var current_msg = null;

function sems_enable_all_fields(theForm) {
        var i;
        for (i = 0; i < theForm.length; i++)
                if(theForm.elements[i].disabled == true)
                        theForm.elements[i].disabled = false;
}

function rightTrim() {
    return this.replace(/\s+$/gi, "");
}

function leftTrim() {
    return this.replace(/^\s*/gi, "");
}

String.prototype.rightTrim = rightTrim;
String.prototype.leftTrim = leftTrim;

function string_alltrim(SSS) {
	var tmp = "";
	for( var i=0;i< SSS.length;i++) {
		if(SSS.charAt(i) != " ")
			tmp = tmp + SSS.charAt(i);
	}
	return tmp;
}


function sems_msg(str) {
	alert("MESSAGE: "+str);
}

function sems_confirm(str) {
	return confirm("QUESTION: "+str+"?");
}

function sems_tellwrongofferorig(str, field, orig_field) {
	if(sems_confirm(str + " REVERT TO ORIGIONAL VALUE"))
		field.value = orig_field.value;
}

function sems_showChangesMade() {
	parent.frames[0].hideAllMessages();
	parent.frames[0].showChangesMade();
}

function sems_validateString(field, fldname, min, max, canbeempty) {
	sems_showChangesMade();

	if(field.length < min)  {
		if(!(canbeempty == true && field.length == 0)) {
			sems_msg(fldname + " must be at least " + min + " character(s)");
			return false;
		}
	}
	if(field.length > max) {
		sems_msg(fldname + " can not be more than " + max + " characters");
		return false;
	}

	if(sems_validateString.arguments.length > 5) {
		var re;
		var re_message;
		re = sems_validateString.arguments[5];
		re_message = sems_validateString.arguments[6];

		if(!field.match(re))
			sems_msg(re_message);
			return false;

	}

}

function sems_validateNumber(field, fldname, min, max, num_deps, show_zero,obj_name,orig_val) {
	sems_showChangesMade();

	checkOK = "0123456789-.";
	decpoints = 0;
	decplaces = 0
	valid = true;
	i=0;
	j=0;
	field = string_alltrim(field);
	for(i=0; i<field.length; i++) {
		ch =  field.charAt(i);
		if(decpoints > 0)
			decplaces++;
		if(ch == '.')
			decpoints++;
		for(j=0; j<checkOK.length; j++) {
			if(ch == checkOK.charAt(j))
				break;					
		}
		if(j==checkOK.length) {
			valid = false;
		}
	}
	if(valid == false) {
		sems_msg(fldname + " is a numeric field.  Please value it correctly!");
		obj_name.value = orig_val;
		return;
	} 
	if(decplaces > num_deps) {
		sems_msg(fldname + " You can only have " + num_deps + " decimal places!");
		obj_name.value = orig_val;
		return;
	}
	if(decpoints > 1) {
		sems_msg(fldname + " You have too many decimal points!");
		obj_name.value = orig_val;
		return;
	}
	if(field < min) {
		sems_msg(fldname + " must be at least " + min);
		obj_name.value = orig_val;
		return;
	} 
	if(field > max) {
		sems_msg(fldname + " cannot be more than " + max);					
		obj_name.value = orig_val;
		return;
	}
}

function sems_validatePassword(field, field_confirm, fldname) {
	if(field != "" && field_confirm != "") {
		if(field != field_confirm) {
			sems_msg(fldname + " must match");
		}
	}
}

function sems_showDiv(whichdiv) {
//	var browser_width = window.innerWidth-20;
//	var browser_width = window.screen.width-20;
	current_msg = whichdiv;
	if(document.layers) {
		alert("Does Any Browser Still Use Document.Layers... if you get this EMAIL bdoan@sicompos.com NOW!!!!!!");
	} else if (document.all) {
		var monkey = document.all(whichdiv).style;
		monkey.left = 0;
		monkey.visibility = "visible";
		var width = document.all(whichdiv).clientWidth;
		var browser_width = window.frameElement.offsetWidth-20;
		monkey.top = 1;
		monkey.left = (browser_width - width);
	} else if(document.getElementById) {
		var browser_width = window.innerWidth-20;
		document.getElementById(whichdiv).setAttribute("style", "position: absolute; top:1px; left:40px;");
		width = document.getElementById(whichdiv).offsetWidth;
		strstr = "position: absolute; visibility: visible; top:1px; left:" + (browser_width - width) + "px;";
		document.getElementById(whichdiv).setAttribute("style", strstr);
	}				
}

function sems_hideDiv(whichdiv) {
//	var browser_width = window.innerWidth-20;
//	var browser_width = window.screen.width-20;
	current_msg = null;
	if(document.layers) {
		alert("Does Any Browser Still Use Document.Layers... if you get this EMAIL bdoan@sicompos.com NOW!!!!!!");
	} else if (document.all) {
		var monkey = document.all(whichdiv).style;
		var width = document.all(whichdiv).clientWidth;
		var browser_width = window.screen.width-20;
		monkey.top = 1;
		monkey.left = (browser_width - width);
		monkey.visibility = "hidden";
	} else if(document.getElementById) {
		var browser_width = window.innerWidth-20;
		document.getElementById(whichdiv).setAttribute("style", "position: absolute; top:1px; left:40px;");
		width = document.getElementById(whichdiv).offsetWidth;
		strstr = "position: absolute; visibility: hidden; top:1px; left:" + (browser_width - width) + "px;";
		document.getElementById(whichdiv).setAttribute("style", strstr);
	}				
}

function sems_resizeDiv() {
	if (current_msg != null) {
		sems_showDiv(current_msg);
	}
}

function sems_tree_toggle(node, next_node) {
	if (next_node.nextSibling.style.display == 'none') {
		if (node.childNodes.length > 0) {
			if (node.childNodes.item(0).nodeName == "IMG") {
				node.childNodes.item(0).src = "images/minus.gif";
			}
		}
		next_node.nextSibling.style.display = 'block';
	} else {
		if (node.childNodes.length > 0) {
			if (node.childNodes.item(0).nodeName == "IMG") {
				node.childNodes.item(0).src = "images/plus.gif";
			}
		}
		next_node.nextSibling.style.display = 'none';
	}
}

function sems_tree_go_down_on_tree(subnode) {
	if(subnode.childNodes.length == 1)
		bobkratz = subnode.childNodes.item(0);
	else
		bobkratz = subnode.childNodes.item(1);

	if(bobkratz.childNodes.length == 2)
		bobdoan = bobkratz.childNodes.item(0);
	else if(bobkratz.childNodes.length == 1)
		bobdoan = bobkratz.childNodes.item(0);
	else
		bobdoan = bobkratz.childNodes.item(1);

	if(bobdoan.childNodes.length == 2)
		subnode = bobdoan.childNodes.item(1);
	else
		subnode = bobdoan.childNodes.item(3);

	return subnode;
}

function sems_tree_findandcheck_children(node, checked) {
	var i=0, n=0;
	var name="";
	var subnode;
	for(i=0;i<node.childNodes.length;i++) {
		name = node.childNodes.item(i).nodeName;
/*		if(name == "TABLE" || name == "TBODY" || name == "TR" || name == "TD") {
			subnode = node.childNodes.item(i);
			sems_tree_findandcheck_children(subnode, checked);
		}*/
		if(name == "TABLE") {
			subnode = node.childNodes.item(i);
			subnode = sems_tree_go_down_on_tree(subnode);
			if(subnode.nodeName == "TD")
				sems_tree_findandcheck_children(subnode, checked);
		}		
		if(name == "A") {
			var a_node = node.childNodes.item(i);
			for(n=0;n<a_node.childNodes.length;n++) {
				name = a_node.childNodes.item(n).nodeName;
				if(name == "INPUT") {
					sems_tree_check_children(a_node, checked);
				}
			}
		}				
	}
}

function sems_tree_check_children(node, checked) {
	var len = node.childNodes.length;
	var i=0;
	for(i=0;i<len;i++) {
		name = node.childNodes.item(i).nodeName;
		if(name == "INPUT") {
			if(node.childNodes.item(i).type == "checkbox") {
				node.childNodes.item(i).checked = checked;
				node.childNodes.item(i).style.backgroundColor = "";				
				sems_tree_findandcheck_children(node.nextSibling, checked);
			}
		}
	}

}

var sems_tree_count_true=0;
var sems_tree_count_true_gray=0;
var sems_tree_count_false=0;

function sems_tree_report_children(node) {
	var i=0, n=0;
	var name="";
	var subnode;
	for(i=0;i<node.childNodes.length;i++) {
		name = node.childNodes.item(i).nodeName;
		if(name == "TABLE") {
			subnode = node.childNodes.item(i);
			subnode = sems_tree_go_down_on_tree(subnode);
			if(subnode.nodeName == "TD")
				sems_tree_report_children(subnode);
		} else if(name == "A") {
			var a_node = node.childNodes.item(i);
			for(n=0;n<a_node.childNodes.length;n++) {
				name = a_node.childNodes.item(n).nodeName;
				if(name == "INPUT") {
					if(a_node.childNodes.item(n).type == "checkbox") {
						var checked = a_node.childNodes.item(n).checked;
						if(checked) 
							if(a_node.childNodes.item(n).style.backgroundColor == "gray")
								sems_tree_count_true_gray++;
							else
								sems_tree_count_true++;
						else
							sems_tree_count_false++;
					}
					//sems_tree_report_children(a_node.nextSibling);
				}
			}
		}
	}
}

function sems_tree_check_parents(node) {
	
	var len = node.childNodes.length;
	var i=0;
	for(i=0;i<len;i++) {
		name = node.childNodes.item(i).nodeName;
		if(name == "INPUT") {
			if(node.childNodes.item(i).type == "checkbox") {
				sems_tree_count_true=0;
				sems_tree_count_true_gray=0;
				sems_tree_count_false=0;
				sems_tree_report_children(node.nextSibling);
				if((sems_tree_count_true > 0 && sems_tree_count_false > 0) || sems_tree_count_true_gray > 0) {
					node.childNodes.item(i).style.backgroundColor = "gray";
					node.childNodes.item(i).checked = true;
				}
				if(sems_tree_count_true > 0 && sems_tree_count_false == 0 && sems_tree_count_true_gray == 0) {
					node.childNodes.item(i).checked = true;
					node.childNodes.item(i).style.backgroundColor = "";				
				}
				if(sems_tree_count_false > 0 && sems_tree_count_true == 0 && sems_tree_count_true_gray == 0) {
					node.childNodes.item(i).checked = false;
					node.childNodes.item(i).style.backgroundColor = "";				
				}						

				if(node.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "DIV") {
					if(node.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling.nodeName == "A")
						sems_tree_check_parents(node.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling);
				}
			}
		}
	}
}

function sems_tree_clicked(node) {
	var len = node.childNodes.length;
	var i=0;
	for(i=0;i<len;i++) {
		name = node.childNodes.item(i).nodeName;
		if(name == "INPUT") {
			if(node.childNodes.item(i).type == "checkbox") {
				var checked = node.childNodes.item(i).checked;
				if(!node.childNodes.item(i).name.match("tree_leaf"))
					sems_tree_check_children(node, checked);
				sems_tree_check_parents(node);
			}
		}
	}
}

function sems_tree_uncheck_parents(node) {
	var len = node.childNodes.length;
	var i=0;
	for(i=0;i<len;i++) {
		name = node.childNodes.item(i).nodeName;
		if(name == "INPUT") {
			if(node.childNodes.item(i).type == "checkbox") {
				sems_tree_check_children(node, false);
				node.childNodes.item(i).checked = false;
				if(node.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "DIV") {
					if(node.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling.nodeName == "A")
						sems_tree_uncheck_parents(node.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling);
				}
			}
		}
	}
	//check children if checked.. if one is not chekced then make box gray..
}

function sems_tree_uncheck_all_but_me(node, callback) {
	sems_tree_check_children(node, false);
	sems_tree_uncheck_parents(node);
	var len = node.childNodes.length;
	var i=0;
	var checkbox_name = "";
	var checkbox_text = "";
	for(i=0;i<len;i++) {
		name = node.childNodes.item(i).nodeName;
		if(name == "INPUT") {
			if(node.childNodes.item(i).type == "checkbox") {
				node.childNodes.item(i).checked = true;
				checkbox_name = node.childNodes.item(i).name;
			}
		}
	}
	var newnode = node.previousSibling;
	len = newnode.childNodes.length;
	for(i=0;i<len;i++) {
		name = newnode.childNodes.item(i).nodeName;
		if(name = "#text") {
			if(newnode.childNodes.item(i).data != "undefined") 
				checkbox_text = newnode.childNodes.item(i).data;
		}
	}
	dothis = callback+"(\""+checkbox_name+"\", \""+checkbox_text+"\");"
	eval(dothis);
}

function sems_tree_connect_text(treeform, textfield) {
	var newstr = "";
	var i;
	for(i=0;i<treeform.elements.length;i++) {
		if(treeform.elements[i].checked == true) {
			if(treeform.elements[i].name.match("leaf")) {
				//10 = "tree_leaf_"
				var num = treeform.elements[i].name.substring(10, treeform.elements[i].name.length);
				if(newstr == "")
					newstr = num;
				else
					newstr = newstr + ", "+num;
			}
		}
	}
	textfield.value = newstr;
}

function sems_tree_connect_text_x(treeform, textfield) {
	var newstr = "";
	var i;
	for(i=0;i<treeform.elements.length;i++) {
		if(treeform.elements[i].checked == true) {
			if(treeform.elements[i].name.match("leaf")) {
				//10 = "tree_leaf_"
				var num = treeform.elements[i].name.substring(10, treeform.elements[i].name.length);
				if(newstr == "")
					newstr = "X" + num + "X";
				else
					newstr = newstr + ",X"+num+"X";
			}
		}
	}
	textfield.value = newstr;
}


function sems_date_connect_month_day_year_hidden(year, month, day, xxx) {
	var m = month.value;
	var d = day.value;
	var y = year.value;
	m = "0"+m;
	d = "0"+d;
	m = m.substr(m.length - 2, 2);
	d = d.substr(d.length - 2, 2);
	xxx.value = m+"/"+d+"/"+y;
}

function sems_date_connect_month_day_year_hidden_field(year, month, day, xxx) {
	var m = month.value;
	var d = day.value;
	var y = year.value;
	m = "0"+m;
	d = "0"+d;
	m = m.substr(m.length - 2, 2);
	d = d.substr(d.length - 2, 2);
	xxx.value = y+"-"+m+"-"+d;
}


function sems_date_selector_change(selector, start_year, start_month, start_day, start_hidden, end_year, end_month, end_day, end_hidden, dow_start) {
	if(selector.value >= 0) {
		var start;
		var end;
		var dis = true;
		
		if(dow_start == 7)
			dow_start = 0;

		var start_week = 0;

		SD = new Date();
        ED = new Date();

        while(1) {
        	if(SD.getDay() == dow_start)
        		break;
        	start_week++;
        	var SD = new Date() ; with (SD) setDate(getDate() - start_week - 7);
        	var ED = new Date() ; with (ED) setDate(getDate() - start_week - 1);
        }
						

		if(selector.value == 0) {
			dis = false;
		} else if(selector.value == 1) {
			start = new Date();
			end = new Date();
		} else if(selector.value == 2) {
			start = new Date();
			start.setDate(start.getDate()-1);
			end = new Date();		
			end.setDate(end.getDate()-1);
		} else if(selector.value == 3) {
			start = new Date();
			start.setDate(start.getDate()-start_week);
			end = new Date();		
		} else if(selector.value == 4) {
			start = new Date();
			start.setDate(1);
			end = new Date();		
		} else if(selector.value == 5) {
			start = new Date();
			start.setDate(1);
			start.setMonth(0);
			end = new Date();		
		} else if(selector.value == 6) {
			start = new Date();
			start.setDate(start.getDate()-7);
			end = new Date();		
			end.setDate(end.getDate()-1);
		} else if(selector.value == 7) {
			start = SD;
			end = ED;
		} else if(selector.value == 8) {
            s = current_biz_date_biz_date.split("-");
            start = new Date();
            start.setYear(s[0]);
            start.setMonth(s[1]-1);
            start.setDate(s[2]);
            end = start;
		} else if(selector.value == 9) {
			today = new Date();
            if( today.getDay() == dow_start ) {
                start = SD;
                end = ED;
            } else {
                start = new Date();
                start.setDate(start.getDate()-start_week);
                end = new Date();
            }
		}
		
		if(selector.value >= 1) {
			start_year.value = formatDate(start, "yyyy");
			end_year.value = formatDate(end, "yyyy");
			start_month.value = formatDate(start, "MM");
			end_month.value = formatDate(end, "MM");
			start_day.value = formatDate(start, "dd");
			end_day.value = formatDate(end, "dd");
			sems_date_connect_month_day_year_hidden(start_year, start_month, start_day, start_hidden);
			sems_date_connect_month_day_year_hidden(end_year, end_month, end_day, end_hidden);
		}
		start_year.disabled = dis;		
		start_month.disabled = dis;		
		start_day.disabled = dis;
		end_year.disabled = dis;		
		end_month.disabled = dis;		
		end_day.disabled = dis;
	}
	
	if( window.sems_date_selector_change_pp ) 
		sems_date_selector_change_pp(selector.value);
}

function sems_date_selector_change_single(selector, start_year, start_month, start_day, start_hidden) {
	if(selector.value >= 0) {
		var start;
		var dis = true;
		if(selector.value == 0) {
			dis = false;
		} else if(selector.value == 1) {
			start = new Date();
		} else if(selector.value == 2) {
			start = new Date();
			start.setDate(start.getDate()-1);
		} else if(selector.value == 8) {
            s = current_biz_date_biz_date.split("-");
            start = new Date();
            start.setDate(s[2]);
            start.setMonth(s[1]-1);
            start.setYear(s[0]);
		}
		
		if(selector.value >= 1) {
			
			start_year.value = formatDate(start, "yyyy");
			start_month.value = formatDate(start, "MM");
			start_day.value = formatDate(start, "dd");
			sems_date_connect_month_day_year_hidden(start_year, start_month, start_day, start_hidden);
		}

		start_year.disabled = dis;		
		start_month.disabled = dis;		
		start_day.disabled = dis;
	}
}

function sems_month_selector_change(selector, start_year, start_month, start_day, start_hidden) {
	if(selector.value >= 0) {
		var start;
		var dis = true;
		if(selector.value == 0) {
			dis = false;
		} else if(selector.value == 1) {
			start = new Date();
		} else if(selector.value == 2) {
			start = new Date();
			start.setDate(start.getDate()-1);
		} else if(selector.value == 3) {
			start = new Date();
			start.setDate(start.getDate()-31);
		}		
		if(selector.value >= 1) {
			start_year.value = formatDate(start, "yyyy");
			start_month.value = formatDate(start, "MM");
			start_day.value = "01";
			sems_date_connect_month_day_year_hidden(start_year, start_month, start_day, start_hidden);
		}
		start_year.disabled = dis;		
		start_month.disabled = dis;		
	}
}


function sems_enable_disable_connector(cb_field, other_field) {
	if(cb_field.checked)
		other_field.disabled = false;
	else
		other_field.disabled = true;
}

function sems_hierarchy_selector_connector(dd, hidden) {
	hidden.value = dd.value;
	if(document.form1.onsubmit != null)
		document.form1.onsubmit();
	document.form1.submit();
}

function sems_tree_mark_store(rn) {
	var obj = eval("document.store_selector.tree_leaf_"+rn);
	obj.checked = true;
	sems_tree_check_parents(obj.parentNode);
}

function sems_search_enable_disable_string(dd, tf) {
	if(dd.value == 0) {
		tf.disabled = true;
		tf.value = "";
	} else {
		tf.disabled = false;
	}
}

function sems_search_enable_disable_number(dd, tf, tf_more) {
	if(dd.value == 0) {
		tf.disabled = true;
		tf_more.disabled = true;
		tf.value = "";
		tf_more.value = "";
	} else if(dd.value >= 1 && dd.value <= 3) {
		tf.disabled = false;
		tf_more.disabled = true;
		tf_more.value = "";
	} else {
		tf.disabled = false;
		tf_more.disabled = false;					
	}
}

function sems_search_modify_orderby(cb_field, field_name, friendly_name, orderby) {
	if(cb_field.checked == true) {
		var myNewOption = new Option(friendly_name,field_name, true, true);
		orderby.options[orderby.options.length] = myNewOption;
	} else {
		for(var i=0;i<orderby.options.length;i++) {
			if(orderby.options[i].value == field_name) {
				orderby.options[i] = null;
				break;
			}
		}
	}
}

function sems_search_set_rn_submit(rn) {
	document.form1.sql_row.value = rn;
	document.form1.target = "main"
	document.form1.actionBOUNCE.value = "LATER";
	if(document.form1.onsubmit != null)
		document.form1.onsubmit();
	document.form1.submit();				

}

function sems_search_submit() {
	if(document.form1.elements['orderby[]'] != null)
		document.form1.elements['orderby[]'].disabled = false;
}

function HACK_sems_tree_check_parents(node, doit) {
	sems_tree_check_parents(node.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling);
}

function HACK_sems_tree_check_parents_HACK(node, doit) {
	var len = node.childNodes.length;
	var i=0;
	for(i=0;i<len;i++) {
		name = node.childNodes.item(i).nodeName;
		if(name == "INPUT") {
			if(node.childNodes.item(i).type == "checkbox") {
				sems_tree_count_true=0;
				sems_tree_count_true_gray=0;
				sems_tree_count_false=0;
				sems_tree_report_children(node.nextSibling) 
				if(sems_tree_count_true > 0 && sems_tree_count_false > 0) {
					node.childNodes.item(i).style.backgroundColor = "gray";
					node.childNodes.item(i).checked = true;
				}
				if(sems_tree_count_true > 0 && sems_tree_count_false == 0) {
					node.childNodes.item(i).checked = true;
					node.childNodes.item(i).style.backgroundColor = "";				
				}
				if(sems_tree_count_false > 0 && sems_tree_count_true == 0) {
					node.childNodes.item(i).checked = false;
					node.childNodes.item(i).style.backgroundColor = "";				
				}						

				if(node.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "DIV" && doit) {
					if(node.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling.nodeName == "A") {
						HACK_sems_tree_check_parents_HACK(node.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling, doit-1);
					}
				}
			}
		}
	}
}

function sems_search_enable_disable_date(dd, tf_year, tf_month, tf_day, tf_more_year, tf_more_month, tf_more_day) {
	if(dd.value == 0) {
		tf_year.disabled = true;
		tf_month.disabled = true;
		tf_day.disabled = true;
		tf_more_year.disabled = true;
		tf_more_month.disabled = true;
		tf_more_day.disabled = true;
		tf_year.value = "";
		tf_month.value = "";
		tf_day.value = "";
		tf_more_year.value = "";
		tf_more_month.value = "";
		tf_more_day.value = "";
	} else if(dd.value >= 1 && dd.value <= 3) {
		tf_year.disabled = false;
		tf_month.disabled = false;
		tf_day.disabled = false;
		tf_more_year.disabled = true;
		tf_more_month.disabled = true;
		tf_more_day.disabled = true;
		tf_more_year.value = "";
		tf_more_month.value = "";
		tf_more_day.value = "";
	} else {
		tf_year.disabled = false;
		tf_month.disabled = false;
		tf_day.disabled = false;
		tf_more_year.disabled = false;					
		tf_more_month.disabled = false;					
		tf_more_day.disabled = false;					
	}
}

