<!DOCTYPE html>
<html lang="en">
<head>
<script type='text/javascript'>if(!_messages)var _messages = {};_messages["psx.jshtml.teachers.pw.password"] = "Password:";_messages["psx.jshtml.teachers.pw.username"] = "Username:";if (typeof pss_text != 'function') { function pss_text(key, params, returnKeyIfNotFound) { if (_messages[key] === undefined) { if (returnKeyIfNotFound !== undefined && returnKeyIfNotFound === true) {return key;} else {return 'String key was not found!'; }}if(params == null || params.length == 0) {return _messages[key]; }else { msg = _messages[key]; for ( i = 0; i < params.length; i++) {token = "{"+i+"}"; msg = msg.replace(token, params[i]); }return msg;} } }</script>
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=1" />
<link rel="apple-touch-icon" href="/images/mobile/ps6-logo-touch-icon.png" />
<title>PowerTeacher</title><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<style>
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { display: none !important; }
</style>
<style id="psDialogHideTillReady">
.dialog, .dialogC, .dialogM, .dialogR, .dialogF, .dialogDiv, .dialogDivC, .dialogDivM, .replaceNext { visibility: hidden;}
</style>
<link media="screen" rel="stylesheet" href="/images/css/customization.css"/>
<!-- ServerInstanceId: 410 -->
<script type='text/javascript'>if(!_messages)var _messages = {};_messages["psx.js.admin_javascript.validate_date.month_1"] = "Month ";_messages["psx.js.admin_javascript.validate_date._doesnt_have_31_days"] = " doesn't have 31 days.";_messages["psx.js.admin_javascript.validate_date._doesnt_have_"] = " doesn't have ";_messages["psx.js.admin_javascript.validate_date.month_must_be_between_1_and_12"] = "Month must be between 1 and 12.";_messages["psx.js.admin_javascript.validate_date.date_format_must_be"] = "Date format must be ({0}).";_messages["psx.js.admin_javascript.validate_date.day_must_be_between_1_and_31"] = "Day must be between 1 and 31.";_messages["psx.js.admin_javascript.validate_date._days"] = " days.";_messages["psx.js.admin_javascript.validate_date.february_"] = "February ";if (typeof pss_text != 'function') { function pss_text(key, params, returnKeyIfNotFound) { if (_messages[key] === undefined) { if (returnKeyIfNotFound !== undefined && returnKeyIfNotFound === true) {return key;} else {return 'String key was not found!'; }}if(params == null || params.length == 0) {return _messages[key]; }else { msg = _messages[key]; for ( i = 0; i < params.length; i++) {token = "{"+i+"}"; msg = msg.replace(token, params[i]); }return msg;} } }</script>
<script type='text/javascript'>if(!_messages)var _messages = {};_messages["psx.common.daynamesmin_tue"] = "Tu";_messages["psx.common.daynamesmin_thu"] = "Th";_messages["psx.common.daynamesmin_sun"] = "Su";_messages["psx.common.daynamesmin_sat"] = "Sa";_messages["psx.common.daynamesshort_fri"] = "Fri";_messages["psx.common.mydata_button_title"] = "MyData Button";_messages["psx.common.legend"] = "Legend ";_messages["psx.common.psweblink"] = "PowerSchool.com";_messages["psx.common.daynamesmin_wed"] = "We";_messages["psx.common.term"] = "Term:";_messages["psx.common.daynamesshort_mon"] = "Mon";_messages["psx.common.daynames_fri"] = "Friday";_messages["psx.common.daynamesletter_fri"] = "F";_messages["psx.common.school"] = "School:";_messages["psx.common.monthnames_sep"] = "September";_messages["psx.common.daynames_sun"] = "Sunday";_messages["psx.common.daynames_sat"] = "Saturday";_messages["psx.common.daynamesletter_sat"] = "S";_messages["psx.common.monthnames_oct"] = "October";_messages["psx.common.daynamesletter_sun"] = "S";_messages["psx.common.monthnames_nov"] = "November";_messages["psx.common.scheduling_year"] = "Scheduling Year";_messages["psx.common.monthnames_mar"] = "March";_messages["psx.common.monthnames_may"] = "May";_messages["psx.common.capital_email"] = "Email";_messages["psx.common.daynames_mon"] = "Monday";_messages["psx.common.welcome"] = "Welcome,";_messages["psx.common.data_dictionary"] = "Data Dictionary";_messages["psx.common.monthnames_jul"] = "July";_messages["psx.common.monthnames_jun"] = "June";_messages["psx.common.daynamesmin_fri"] = "Fr";_messages["psx.common.daynamesletter_mon"] = "M";_messages["psx.common.monthnames_jan"] = "January";_messages["psx.common.system_help_title"] = "System Help";_messages["psx.common.state_reporting_help_title"] = "State Reporting Help";_messages["psx.common.daynamesmin_mon"] = "Mo";_messages["psx.common.district"] = "District Office";_messages["psx.common.monthnames_feb"] = "February";_messages["psx.common.daynames_wed"] = "Wednesday";_messages["psx.common.monthnames_dec"] = "December";_messages["psx.common.daynamesletter_tue"] = "T";_messages["psx.common.daynamesletter_thu"] = "H";_messages["psx.common.daynamesletter_wed"] = "W";_messages["psx.common.daynames_tue"] = "Tuesday";_messages["psx.common.monthnames_aug"] = "August";_messages["psx.common.monthnames_apr"] = "April";_messages["psx.common.daynames_thu"] = "Thursday";_messages["psx.common.system_help"] = "System Help";_messages["psx.common.school_title"] = "Change School";_messages["psx.common.data_dictionary_title"] = "Data Dictionary";_messages["psx.common.monthnamesshort_dec"] = "Dec";_messages["psx.common.daynamesshort_tue"] = "Tue";_messages["psx.common.daynamesshort_thu"] = "Thu";_messages["psx.common.term_title"] = "Change Term";_messages["psx.common.daynamesshort_sun"] = "Sun";_messages["psx.common.daynamesshort_sat"] = "Sat";_messages["psx.common.monthnamesshort_feb"] = "Feb";_messages["psx.common.powerschool"] = "PowerSchool";_messages["psx.common.daynamesshort_wed"] = "Wed";_messages["psx.common.monthnamesshort_aug"] = "Aug";_messages["psx.common.monthnamesshort_apr"] = "Apr";_messages["psx.common.help_title"] = "Help";_messages["psx.common.provincial_reporting_help_title"] = "Provincial Reporting Help";_messages["psx.common.district_abbreviation"] = "District";_messages["psx.common.sign_out"] = "Sign Out";_messages["psx.common.email"] = "email";_messages["psx.common.monthnamesshort_sep"] = "Sep";_messages["psx.common.sign_in_title"] = "Sign In";_messages["psx.common.monthnamesshort_mar"] = "Mar";_messages["psx.common.monthnamesshort_may"] = "May";_messages["psx.common.monthnamesshort_oct"] = "Oct";_messages["psx.common.loading"] = "Loading...";_messages["psx.common.monthnamesshort_nov"] = "Nov";_messages["psx.common.general.problem"] = "Unable to process the request. Please contact your system administrator to review logs.";_messages["psx.common.print_title"] = "Print this page";_messages["psx.common.monthnamesshort_jul"] = "Jul";_messages["psx.common.monthnamesshort_jun"] = "Jun";_messages["psx.common.monthnamesshort_jan"] = "Jan";_messages["psx.common.changes_recorded"] = "The changes have been recorded.";_messages["psx.common.sign_out_title"] = "Sign Out";_messages["psx.common.state_reporting_help"] = "State Reporting Help";_messages["psx.common.provincial_reporting_help"] = "Provincial Reporting Help";_messages["psx.common.sign_in"] = "Sign In";_messages["psx.common.copyright"] = "Copyright © 2005-2019 PowerSchool Group LLC and/or its affiliate(s). All rights reserved.<br/>All trademarks are either owned or licensed by PowerSchool Group LLC and/or its affiliates.";_messages["psx.common.help"] = "Help";_messages["psx.common.translate_page_title"] = "Localize Page";if (typeof pss_text != 'function') { function pss_text(key, params, returnKeyIfNotFound) { if (_messages[key] === undefined) { if (returnKeyIfNotFound !== undefined && returnKeyIfNotFound === true) {return key;} else {return 'String key was not found!'; }}if(params == null || params.length == 0) {return _messages[key]; }else { msg = _messages[key]; for ( i = 0; i < params.length; i++) {token = "{"+i+"}"; msg = msg.replace(token, params[i]); }return msg;} } }</script>
<script type='text/javascript'>if(!_messages)var _messages = {};_messages["psx.js.scripts.psbehaviors.closetext"] = "Done";_messages["psx.js.scripts.psbehaviors.off"] = "Off";_messages["psx.js.scripts.psbehaviors.prevtext"] = "Prev";_messages["psx.js.scripts.psbehaviors.currenttext"] = "Today";_messages["psx.js.scripts.psbehaviors.add_issue_comment"] = "Add Issue Comment";_messages["psx.js.scripts.psbehaviors.yes"] = "Yes";_messages["psx.js.scripts.psbehaviors.about_n_characters_left"] = "Approximately {0} characters left";_messages["psx.js.scripts.psbehaviors.on"] = "On";_messages["psx.js.scripts.psbehaviors.or"] = "or";_messages["psx.js.scripts.psbehaviors.no"] = "No";_messages["psx.js.scripts.psbehaviors.noaccess"] = "No Field Access";_messages["psx.js.scripts.psbehaviors.time_entry"] = "Time Entry";_messages["psx.js.scripts.psbehaviors.hide_header"] = "Hide Header";_messages["psx.js.scripts.psbehaviors.added"] = "Added";_messages["psx.js.scripts.psbehaviors.change_date"] = "Change Date";_messages["psx.js.scripts.psbehaviors.hide_main_menu"] = "Hide Main Menu";_messages["psx.js.scripts.psbehaviors.wizprevious"] = "Previous";_messages["psx.js.scripts.psbehaviors.recording_start"] = "Start Recording";_messages["psx.js.scripts.psbehaviors.recording_stop"] = "Finish Recording";_messages["psx.js.scripts.psbehaviors.confirm_delete"] = "Confirm Delete";_messages["psx.js.scripts.psbehaviors.icons"] = "Icons";_messages["psx.js.scripts.psbehaviors.cancel"] = "Cancel";_messages["psx.js.scripts.psbehaviors.time_entry_x"] = "Time Entry ({0})";_messages["psx.js.scripts.psbehaviors.recording_cancel"] = "Cancel Recording";_messages["psx.js.scripts.psbehaviors.show_header"] = "Show Header";_messages["psx.js.scripts.psbehaviors.interval_thirty"] = "30 minute interval";_messages["psx.js.scripts.psbehaviors.restore_selections_school_and_term"] = "Restore Selection(s), School and Term";_messages["psx.js.scripts.psbehaviors.interval_hour"] = "hour only interval";_messages["psx.js.scripts.psbehaviors.time_icon"] = "Time Entry Icon";_messages["psx.js.scripts.psbehaviors.deleted"] = "Deleted";_messages["psx.js.scripts.psbehaviors.date_entry"] = "Date Entry";_messages["psx.js.scripts.psbehaviors.nexttext"] = "Next";_messages["psx.js.scripts.psbehaviors.show_main_menu"] = "Show Main Menu";_messages["psx.js.scripts.psbehaviors.report_an_issue"] = "Report an Issue";_messages["psx.js.scripts.psbehaviors.legend"] = "Legend";_messages["psx.js.scripts.psbehaviors.no_match_found"] = "No match found";_messages["psx.js.scripts.psbehaviors.reload_last_page"] = "Reload Last Page";_messages["psx.js.scripts.psbehaviors.would_you_like_to_reload_the_last_page_you_were_viewing"] = "Your session timed out due to inactivity. Would you like to restore your previous session and reload the last page you were viewing?";_messages["psx.js.scripts.psbehaviors.n_characters_left"] = "{0} characters left";_messages["psx.js.scripts.psbehaviors.main_navigation"] = "Main Navigation";_messages["psx.js.scripts.psbehaviors.deleted_xx"] = "Deleted: {0}";_messages["psx.js.scripts.psbehaviors.wizstep"] = "Step";_messages["psx.js.scripts.psbehaviors.confirmbanner.schoolstaff_removed"] = "The previously selected staff member was successfully removed from this school.";_messages["psx.js.scripts.psbehaviors.required"] = "Required Field";_messages["psx.js.scripts.psbehaviors.delete"] = "Delete";_messages["psx.js.scripts.psbehaviors.confirm"] = "Confirm ";_messages["psx.js.scripts.psbehaviors.added_xx"] = "Added: {0}";_messages["psx.js.scripts.psbehaviors.wiznext"] = "Next";_messages["psx.js.scripts.psbehaviors.interval_five"] = "5 minute interval";_messages["psx.js.scripts.psbehaviors.asterisk"] = "An asterisk indicates that classes for the term are hidden from parents/students in the PowerSchool Student and Parent portal and PowerSchool Mobile app.";_messages["psx.js.scripts.psbehaviors.calendar_icon"] = "Date Entry Icon";_messages["psx.js.scripts.psbehaviors.enrollment_alert"] = "The student you are attempting to enroll has an existing record in the district. Click OK, then proceed to transfer the student to your school if necessary.";_messages["psx.js.scripts.psbehaviors.would_you_like_to_restore_your_selections_school_and_term"] = "Your session timed out due to inactivity. Would you like to restore your previous session and return to the last used school, term, student and/or teacher selection?";_messages["psx.js.scripts.psbehaviors.interval_fifteen"] = "15 minute interval";_messages["psx.js.scripts.psbehaviors.send_report"] = "Report Issue";if (typeof pss_text != 'function') { function pss_text(key, params, returnKeyIfNotFound) { if (_messages[key] === undefined) { if (returnKeyIfNotFound !== undefined && returnKeyIfNotFound === true) {return key;} else {return 'String key was not found!'; }}if(params == null || params.length == 0) {return _messages[key]; }else { msg = _messages[key]; for ( i = 0; i < params.length; i++) {token = "{"+i+"}"; msg = msg.replace(token, params[i]); }return msg;} } }</script>
<script src="/scripts/jquery-2.1.3.min.js"></script>
<script src="/scripts/jquery-migrate-1.2.1.min.js"></script>
<script src="/scripts/jquery-migrate-ps.js"></script>
<script src="/scripts/jquery-ui-1.11.2.custom.min.js"></script>
<script src="/scripts/requirejs/require.js"></script>
<!--[if lt IE 7]><script>jQuery('html').data('ltie', 7.addClass('ltie7');;</script><![endif]-->
<!--[if lt IE 8]<script>jQuery('html').data('ltie', 8).addClass('ltie8');;</script><![endif]-->
<!--[if lt IE 9]><script>jQuery('html').data('ltie', 9).addClass('ltie9');</script><![endif]-->
<script type="text/javascript" >
var feedbackEnabled = false;
var recordingActivated = false;
</script>
<script src="/scripts/psDialog.js"></script>
<script type="text/javascript">
/**
* Need to configure require js before psbehaviors.
*/
require.config({
waitSeconds: 0,
baseUrl: "/scripts/",
paths: {
'handlebars': 'handlebars/require-handlebars.1.0.0.rc3',
'json2': 'handlebars/json2',
'hbs': 'hbs/0.4.0/hbs',
'underscore': 'underscore/underscore-'+'min'+'-1.8.3',
'backbone': 'backbone/backbone-'+'min'+'-0.9.10',
'jquery.cookie': 'jquery.cookie',
'psDateValidate': 'psDateValidate',
'psDateWidget': 'psDateWidget',
'psDirtyStateController': 'psDirtyStateController',
'psFormValidate': 'psFormValidate',
'psNumWidget': 'psNumWidget',
'psReloader/psReloader-min': 'psReloader/psReloader-min',
'psRequired': 'psRequired',
'psTextWidget': 'psTextWidget',
'psValidationFunctions': 'psValidationFunctions',
'angular': 'lib/angular/angular.min',
'angular-cookies': 'lib/angular/angular-cookies.min',
'angular-route': 'lib/angular/angular-route.min',
'angular-sanitize': 'lib/angular/angular-sanitize.min',
'angular-translate': 'lib/angular/angular-translate.min',
'angular-messages': 'lib/angular/angular-messages.min',
'angular-aria': 'lib/angular/angular-aria.min',
'angular-resource': 'lib/angular/angular-resource.min',
'encoding': 'lib/textencoder/encoding',
'filesaver': 'lib/filesaver/FileSaver.min'
},
hbs: {
disableI18n: true
},
shim: {
'underscore': {
exports: '_'
},
'backbone': {
exports: 'Backbone',
deps: ['underscore']
},
'angular': {
exports: 'angular'
},
'angular-translate':{
deps: ['angular']
},
'angular-sanitize':{
deps: ['angular']
},
'angular-route':{
deps: ['angular']
},
'angular-cookies':{
deps: ['angular']
},
'angular-messages':{
deps: ['angular']
},
'angular-aria':{
deps: ['angular']
},
'angular-resource': {
deps: ['angular']
}
},
map: {
'*': {
'Handlebars': 'handlebars'
}
},
priority: [
'angular'
] });
define('jquery', function () {
return jQuery;
});
define('jquery-ui', ['jquery'], function($) {
return $.ui;
});
</script>
<script src="/scripts/psbehaviors.js"></script>
<script src="/scripts/helpLinksMenu.js"></script>
<script src="/scripts/keep-alive.js"></script>
<!-- Frame type=none -->
<script type="text/javascript">
/**
* Set the page's locale via a request_locale URL parameter. If there is already a URL parameter by
* this name, then substitute it with the passed-in locale. NOTE: This function will actually cause the page
* to be re-submitted with the new locale, so it really should not be used with pages submitted via POST
* requests (if there are any, which I hope there are not).
* @param locale the locale to set (e.g. en_US)
*/
function setPageLocale (locale) {
var c=String (window.location);
var rlpos = c.indexOf("request_locale=");
var afterPart = "";
if (rlpos > 0) {
var afterBegin = c.indexOf("&", rlpos);
if (afterBegin > 0) {
afterPart = c.substring(afterBegin);
}
c = c.substring(0, rlpos-1);
}
var s=(c.indexOf('?') > 0 ? '&' : '?');
var np = c + s + 'request_locale=' + locale + afterPart;
window.location = np;
}
function get_locale() {
return "en_US";
}
function checkForPTMURL() {
if ($j && $j.cookie && $j.cookie('PTM_URL')!=null
&& window.location!=$j.cookie('PTM_URL')
&& !window.location.href.match("/teachers/pw.html") ) {
var path = $j.cookie('PTM_URL');
$j.cookie('PTM_URL',null, { path: '/', expires: -1 });
window.location.replace(path);
}
}
if(typeof pss_text!='function'){
function pss_text(key, params, returnKeyIfNotFound) {
if (_messages[key] === undefined)
{
if (returnKeyIfNotFound !== undefined && returnKeyIfNotFound === true) {
return key;
} else {
return "String key was not found!";
}
}
if(params == null || params.length == 0)
{
return _messages[key];
}
else
{
msg = _messages[key];
for ( i = 0; i < params.length; i++)
{
token = "{"+i+"}";
msg = msg.replace(token, params[i]);
}
return msg;
}
}
}
function get_localized_date(d, fmt) {
if (fmt === "mmdd") return ("" + (d.getMonth()+1) + "/" + d.getDate() + "");
return ("" + (d.getMonth()+1) + "/" + d.getDate() + "/" + d.getFullYear() + "");
}
// Format is a formatting object
// number is number object
function formatNumber(format, number)
{
var ds = format.ds; // decimal separator
var result = "";
if (isNaN(number) == true)
{
return number
}
else
{
result = number.toString();
result = result.replace(".",ds);
return result;
}
}
function localizeNumber(number)
{
return formatNumber(get_numeric_format(), number);
}
function deLocalizeNumber(number) {
return removeNumberFormat(get_numeric_format(), number);
}
function removeNumberFormat(format, number) {
// IE does not like instantiating RegExp objects with empty values, so we have to
// check for valid values in the grouping separator before using it in a RegExp.
var gsNotBlank = (format.gs == "." || format.gs == "," || format.gs == " ");
number = number.toString();
// We also want to check that only valid characters are present.
var regexString = "^" + format.regex + "$";
var validNumber = new RegExp(regexString, "g");
if (number != "" && number.match(validNumber) != null) {
if (gsNotBlank) {
var gs = new RegExp("\\"+format.gs, "g");
number = number.replace(gs, "")
}
var ds = new RegExp("\\"+format.ds, "g"); //The decimal separator is not expected to be empty
number = parseFloat(number.replace(ds, "."));
} else {
return null;
}
return (isNaN(number)) ? null : number;
}
function localizeCurrency(number)
{
return formatNumber(get_currency_format(), number);
}
<!-- This function return a json object with numeric formatting info -->
function get_numeric_format() {
return { format: '#,##0.#########',
size: '3',
gs: ',',
ds: '.',
regex: '([-]?(([0-9]{1,3}(,[0-9]{3})*(\\.[0-9]+)?|\\.[0-9]+)|([0-9]*(\\.[0-9]+)?)))' };
;
}
<!-- This function return a json object with currency formating info -->
function get_currency_format() {
return { format: '#,##0.00',
size: '3',
gs: ',',
ds: '.',
regex: '([-]?(([0-9]{1,3}(,[0-9]{3})*(\\.[0-9]+)?|\\.[0-9]+)|([0-9]*(\\.[0-9]+)?)))' };
;
}
<!-- This function return date format in machine readable form -->
function get_short_date_format() {
return "M/d/yy";
}
<!-- This function return date format in machine readable form -->
function get_date_format() {
return "MM/dd/yyyy";
}
<!-- This function return date format in human readable form -->
function get_date_text(){
return "MM/DD/YYYY";
}
<!-- This function return date format in human readable form -->
function get_short_date_text(){
return "MM/DD/YY";
}
<!-- This function return time format in machine readable form without seconds-->
function get_HHMMTime_format() {
return "hh:mm a";
}
<!-- This function return time format in machine readable form with seconds-->
function get_HHMMSSTime_format() {
return "hh:mm:ss a";
}
<!-- This function return ante/post meridian in machine readable form -->
function get_AMPM(ampm) {
if(ampm == "am")
return "AM";
else
return "PM";
}
if(!_messages) var _messages = {};
/**
* Get texts from the server based on a prefix.
* @param prefix the prefix to use
* @param onlyIfNotPresent (optional) if passed, check to see if message is present yet; only fetch the
* texts from the server if this key is not present
*/
function pss_get_texts(prefix, onlyIfNotPresent) {
if (onlyIfNotPresent && _messages[onlyIfNotPresent]) return;
jQuery.ajax ({async: false,
url:'/getMessages.action',
data:{prefix: prefix, locale: get_locale()},
dataType:'json',
success: function (msgs) {
jQuery.each(msgs, function (key, value) {
_messages[key] = value;
});
}
});
}
function alertwindow (directory, alerttype, frn) {
w = window.open("/"+directory+"/alerts/"+alerttype+"alert.html?frn="+frn, "alert", "toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=350,height=250");
}
function helpwindow (url) {
w = window.open(url, "help", "toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=570,height=500");
}
function helptext (text) {
window.status = text;
return true;
}
function openSpecialWeighting(opener) {
var path = "";
if (opener == "admin"){
path = "/admin/students/specialweighting.html";
}else if (opener == "parent"){
path = "/guardian/specialweighting.html";
}else if (opener == "teacher"){
path = "/teachers/studentpages/specialweighting.html";
}
window.open(path, 'Weighting', 'width=500,height=425,menu=no,toolbar=no,location=no,scrollbars=yes');
}
function openScaleTranslation() {
var path="/admin/stdconversiontable/scaletranslation.html";
window.open(path, 'Scale_Translation', 'width=500,height=425,menu=no,toolbar=no,location=no,scrollbars=yes,resizable=1');
}
function alertcommentwindow(studentid, sectionid, asmtid) {
window.open("scorecomment.html?ac=scorecomment&studentid=" + studentid + "§ionid=" + sectionid + "&asmtid=" + asmtid, "Score", "toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=480,height=480");
}
function feedbackwindow () {
window.showModalDialog('/getFeedback.action','send_feedback','dialogWidth:640px; dialogHeight:500px; scroll:no;');
}
function $(id) {
return document.getElementById(id);
}
//line breaks are 2 chracters on the backend (\r\n)
//IE treats them as 2 already but FF and Safari treat them
//as one (\n only). This will ensure all browsers are counting line
//breaks as 2
// This function is duplicated in muliple locations. Updating one requires
// updating all of them. They are located under
// web_root/wildcards/commonscripts.txt
// web_root/scripts/commonscripts.js
// sis/web/srv/views/psxdecorators/commonscripts.ftl
function realLength(str) {
if (!str)
return 0;
//replace \r with empty string (this will only be matched on IE)
var temp = str.replace(/\r/g, "");
//find all occurances of newlines (\n)
var lns = temp.match(/\n/g);
if (lns)
//if we had any newlines, do this hokie pokie to consistently count them as two
return temp.length + lns.length;
else
//else no newlines, we can just use the strings actual length
return str.length;
}
// trim function that truncates off the end of stringCopy until the string is less than
// maxlimit. Treats any new line (\n or \r\n) as two characters when trimmed
// off the end.
// stringCount should be calcuated by the function realLength. The value is either the
// length of stringCopy in chracters if isUnicode == false, or the length in bytes
// if isUnicode == true.
// This function is duplicated in muliple locations. Updating one requires
// updating all of them. They are located under
// web_root/wildcards/commonscripts.txt
// web_root/scripts/commonscripts.js
// sis/web/srv/views/psxdecorators/commonscripts.ftl
function trimToSize (stringCopy, stringCount, maxlimit, isUnicode) {
var last_char;
var secondToLast_char;
var curval = stringCopy;
var unicodeEscaped;
var unicodeCharLength;
for (; stringCount > maxlimit; ) {
//get the last char in the string
last_char = curval.charAt(curval.length-1);
if (last_char == '\n') {
//check if the second to last is a \r and yank that too
secondToLast_char = curval.charAt(curval.length-2);
if (secondToLast_char == '\r') {
curval = curval.substring(0, curval.length-2);
}
else {
curval = curval.substring(0, curval.length-1);
}
//line breaks need to be handled as 2 characters
stringCount = stringCount - 2;
}
else {
//character, pull it
//figure out how many units to decriment the count by
if (isUnicode) {
unicodeEscaped = unescape( encodeURIComponent( last_char ) );
unicodeCharLength = unicodeEscaped.length;
stringCount = stringCount - unicodeCharLength;
}
else {
stringCount = stringCount - 1;
}
curval = curval.substring(0, curval.length-1);
}
}
// All done, field data is cut down to size. Save it.
return curval;
}
// This function is duplicated in muliple locations. Updating one requires
// updating all of them. They are located under
// web_root/wildcards/commonscripts.txt
// web_root/scripts/commonscripts.js
// sis/web/srv/views/psxdecorators/commonscripts.ftl
function maxlength( field, maxlimit, leftCountSpan ) {
var ret = true;
var scrollDown = false;
var characterCount = realLength(field.value);
var stringCopy;
var isUnicode;
var hasChanged = false;
// Check max field length. Now modified to also take Oracle 4000B limit into account.
if ( characterCount > maxlimit ) {
stringCopy = field.value;
isUnicode = false;
field.value = trimToSize (stringCopy, characterCount, maxlimit, isUnicode);
characterCount = realLength(field.value); //update the charCount since we've altered the string
scrollDown = true;
ret = false;
hasChanged = true;
}
var utf8 = unescape( encodeURIComponent( field.value ) );
var unicodeCharacterCount = realLength(utf8);
if (unicodeCharacterCount > 4000) {
stringCopy = field.value;
isUnicode = true;
var maxBytes = 4000;
field.value = trimToSize(stringCopy, unicodeCharacterCount, maxBytes, isUnicode);
characterCount = realLength(field.value); //update the charCount since we've altered the string
utf8 = unescape( encodeURIComponent( field.value ) );
unicodeCharacterCount = realLength(utf8); //update the unicodeCharCount since we've altered the string
ret = false;
scrollDown = true;
hasChanged = true;
}
if (scrollDown) {
field.scrollTop = field.scrollHeight;
}
// Find # left if caller wants to know
if (leftCountSpan) {
var left1 = maxlimit - characterCount;
var left2 = 4000 - unicodeCharacterCount;
var left = (left1 < left2 ? left1 : left2);
$j("#"+leftCountSpan).html(left);
}
if(hasChanged) {
$j(field).trigger('change');
}
return ret;
}
function noNumbers(e) {
var keynum, keychar, numcheck;
if(window.event) keynum = e.keyCode; // IE
else if(e.which) keynum = e.which; // Netscape/Firefox/Opera
keychar = String.fromCharCode(keynum);
numcheck = /\d/;
return !numcheck.test(keychar);
}
function onlyNumbers(e) {
return !noNumbers(e);
}
function decodeText(text) {
return $j("<div/>").html(text).text();
}
</script>
<script type="application/x-javascript">
addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false);
function hideURLbar(){
window.scrollTo(0,1);
}
</script>
<!-- iPhone Scripts introduced for parent access -->
<script type='text/javascript'>if(!_messages)var _messages = {};_messages["psx.js.admin_javascript.validate_date.month_1"] = "Month ";_messages["psx.js.admin_javascript.validate_date._doesnt_have_31_days"] = " doesn't have 31 days.";_messages["psx.js.admin_javascript.validate_date._doesnt_have_"] = " doesn't have ";_messages["psx.js.admin_javascript.validate_date.month_must_be_between_1_and_12"] = "Month must be between 1 and 12.";_messages["psx.js.admin_javascript.validate_date.date_format_must_be"] = "Date format must be ({0}).";_messages["psx.js.admin_javascript.validate_date.day_must_be_between_1_and_31"] = "Day must be between 1 and 31.";_messages["psx.js.admin_javascript.validate_date._days"] = " days.";_messages["psx.js.admin_javascript.validate_date.february_"] = "February ";if (typeof pss_text != 'function') { function pss_text(key, params, returnKeyIfNotFound) { if (_messages[key] === undefined) { if (returnKeyIfNotFound !== undefined && returnKeyIfNotFound === true) {return key;} else {return 'String key was not found!'; }}if(params == null || params.length == 0) {return _messages[key]; }else { msg = _messages[key]; for ( i = 0; i < params.length; i++) {token = "{"+i+"}"; msg = msg.replace(token, params[i]); }return msg;} } }</script>
<script language="JavaScript" type="text/javascript" src="/admin/JavaScript/validate_date.js"></script>
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon-precomposed" sizes="60x60" href="/apple-touch-icon-60x60.png" />
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="/apple-touch-icon-152x152.png" />
<link rel="icon" type="image/png" href="/favicon-196x196.png" sizes="196x196" />
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16" />
<link rel="icon" type="image/png" href="/favicon-128.png" sizes="128x128" />
<meta name="application-name" content="PowerSchool"/>
<meta name="msapplication-TileColor" content="#FFFFFF" />
<meta name="msapplication-TileImage" content="/mstile-144x144.png" />
<meta name="msapplication-square70x70logo" content="/mstile-70x70.png" />
<meta name="msapplication-square150x150logo" content="/mstile-150x150.png" />
<meta name="msapplication-wide310x150logo" content="/mstile-310x150.png" />
<meta name="msapplication-square310x310logo" content="/mstile-310x310.png" />
<link rel="shortcut icon" href="/favicon.ico" >
<link href="/images/css/screen.css" rel="stylesheet" media="screen">
<link href="/images/css/print.css" rel="stylesheet" media="print">
<script language="JavaScript" src="/admin/javascript/md5.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript"><!--
var pskey = "2525538501C939C43F86086C62A523C660FA011B40B545712EFA33DC595964F6";
//-->
</script>
<script language="JavaScript" type="text/javascript">
var pref=0;
</script>
<script language="JavaScript" src="/scripts/mobile/detectMobileWebkit.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript"><!--
if (isMobileUserAgent()) {
insertCss('/scripts/mobile/mobile.css');
}
//-->
</script>
<script language="JavaScript" type="text/javascript">
function deleteCookie(cookieName){
var cookieDate = new Date();
cookieDate.setTime(cookieDate.getTime()-1);
document.cookie = cookieName + "=; expires='" + cookieDate.toGMTString()+"'; path=/";
}
deleteCookie("InformAuthToken");
$j(document).ready(function() {
// Hide or show the translator login input field
// if the URL parameter "translator" is present
var translator = getURLParameter("translator");
if (translator == "null") {
$j('#translatorInput').hide();
} else {
if (translator == "true") {
$j('#translatorInput').show();
} else {
$j('#translatorInput').hide();
}
}
});
</script>
</head>
<body onload="document.cookie='mobileHome=mobile';" id="teacherlogin" class="pslogin">
<form name="LoginForm" id="LoginForm" action="https://ps.wcasd.net/teachers/post.php">
<input type="hidden" name="pstoken" value="1237678873H3xACdeRhVGpmGHxWJPcFuKPjihYKr14">
<input type="hidden" name="translator_username" value="" />
<input type="hidden" name="translator_password" value="" />
<input type="hidden" name="translator_ldappassword" value="" />
<input type=hidden name=ldappassword value=''>
<div id="container">
<div id="branding-district"></div>
<div id="content">
<div id="branding-powerteacher"></div>
<h2>Teacher Sign In</h2>
<!--box content-->
<div id="noscript" class="feedback-alert">To sign in to PowerTeacher, you must use a browser that supports and has JavaScript enabled.</div>
<fieldset id="login-inputs" class="hide">
<div>
<label for="name">Username</label>
<input type="text" name="username" id="fieldUsername" value="" size="35" >
</div>
<div>
<label for="pw">Password</label>
<input type="password" name="password" value="" size="35" >
</div>
<div id="translatorInput">
<label>Translator Sign In</label>
<input type="password" name="translatorpw" value="" size="39" />
</div>
<div class="button-row">
<button type="submit" id="btnEnter" title="Sign In To PowerSchool" value="Enter" >Sign In</button>
</div>
</fieldset>
<!-- box content-->
<div id="branding-powerschool"></div>
</div>
<!-- Start of copyright table -->
<div id="footer">
<p><div id="legal">
<p>Copyright © 2005-2019 PowerSchool Group LLC and/or its affiliate(s). All rights reserved.<br/>All trademarks are either owned or licensed by PowerSchool Group LLC and/or its affiliates.</p>
</div>
</p>
<p id="pearsoncorplink"><a href="http://www.pearsonschoolsystems.com" target="_blank">String key was not found!</a></p>
</div>
<!-- End of copyright table -->
</div>
<div id="branding-pearson">
<div id="logo-pearson"></div>
<div id="tagline-pearson"></div>
</div>
</form>
<script>
$j('#noscript').hide();
function jsEnabled() {
if(typeof $j != 'function'){
alert('Developer: This page is missing key components required for functionality!\n\nPossible causes include:\n - Commonscripts might be missing.\n - Page customization might enabled, and incomplete.');
//document.write('<script...');
} else {
$j('#login-inputs').removeClass('hide');
$j("#fieldUsername").focus();
}
}
$j(document).ready(function(){
jsEnabled();
});
</script>
</body>
</html>