﻿function PartWin(theURL) {
    PartWinHeightWidth(theURL, 550, 720);
}
function PartWinHeightWidth(theURL, height, width) {
    PartWinHeightWidthAndScroll(theURL, height, width, 'no')
}
function PartWinHeightWidthAndScroll(theURL, height, width, scroll) {
    var pw;
    pw = window.open(theURL, 'PartWin', 'toolbar=no,menubar=no,resizable=yes,scrollbars=' + scroll + ',height=' + height + ',width=' + width);
    pw.focus();
}

function fadeIn(sFunction) {
    document.body.style.cursor = 'wait';
    var tbody = document.getElementsByTagName("body")[0];
    var tnode = document.createElement('div');
    tnode.style.width = "100%";
    tnode.style.height = "100%";
    tnode.style.position = 'fixed';                 // Position absolutely
    tnode.style.top = '0px';                           // In the top
    tnode.style.left = '0px';                          // Left corner of the page		
    tnode.style.overflow = 'hidden';                   // Try to avoid making scroll bars                 
    tnode.style.opacity = 40;
    tnode.style.MozOpacity = 0.4;
    tnode.style.filter = 'alpha(opacity=40) Gray';
    tnode.style.zIndex = 500;
    tnode.style.backgroundColor = '#000000';
    tnode.style.display = 'block';
    tnode.id = "ScreenBlocker";
    var tnode2 = document.createElement('div');
    tnode2.id = "ScreenBlockerMsg";
    tnode2.style.width = "300px";
    tnode2.style.height = "40px";
    tnode2.style.paddingTop = "20px";
    tnode2.style.backgroundColor = '#ffffff';
    tnode2.style.marginLeft = "-150px";
    tnode2.style.marginTop = "-150px";
    tnode2.style.textAlign = 'center';
    tnode2.style.top = "50%";
    tnode2.style.left = "50%";
    tnode2.style.position = 'fixed';
    tnode2.innerHTML = "Loading...";
    tnode2.style.zIndex = 600;
    tnode2.style.border = "#000 solid 1px";
    tnode2.style.display = "none";
    tbody.appendChild(tnode2);
    tbody.appendChild(tnode);
    tnode2.style.display = "block";


    setTimeout(sFunction, 100);
}

function fadeOut() {

    $("#ScreenBlocker").remove();
    $("#ScreenBlockerMsg").remove();
    document.body.style.cursor = 'default';
}

