var dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var monNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var prevCode = 0; prevCode2 = 0;
var arr_validation_objects = new Array();
var arr_validation_types = new Array();
var arr_validation_errors = new Array();

function validation_add (vObj, vType, vErr)
{
    arr_validation_objects[arr_validation_objects.length] = vObj;
    arr_validation_types[arr_validation_types.length] = vType;
    arr_validation_errors[arr_validation_errors.length] = vErr;
 }


function validate (frm)
{     
    _valid = true;
    for(ii = 0; ii < arr_validation_objects.length && _valid; ii++)
    {
        validTypes(arr_validation_types[ii]);
        _vtypes = arr_validation_types[ii].split(",");

        for(j = 0; j < _vtypes.length && _valid; j++)

            eval("_valid = validate_" + _vtypes[j] + "('" + arr_validation_objects[ii] + "',frm )");
        if(!_valid)
        {
            alert(arr_validation_errors[ii]);
            fo = null;
            eval("fo = frm." + arr_validation_objects[ii]);
            if(fo)
                if(!fo.length)
                    fo.focus();
        }
    }
    return _valid;
}

function validTypes (vTypes)
{
    vTypeArr = vTypes.split(",");
    for(a = 0; a < vTypeArr.length; a++)
    {
        if(vTypeArr[a] != "notEmpty" && vTypeArr[a] != "id" && vTypeArr[a] != "alphaNumeric" && vTypeArr[a] != "wholeNumber" && vTypeArr[a] != "decimalNumber" && vTypeArr[a] != "email"  && vTypeArr[a] != "multiemail")
        {
            alert("Unknown validation type '" + vTypeArr[a] + "'");
            return false;
        }
    }
    return true;
}

function validate_date (objName,frm)
{
    _d = "", _m = "", _y = "";
    eval("_d = frm." + objName + "Day.value");
    eval("_m = frm." + objName + "Month.value");
    eval("_y = frm." + objName + "Year.value");

    if( (_d == null || _d == undefined) && (_m == null || _m == undefined) && (_y == null || _y == undefined) )
        return true;
    else
        eval("frm." + objName + "Day.focus()");
    return validSplitDate(_d, _m, _y);
}

function validate_notEmpty (objName,frm)
{
    v = null;
    eval("v = frm." + objName );
    if(v.length)
    {
        for(i = 0; i < v.length; i++)
        {
            if(v[i].value == "")
            {
                v[i].focus();
                return false;
            }
        }
    }
    else
    {
        if(v.value != null && v.value != undefined && v.value != '')
            return true;
        else{
            v.focus();
            return false;
            }
    }
    return true;
}

function validate_id (objName,frm)
{
    n = "";
    eval("n = frm." + objName + ".value");
	if(n != null && n.length > 0)
    {
		var charset1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		var charset2 = "0123456789-_";
		ch = n.charAt(0);
		if(charset1.indexOf(ch) < 0) return false;
		for(i = 1; i < n.length; i++)
        {
			ch = n.charAt(i);
			if((charset1 + charset2).indexOf(ch) < 0)
				return false;
        }
    }
	return true;
}

function validate_alphaNumeric (objName,frm)
{
    n = "";
    eval("n = frm." + objName + ".value");
	if(n != null && n.length > 0)
    {
		var charset1 = ".0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		ch = n.charAt(0);
		if(charset1.indexOf(ch) < 0) return false;
		for(i = 1; i < n.length; i++)
        {
			ch = n.charAt(i);
			if(charset1.indexOf(ch) < 0)
				return false;
        }
    }
	return true;
}

function validate_wholeNumber(objName,frm)
{
    n = "";
    eval("n = frm." + objName + ".value");
    if(n != null && n.length > 0)
    {
        if(isNaN(n)) return false;
        if(n.indexOf('.') >= 0) return false;
        if(n.indexOf('e') >= 0) return false;
        if(n.indexOf('E') >= 0) return false;
    }
	return true;
}

function validate_decimalNumber(objName,frm)
{
    n = "";
    eval("n = frm." + objName + ".value");
    if(n != null && n.length > 0)
    {
        if(isNaN(n)) return false;
        if(n.indexOf('.') < 0) return false;
    }
	return true;
}

