function Site_Utility() { this.loaded = 0; this.staff_access = 0; this.time_entries = []; this.time_errors = 0; // "time-errors" input tag (hidden) created? no/yes } function site_utility_initialize() { with (this) { if (Site.loaded == 1) { loaded = 1; root = "http://www.mns-firstnet.ca/"; } else { window.setTimeout('Utility.Initialize()',10); } } } function site_utility_addfield(n) { var name = (n != "" ? n+"_" : ""); var field; var desc; var errors; var success; var entries; var count; var insert_num = 1; var i = 1; var x = 0; var div; var copy = ""; with (this) { field = $(name+'item_1'); entries = $(name+'item_entries'); count = $(name+'item_count'); if (field && entries && count) { if ($(name+'item_insert')) { insert_num = $(name+'item_insert').options[$(name+'item_insert').selectedIndex].value; } for (z = 0; z < insert_num; z++) { i = 1; x = 0; while (x == 0) { if ($(name+'item_'+i)) { i++; } else { x = i; } } div = document.createElement("div"); div.id = name+"item_"+x; copy = field.innerHTML.replace(/item_errors_1/gi,"item_errors_"+x); copy = copy.replace(/item_calendar_1/gi,"item_calendar_"+x); copy = copy.replace(/#1/gi,"#"+x); div.innerHTML = copy; entries.insertBefore(div,null); if ($(name+'item_errors_'+x)) { $(name+'item_errors_'+x).style.visibility = "hidden"; $(name+'item_errors_'+x).style.display = "none"; } count.innerHTML = x; } } } } function site_utility_number(v) { return (isFinite(v) && parseFloat(v) == v ? (v >= 0 ? 1 : 0) : 0); } function site_utility_round(v,p) { var r = ""; if (v != "") { if (Utility.Number(v) == 1) { r = (v*1).toFixed(p); } } return r; } // field - HTML input object // opt - "hour", "min", "ampm", "complete" // r - return result (0 - no, 1 - yes) // ----------------------------------- function site_utility_time(field,opt,r) { var result = ""; var go = false; var temp = ""; var id = ""; var x = -1; var e; var pieces = []; pieces['hour'] = ""; pieces['min'] = ""; pieces['ampm'] = ""; with (this) { opt = isString(opt); r = isNumber(r); if (opt != "complete") { field = isObject(field); x = field.id.search(/-/gi); id = field.id.substr(0,x); time_entries[id] = 1; } if (time_errors == 0) { e = document.createElement('INPUT'); e.id = "time-errors"; e.type = "hidden"; e.value = ""; field.insertBefore(e,null); time_errors = 1; } else { e = $('time-errors'); if (InputType(e,'hidden') === false) { e.parentNode.removeChild(e); e = document.createElement('INPUT'); e.id = "time-errors"; e.type = "hidden"; e.value = ""; } } switch (opt) { case "hour": if (InputType(field,'text')) { result = Round(field.value,0); if (result != "") { if (result < 1 || result > 12) { result = ""; } else { result = field.value; } } go = true; } break; case "min": if (InputType(field,'text')) { result = Round(field.value,0); if (result != "") { if (result < 0 || result > 59) { result = ""; } else { result = field.value; } } go = true; } break; case "ampm": if (HTMLTag(field,'select')) { temp = field.options[field.selectedIndex].value; if (temp != "am" && temp != "pm") { field.selectedIndex = 0; } go = true; } break; case "complete": for (i in time_entries) { if ($(i+"-hour").tagName == "INPUT" && $(i+"-min").tagName == "INPUT" && $(i+"-ampm").tagName == "SELECT") { pieces['hour'] = Time($(i+'-hour'),"hour",1); pieces['min'] = Time($(i+'-min'),"min",1); pieces['ampm'] = Time($(i+'-ampm'),"ampm",1); temp = pieces['hour']+pieces['min']+pieces['ampm']; if (temp != "") { if (pieces['hour'] == "" || pieces['min'] == "" || pieces['ampm'] == "") { e.value = e.value + "'"+$(i+"-time").title+"' - This entry is incomplete.\n"; } else { $(i+"-time").value = pieces['hour']+":"+pieces['min']+" "+pieces['ampm']; } } } } if (e.value != "") { alert(e.value); } else { if (HTMLTag(field,'form')) { field.submit(); } } break; } if (opt != "ampm" && opt != "complete") { if (go) { if (r == 0) { field.value = result; } else if (r == 1) { return result; } } } } } // Check variable types // --------------------------------------------- function site_utility_is_string(s) { return (typeof(s) == 'string' ? s : ''); } function site_utility_is_number(n) { return (typeof(n) == 'number' ? n : 0); } function site_utility_is_boolean(b) { return (typeof(b) == 'boolean' ? b : false); } function site_utility_is_object(o) { if (typeof(o) != 'object') { o = new Object(); } return o; } function site_utility_is_array(a) { if (typeof(a) == 'object' && (a instanceof Array)) { a = a; } else { a = new Array(); } return a; } // Other // -------------------------------------------- // haystack > ie. ['one','two','three'] function site_utility_in_array(needle,haystack) { var found = false; with (this) { needle = isString(needle); haystack = isArray(haystack); if (haystack.length > 0) { for (i in haystack) { if (haystack[i] == needle) { found = true; } } } } return found; } // Form-related functions // -------------------------------------------- function site_utility_html_tag(field,t) { var result = false; t = Utility.isString(t); t = t.toUpperCase(); field = Utility.isObject(field); if (t != "") { if (field.tagName) { if (field.tagName == t) { result = true; } } } return result; } function site_utility_input_type(field,t) { var result = false; var types = new Array("button","checkbox","file","hidden","image","password","radio","reset","submit","text"); var itype = ""; t = Utility.isString(t); for (var i = 0; i < types.length; i++) { if (types[i] == t) { itype = types[i]; } } if (itype != "" && Utility.HTMLTag(field,'input') === true) { if (field.type == itype) { result = true; } } return result; } // Locations (countries, provinces, towns) // -------------------------------------------- // - Draws from "areas" table // applyTo -> id of field/listing function site_utility_locations(id,applyTo) { var loader_exists = Utility.HTMLTag($('data_loader'),'iframe'); with (this) { if (loader_exists) { id = isString(id); applyTo = isString(applyTo); // Validate: ID (id) if (Number(id) == 1) { if (id < 0) { id = 0; } } else { id = 0; } if (id > 0 && applyTo != "") { $('data_loader').src = "http://www.mns-firstnet.ca/x/utility/locations.php?id="+id+"&a="+applyTo; } } } } function site_utility_location_clear(applyTo,toplevel) { var province = []; province['list'] = $(applyTo+'-province-list'); province['field'] = $(applyTo+'-province-field'); province['hidden'] = $(applyTo+'-province-hidden'); var town = []; town['list'] = $(applyTo+'-town-list'); town['field'] = $(applyTo+'-town-field'); town['hidden'] = $(applyTo+'-town-hidden'); with (this) { if (toplevel == 'country' && province['field'] && province['hidden']) { province['list'].selectedIndex = 0; province['field'].value = ""; province['hidden'].value = ""; } if ((toplevel == 'country' || toplevel == 'province') && town['field'] && town['hidden']) { town['list'].selectedIndex = 0; town['field'].value = ""; town['hidden'].value = ""; } } } // Add functions to class // -------------------------------------------- Site_Utility.prototype.Initialize = site_utility_initialize; Site_Utility.prototype.AddField = site_utility_addfield; Site_Utility.prototype.Number = site_utility_number; Site_Utility.prototype.Round = site_utility_round; Site_Utility.prototype.Time = site_utility_time; Site_Utility.prototype.isString = site_utility_is_string; Site_Utility.prototype.isNumber = site_utility_is_number; Site_Utility.prototype.isBoolean = site_utility_is_boolean; Site_Utility.prototype.isObject = site_utility_is_object; Site_Utility.prototype.isArray = site_utility_is_array; Site_Utility.prototype.inArray = site_utility_in_array; Site_Utility.prototype.HTMLTag = site_utility_html_tag; Site_Utility.prototype.InputType = site_utility_input_type; Site_Utility.prototype.Locations = site_utility_locations; Site_Utility.prototype.LocationClear = site_utility_location_clear; // Initialize class // -------------------------------------------- var Utility = new Site_Utility(); Utility.Initialize();