function showdeadcenterdiv(Xwidth, Yheight, divid) {

    var scrolledX, scrolledY;
    if (self.pageYoffset) {
        scrolledX = self.pageXoffset;
        scrolledY = self.pageYoffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {
        scrolledX = document.documentElement.scrollLeft;
        scrolledY = document.documentElement.scrollTop;
    } else if (document.body) {
        scrolledX = document.body.scrollLeft;
        scrolledY = document.body.scrollTop;
    }


    var centerX, centerY;
    if (self.innerHeight) {
        centerX = self.innerWidth;
        centerY = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        centerX = document.documentElement.clientWidth;
        centerY = document.documentElement.clientHeight;
    } else if (document.body) {
        centerX = document.body.clientWidth;
        centerY = document.body.clientHeight;
    }

    var leftoffset = scrolledX + (centerX - Xwidth) / 2;
    var topoffset = scrolledY + (centerY - Yheight) / 2;


    var o = document.getElementById(divid);
    var r = o.style;
    r.position = 'absolute';
    r.top = topoffset + 'px';
    r.left = leftoffset + 'px';
    r.display = "block";
}



function set_cookie(name, value, exp_y, exp_m, exp_d, path, domain, secure) {
    var cookie_string = name + "=" + escape(value);

    if (exp_y) {
        var expires = new Date(exp_y, exp_m, exp_d);
        cookie_string += "; expires=" + expires.toGMTString();
    }

    if (path) cookie_string += "; path=" + escape(path);
    if (domain) cookie_string += "; domain=" + escape(domain);
    if (secure) cookie_string += "; secure";

    document.cookie = cookie_string;
}
function get_cookie(cookie_name) {
    var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');

    if (results) {
        return unescape(results[2]);
    }
    else return '';
}

function CheckAllDataGridCheckBoxes(aspCheckBoxID, checkVal) {

    re = new RegExp(aspCheckBoxID + '$');   //generated control name starts with a colon

    for (i = 0; i < document.forms[0].elements.length; i++) {
        elm = document.forms[0].elements[i]
        if (elm.type == 'checkbox') {
            if (re.test(elm.name)) {
                elm.checked = checkVal
            }
        }
    }
}



function getElementPositionAndSize(o) {
    var fixBrowserQuirks = true;

    if (o == null) {
        return null;
    }

    var left = 0;
    var top = 0;
    var width = 0;
    var height = 0;
    var parentNode = null;
    var offsetParent = null;


    offsetParent = o.offsetParent;
    var originalObject = o;
    var el = o; // "el" will be nodes as we walk up, "o" will be saved for offsetParent references
    while (el.parentNode != null) {
        el = el.parentNode;
        if (el.offsetParent == null) {
        }
        else {
            var considerScroll = true;
            /*
            In Opera, if parentNode of the first object is scrollable, then offsetLeft/offsetTop already 
            take its scroll position into account. If elements further up the chain are scrollable, their 
            scroll offsets still need to be added in. And for some reason, TR nodes have a scrolltop value
            which must be ignored.
            */
            if (fixBrowserQuirks && window.opera) {
                if (el == originalObject.parentNode || el.nodeName == "TR") {
                    considerScroll = false;
                }
            }
            if (considerScroll) {
                if (el.scrollTop && el.scrollTop > 0) {
                    top -= el.scrollTop;
                }
                if (el.scrollLeft && el.scrollLeft > 0) {
                    left -= el.scrollLeft;
                }
            }
        }
        // If this node is also the offsetParent, add on the offsets and reset to the new offsetParent
        if (el == offsetParent) {
            left += o.offsetLeft;
            if (el.clientLeft && el.nodeName != "TABLE") {
                left += el.clientLeft;
            }
            top += o.offsetTop;
            if (el.clientTop && el.nodeName != "TABLE") {
                top += el.clientTop;
            }
            o = el;
            if (o.offsetParent == null) {
                if (o.offsetLeft) {
                    left += o.offsetLeft;
                }
                if (o.offsetTop) {
                    top += o.offsetTop;
                }
            }
            offsetParent = o.offsetParent;
        }
    }

    if (originalObject.offsetWidth) {
        width = originalObject.offsetWidth;
    }
    if (originalObject.offsetHeight) {
        height = originalObject.offsetHeight;
    }
    return { 'left': left, 'top': top, 'width': width, 'height': height
    };
};

/*
Date Format 1.2.3
(c) 2007-2009 Steven Levithan <stevenlevithan.com>
MIT license
 
*/

var dateFormat = function() {
    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
		timezoneClip = /[^-+\dA-Z]/g,
		pad = function(val, len) {
		    val = String(val);
		    len = len || 2;
		    while (val.length < len) val = "0" + val;
		    return val;
		};

    // Regexes and supporting functions are cached through closure
    return function(date, mask, utc) {
        var dF = dateFormat;

        // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
        if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
            mask = date;
            date = undefined;
        }

        // Passing date through Date applies Date.parse, if necessary
        date = date ? new Date(date) : new Date;
        if (isNaN(date)) throw SyntaxError("invalid date");

        mask = String(dF.masks[mask] || mask || dF.masks["default"]);

        // Allow setting the utc argument via the mask
        if (mask.slice(0, 4) == "UTC:") {
            mask = mask.slice(4);
            utc = true;
        }

        var _ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
			    d: d,
			    dd: pad(d),
			    ddd: dF.i18n.dayNames[D],
			    dddd: dF.i18n.dayNames[D + 7],
			    m: m + 1,
			    mm: pad(m + 1),
			    mmm: dF.i18n.monthNames[m],
			    mmmm: dF.i18n.monthNames[m + 12],
			    yy: String(y).slice(2),
			    yyyy: y,
			    h: H % 12 || 12,
			    hh: pad(H % 12 || 12),
			    H: H,
			    HH: pad(H),
			    M: M,
			    MM: pad(M),
			    s: s,
			    ss: pad(s),
			    l: pad(L, 3),
			    L: pad(L > 99 ? Math.round(L / 10) : L),
			    t: H < 12 ? "a" : "p",
			    tt: H < 12 ? "am" : "pm",
			    T: H < 12 ? "A" : "P",
			    TT: H < 12 ? "AM" : "PM",
			    Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
			    o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
			    S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

        return mask.replace(token, function($0) {
            return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
        });
    };
} ();