function validate_email(objName,frm)
{
    _email = "";
    eval("_email = frm." + objName + ".value");
	if(_email != null || _email.length > 0)
	{
        if(_email.length<6) return false;
        if(_email.indexOf('@')<0)
            return false;
        else if(_email.indexOf('@', _email.indexOf('@')+1)>=0)
            return false;
        if(_email.indexOf('.')<0) return false;
        if(_email.indexOf('..')>=0) return false;
        if(_email.indexOf('.@')>=0) return false;
        if(_email.indexOf('@.')>=0) return false;
        if(_email.length > 0)
        {
            var charset1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.@";
            for(i = 0; i < _email.length; i++)
            {
                ch = _email.charAt(i);
                if(charset1.indexOf(ch) < 0)
                    return false;
            }
        }
    }
	return true;
}
function  checkEmail(_email){
    if(_email.length<6) return false;
        if(_email.indexOf('@')<0)
            return false;
        else if(_email.indexOf('@', _email.indexOf('@')+1)>=0)
            return false;
        if(_email.indexOf('.')<0) return false;
        if(_email.indexOf('..')>=0) return false;
        if(_email.indexOf('.@')>=0) return false;
        if(_email.indexOf('@.')>=0) return false;
        if(_email.length > 0)
        {
            var charset1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.@";
            for(i = 0; i < _email.length; i++)
            {
                ch = _email.charAt(i);
                if(charset1.indexOf(ch) < 0)
                    return false;
            }
        }
     return true;
 }

function validate_multiemail(objName,frm)
{
    _email = "";
    eval("_email = frm." + objName + ".value");
    if(_email != null || _email.length > 0)
    {
        EmailArr = _email.split(";");
        for(j=0;j<EmailArr.length;j++)
        {
            if(EmailArr[j].length > 0 && !checkEmail(EmailArr[j]))
                return false;
        }
    }
	return true;
}

function clearForm(frm)
{
	for(i=0; i < frm.elements.length; i++)
    {
		obj = frm.elements[i];
		if(obj.type == "text" || obj.type == "textarea" || obj.type == "file")
			obj.value = "";
		else if(obj.type == "checkbox")
			obj.checked = false;
		else if(obj.type == "radio")
        {
			var z = 0;
			eval("z = " + frm.name + "." + obj.name + ".length");
			if(z > 1)
            {
				eval("" + frm.name + "." + obj.name + "[0].checked = true");
				for(j = 1; j < z; j++)
					eval("" + frm.name + "." + obj.name + "[" + j + "].checked = false");
            }
        }
		else if(obj.type == "select-one" || obj.type == "select-multiple")
			obj.selectedIndex = 0;
    }
}
function getDate(d, m, y)
{
	if(d == "" || m == "" || y == "") return null;
	if(parseInt(d) == NaN || parseInt(m) == NaN || parseInt(y) == NaN) return null;
	return new Date(parseInt(y), m, d);
}
function dateDiff(d1, d2)
{
	if(d1 == null || d2 == null) return -1;
	return (d1.getTime() - d2.getTime());
}
function getDaysInMonth(smon, syear)
{
	if(smon == "" || syear == "") return -1;
	if(parseInt(smon) == NaN || parseInt(syear) == NaN) return -1;
	if(smon < 0 || smon > 11) return -1;
	if(smon == 1) return 28;
	else if(smon == 0 || smon == 2 || smon == 4 || smon == 6 || smon == 7 || smon == 9 || smon == 11) return 31;
	else return 30;
}
function validSplitDate(sday, smon, syear)
{
	if(sday == "" || smon == "" || syear == "") return false;
	if(parseInt(sday) == NaN || parseInt(smon) == NaN || parseInt(syear) == NaN) return false;
	if(sday > getDaysInMonth(smon, parseInt(syear))) return false;
	return true;
}
function getDateString()
{
	var today = new Date();
	return dayNames[today.getDay()] + ", " + today.getDate() + " " + monNames[today.getMonth()] + ", " + today.getYear();
}
function getTimeString()
{
	var today = new Date();
	return today.getHours() + ":" + today.getMinutes() + " GMT" + getGMTOffset(today);
}
function getGMTOffset(d)
{
	return (d.getTimezoneOffset()<0?"+":"-") + formatTime(d.getTimezoneOffset());
}
function formatTime(m)
{
	m = Math.abs(m);
	h = m/60;
	m -= (h * 60);
	while(h>=24)
		{ h -= 24; }
	h = "" + h;
	for(i=0; i<2-h.length; i++)
		{ h = "0" + h; }
	m = "" + m;
	for(i=0; i<2-m.length; i++)
		{ m = "0" + m; }
	return h + ":" + m;
}
function changeCSS(obj, cssName)
{
	obj.className = cssName;
}
function tabOver(obj)
	{
	obj.className = 'tab_Off_Over';
	}
