﻿function f_clientWidth() {
    return f_filterResults(
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0);
}
function f_clientHeight() {
    return f_filterResults(
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0);
}
function f_scrollLeft() {
    return f_filterResults(
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0);
}
function f_scrollTop() {
    return f_filterResults(
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0);
}
function f_filterResults(n_win, n_docel, n_body) {
    var n_result = n_win ? n_win : 0;
    if (n_docel && (!n_result || (n_result > n_docel)))
        n_result = n_docel;
    return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
//looted from http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
    return rv;
}


//looted from http://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx

var centerPageRan = false;

function centerPage() {
    if (centerPageRan == false) {

        //var bodyWidth = document.body['scrollWidth'];
        var borderWidth = 89;
        var bodyWidth = 1000 + borderWidth * 2;

        var clientWidth = f_clientWidth();


        var scrollPos = 0;
        if (bodyWidth > clientWidth) {
            var diff = bodyWidth - clientWidth;
            if (diff < (borderWidth * 2)) {
                //center the page
                scrollPos = diff / 2;
            }
            else {
                //move page to beginning of content
                scrollPos = borderWidth;
            }
            //var x = window.pageXOffset;
            //if (typeof (x) == "undefined") { x = document.body.scrollLeft; }
            //if (x == 0) { x = document.documentElement.scrollLeft; }
            var x = f_scrollLeft();

            if (typeof (x) == "undefined" || isNaN(x)) {
                if (centerPageRan == false) {
                    window.scrollTo(scrollPos, 0);
                    centerPageRan = true;
                }
            } else {
                var scrollByX = scrollPos - x;
                if (centerPageRan == false) {
                    window.scrollBy(scrollByX, 0);
                    centerPageRan = true;
                }
            }
        }

    }
}

function stripMeasurement(stripMe) {
    return parseFloat(stripMe.replace("px", "").replace("pt", "").replace("em", "").replace("in", "").replace("pc", "").replace("ex").replace("%"));
}

$(document).ready(function () { setTimeout(function () { centerPage(); }, 750); });
//background-image: url("../imgs/Background-sunset.jpg");
var loadSideBars = 1;
$(document).ready(function () {
    var ie = getInternetExplorerVersion();
    if ((ie == -1 || ie >= 7) && loadSideBars) {
        $("#tL").css("background-image", "url('./imgs/topLeft.png')");
        $("#t").css("background-image", "url('./imgs/top.png')");
        $("#tR").css("background-image", "url('./imgs/topright.png')");
        $("#l").css("background-image", "url('./imgs/left.png')");
        $("#m").css("background-image", "url('./imgs/background-page.png')");
        $("#r").css("background-image", "url('./imgs/right.png')");
        $("#bL").css("background-image", "url('./imgs/bottomLeft.png')");
        $("#b").css("background-image", "url('./imgs/bottom.png')");
        $("#bR").css("background-image", "url('./imgs/bottomright.png')");

        $("body").css("background-image", "url('./imgs/Background-sunset.jpg')");
    }
});

function goToByScroll(id){
      $('html,body').animate({scrollTop: $("#"+id).offset().top},1000);
  }

  function ScrollAnchorOnLoad(ele) {
      ele = $(ele);
      ele.addClass("moveToTop");
      $(document).ready(function () {
          setTimeout(function () {
              ele.removeClass("moveToTop");
              if (location.href.indexOf("#" + ele.attr("id")) != -1) {
                  goToByScroll(ele.attr("id"));
              }              
          }, 1000);
      });
  }

  function setOption(s, e, option, value) {
      s.datepicker("option", option, value);
      e.datepicker("option", option, value);
  }


    function doPostBackAsync(eventName, eventArgs) {
        var prm = Sys.WebForms.PageRequestManager.getInstance();

        if (!Array.contains(prm._asyncPostBackControlIDs, eventName)) {
            prm._asyncPostBackControlIDs.push(eventName);
        }

        if (!Array.contains(prm._asyncPostBackControlClientIDs, eventName)) {
            prm._asyncPostBackControlClientIDs.push(eventName);
        }

        __doPostBack(eventName, eventArgs);

    }
  

    function isNumeric(n)
    {
        var n2 = n;
        n = parseFloat(n);
        return (n!='NaN' && n2==n && isFinite(n));
    }


    /*
    * Date Format 1.2.3
    * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
    * MIT license
    *
    * Includes enhancements by Scott Trenda <scott.trenda.net>
    * and Kris Kowal <cixar.com/~kris.kowal/>
    *
    * Accepts a date, a mask, or a date and a mask.
    * Returns a formatted version of the given date.
    * The date defaults to the current date/time.
    * The mask defaults to dateFormat.masks.default.
    */

    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.format2 = function (mask, utc) {
        return dateFormat(this, mask, utc);
    };