// Some common format strings
dateFormat.masks = {
    "default": "ddd mmm dd yyyy HH:MM:ss",
    shortDate: "m/d/yy",
    mediumDate: "mmm d, yyyy",
    longDate: "mmmm d, yyyy",
    fullDate: "dddd, mmmm d, yyyy",
    shortTime: "h:MM TT",
    mediumTime: "h:MM:ss TT",
    longTime: "h:MM:ss TT Z",
    isoDate: "yyyy-mm-dd",
    isoTime: "HH:MM:ss",
    isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
    dayNames: [
		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
	],
    monthNames: [
		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
		"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
	]
};

// For convenience...
Date.prototype.format = function(mask, utc) {
    return dateFormat(this, mask, utc);
};

function stripHTML(oldString) {

    var newString = "";
    var inTag = false;
    for (var i = 0; i < oldString.length; i++) {

        if (oldString.charAt(i) == '<') inTag = true;
        if (oldString.charAt(i) == '>') {
            if (oldString.charAt(i + 1) == "<") {
                //dont do anything
            }
            else {
                inTag = false;
                i++;
            }
        }

        if (!inTag) newString += oldString.charAt(i);

    }

    return newString;
}

function IsCurrency(str) {
    str = alltrim(str);
    return /^\$?[1-9][0-9]{0,2}(,[0-9]{3})*(\.[0-9]{2})?$/.test(str);
}