function tabOut(obj)
	{
	obj.className = 'tab_Off';
	}
function btnOver(obj)
	{
	obj.className = 'btn_Over';
	}
function btnOut(obj)
	{
	obj.className = 'btn';
	}
function btnOver2(obj)
	{
	obj.className = 'btn_enable_over';
	}
function btnOut2(obj)
	{
	obj.className = 'btn_enable';
	}
// LISTING PAGE
function goToDetail(rid, mode,frm)
{
    frm.task.value = "detail";
    frm.recId.value = rid;
    frm.mode.value = mode;
	frm.submit();
}
function goToList(frm)
{
    frm.task.value = "list";
	frm.submit();
}

function deleteconfirm(frm)
{
        frm.deleteConfirmed.value = "true";
        frm.mode.value = "delete";
        frm.submit();
    
}


function goToDelete(rid,frm)
{
	toggle(false,frm);
	if(confirm(js_delete_confirm))
    {
        frm.recId.value = rid;
        frm.mode.value = "delete";
        frm.submit();
    }
}
function getSelectedIDs(frm)
{
	var s = "";
	if(frm.ids)
	{
	    if(frm.ids.length)
	    {
            for(i = 0; i < frm.ids.length; i++)
            {
                if(frm.ids[i].checked)
                    s += (s == "" ? "" : ",") + frm.ids[i].value;
            }
	    }
	    else if(frm.ids.checked)
	        s = frm.ids.value;
	}
	return s;
}
function doAct(frm)
	{
	var sids = getSelectedIDs(frm);
	if(sids != "")
    {
        eval("confirm_msg = js_options_confirm" + frm.act.selectedIndex + ";");
		if(confirm(confirm_msg))
		{
		    frm.mode.value =frm.act.value;
		    frm.submit();
        }
    }
	else
	{
	    eval("alert_msg = js_options_noitem" + frm.act.selectedIndex + ";");
		alert(alert_msg);
    }
}
function toggle(v,frm)
{
    if(frm.ids)
    {
        if(frm.ids.length)
        {
		    for(i = 0; i < frm.ids.length; i++)
			{
			    if(frm.ids[i]) frm.ids[i].checked = v;
			}
        }
        else
            frm.ids.checked = v;
    }
}
function checkMe(obj)
{
	if(!obj.checked)
		obj.form.controller.checked = false;
}
// DETAIL PAGE
function doAdd(frm)
{
	if(frm.addBtn)
    {
        frm.recId.value = "";
        frm.mode.value = 'add';
        frm.submit();
    }
}
function doEdit(frm)
{
	if(frm.editBtn)
    {
        frm.mode.value = 'edit';
        frm.submit();
    }
}
function doSave(frm)
{
	if(frm.saveBtn)
    {
        if(checkForm(frm))
        {
            if(frm.mode.value != 'edit')
            frm.recId.value = "";
            frm.mode.value = 'save';
            frm.submit();
        }
    }
}

function doDetailCancel(frm)
{
	if(confirm(js_detail_cancel_confirm))
    {
        frm.recId.value = "";
        frm.mode.value = '';
        frm.task.value = 'list';
        frm.submit();
    }
}
function doDelete(frm)
{
	if(frm.deleteBtn)
    {
		if(jsFound)
        {
			if(confirm(js_delete_confirm))
            {
				frm.mode.value = 'Delete';
				frm.task.value = 'list';
				frm.submit();
            }
        }
		else
			alert(js_delete_noitem);
    }
}
function openWin(p, w, h)
{
    if(p != "")
	{
		w = (w <= 0 ? 300 : w);
		h = (h <= 0 ? 300 : h);
		var x = (screen.width - w)/2;
		var y = (screen.height - h)/2;
		properties = "width=" + w + ",height=" + h + ",left=" + x + ",top=" + y + ",directories=0,location=0,menubar=0,resizable=1,scrollbars=1,status=0,titlebar=0,toolbar=0";
		var win = window.open(p, "", properties);
		return win;
	}
}
function trim(s)
{
	if(s != null && s != '')
    {
		while(s.charAt(0) == ' ')
        {
			s = s.substring(1, s.length);
        }
		while(s.charAt(s.length - 1) == ' ')
        {
			s = s.substring(0, s.length - 1);
        }
    }
	return s;
}