function IsNumeric(sText) {
    var ValidChars = "-0123456789.";
    var IsNumber = true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function round_number(number, dec_places) {
    //Version 2.0 (c) Copyright 2008, Russell Walker, Netshine Software Limited. www.netshinesoftware.com
    var new_number = ''; var i = 0; var sign = ""; number = number.toString(); number = number.replace(/^\s+|\s+$/g, ''); if (number.charCodeAt(0) == 45) { sign = '-'; number = number.substr(1).replace(/^\s+|\s+$/g, '') } dec_places = dec_places * 1; dec_point_pos = number.lastIndexOf("."); if (dec_point_pos == 0) { number = "0" + number; dec_point_pos = 1 } if (dec_point_pos == -1 || dec_point_pos == number.length - 1) { if (dec_places > 0) { new_number = number + "."; for (i = 0; i < dec_places; i++) { new_number += "0" } if (new_number == 0) { sign = "" } return sign + new_number } else { return sign + number } } var existing_places = (number.length - 1) - dec_point_pos; if (existing_places == dec_places) { return sign + number } if (existing_places < dec_places) { new_number = number; for (i = existing_places; i < dec_places; i++) { new_number += "0" } if (new_number == 0) { sign = "" } return sign + new_number } var end_pos = (dec_point_pos * 1) + dec_places; var round_up = false; if ((number.charAt(end_pos + 1) * 1) > 4) { round_up = true } var digit_array = new Array(); for (i = 0; i <= end_pos; i++) { digit_array[i] = number.charAt(i) } for (i = digit_array.length - 1; i >= 0; i--) { if (digit_array[i] == ".") { continue } if (round_up) { digit_array[i]++; if (digit_array[i] < 10) { break } } else { break } } for (i = 0; i <= end_pos; i++) { if (digit_array[i] == "." || digit_array[i] < 10 || i == 0) { new_number += digit_array[i] } else { new_number += "0" } } if (dec_places == 0) { new_number = new_number.replace(".", "") } if (new_number == 0) { sign = "" } return sign + new_number
}
        

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

//Fix for firefox default button on hitting enter key
//Note only works on Buttons not linkbuttons.  Use a shadow button with the linkbutton to make it work
var __defaultFired = false;
function WebForm_FireDefaultButton(event, target) {
    var element = event.target || event.srcElement;
    if (!__defaultFired && event.keyCode == 13 && !(element && (element.tagName.toLowerCase() == "textarea"))) {
        var defaultButton;
        if (__nonMSDOMBrowser) {
            defaultButton = document.getElementById(target);
        }
        else {
            defaultButton = document.all[target];
        }
        if (defaultButton && typeof (defaultButton.click) != "undefined") {
            defaultButton.click();
            event.cancelBubble = true;
            if (event.stopPropagation) event.stopPropagation();
            return false;
        }
    }
    return true;
}

function AttachVideo(divID, VideoID) {
    var params = { allowScriptAccess: "always", wmode: "opaque" };
    var atts = { id: divID };
    swfobject.embedSWF('http://www.youtube.com/v/' + VideoID + '?enablejsapi=1&playerapiid=' + divID,
                           divID, '425', '356', '8', null, null, params, atts);
}



function replaceLineFeed(input, newVal) {
    var output = "";
    if (newVal == null) {
        newVal = " ";
    }
    for (var i = 0; i < input.length; i++) {
        if ((input.charCodeAt(i) == 13) && (input.charCodeAt(i + 1) == 10)) {
            i++;
            output += newVal;
        } else {
            output += input.charAt(i);
        }
    }
    return output;
}

//help section

function openHelp(hlpid) {
    NonModalAttachPanel(hlpid, "Help", closeHelp);
    NonModalfindInstanceShow(hlpid, 200, 100, "Help");
    document.getElementById("Help").style.visibility = "visible";
    LoadTopic('tbSupport', 'Support.htm');
}

function closeHelp() {
    document.getElementById("Help").style.visibility = "hidden";
}

function cb(notificationID, action, context, type, timestamp) {
    window.focus();
    window.resizeTo(screen.availWidth, screen.availHeight);
    window.focus();
    setTimeout(openChatter, 10000);


}

function onerror(errorCode, errorDescription) {
    alert("ERROR:\r\n\r\n" + errorCode + " - " + errorDescription);
}

function minsToHourMins(mins,l24hour){
var Hours = Math.floor(mins/60);

Hours =Hours.toString();

if (l24hour){
    if (Hours.length < 2){
        Hours="0"+ Hours;
    }
}
var Minutes = mins%60;
Minutes =Minutes.toString();
if (Minutes.length < 2){
    Minutes="0"+ Minutes;
}
var Time = Hours + ":" + Minutes;

return Time;
}

function LinkLaunch(URL) {

    window.open(URL);
    return false;
}



function CompHideShow(img, div) {

    if ($("#" + div).is(":visible")) {
        $("#" + div).hide('slow');
        $("#" + img).attr('src', '../Images/menu/icons/_dropdownUp.gif');
        
    }
    else {
        $("#" + div).show('slow');
        $("#" + img).attr('src', '../Images/menu/icons/_dropdownover.gif');
    }
}

function getMonday(d) 
{
    var day = d.getDay(), diff = d.getDate() - day + (day == 0 ? -6 : 1); // adjust when day is sunday
    return new Date(d.setDate(diff)); 
} 


function keypressNumeric(event,lDecimal){
      // backspace = 8
      // shift  = 16
      // left arrow = 37
      // right arrow = 39
      var keyCode = (event.which) ? event.which : event.keyCode;
      var validCodes = new Array(8,16,37,39);
      if (lDecimal){
        validCodes[validCodes.length] = 46
      }

      var i = validCodes.length;
 
      if (keyCode < 48 || keyCode > 57)
      {
        while (i--) {
          if (validCodes[i] === keyCode) {
            return true;
        }
     }
        event.preventDefault? event.preventDefault() : event.returnValue = false;
    }
 else{
      return true;
     }
 }

 // USAGE: OnClientClick="SherpaDisableButton(this);" UseSubmitBehavior="false"
 function SherpaDisableButton(btn) {
     btn.disabled = (typeof (Page_IsValid) != 'undefined') ? Page_IsValid : true;
     if (btn.disabled)
         btn.value = 'Please wait...';
 }

 // USAGE: OnClientClick="SherpaDisableLinkButton(this);"
 function SherpaDisableLinkButton(btn) {
     btn.disabled = (typeof (Page_IsValid) != 'undefined') ? Page_IsValid : true;
     if (btn.disabled)
         btn.innerHTML = '<span>Please wait...</span>';
     eval(btn.href);
 }

 



