﻿// JScript File
//<!-- Begin
Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit
if (navigator.userAgent.indexOf('WebKit/') > -1) {
    Sys.Browser.agent = Sys.Browser.WebKit;
    Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
    Sys.Browser.name = 'WebKit';
}

var xMousePos = 0;
var yMousePos = 0;

function captureMousePosition(e) {
xMousePos = mouseX(e);
yMousePos = mouseY(e);
}

function mouseX(evt) {
if (evt.pageX) return evt.pageX;
else if (evt.clientX)
   return evt.clientX + (document.documentElement.scrollLeft ?
   document.documentElement.scrollLeft :
   document.body.scrollLeft);
else return null;
}
function mouseY(evt) {
if (evt.pageY) return evt.pageY;
else if (evt.clientY)
   return evt.clientY + (document.documentElement.scrollTop ?
   document.documentElement.scrollTop :
   document.body.scrollTop);
else return null;
}



function getMouse()
{
    return [xMousePos, yMousePos];
}

function insertAfter(parent, node, referenceNode) {
  parent.insertBefore(node, referenceNode.nextSibling);
}

function textCounter(field,maxlimit) {
//var field = getComment();
//var maxlimit = 200;
if (field.value.length > maxlimit) // if too long...trim it!
field.value = field.value.substring(0, maxlimit);
// otherwise, update 'characters left' counter
//else 
//countfield.value = maxlimit - field.value.length;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

//from http://textsnippets.com/posts/show/686, by: bitshaker
function getElementsByClassName(oElm, strTagName, strClassName){
var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
	    var arrReturnElements = new Array();
	    strClassName = strClassName.replace(/\-/g, "\\-");
	    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	    var oElement;
	    for(var i=0; i<arrElements.length; i++){
	        oElement = arrElements[i];
	        if(oRegExp.test(oElement.className)){
	            arrReturnElements.push(oElement);
	        }
	    }
	    return (arrReturnElements)
	}
	
	function disableContextMenu(element) {
    element.oncontextmenu = function() {
        return false;
    }
}

function getTarget(e)
{
    var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
    return targ;
}


function AreDatesEqual(dateA, dateB) {
    return isDatesEqual(dateA, dateB);
}

function isDatesEqual(dateA, dateB)
{
    if(dateA.getFullYear() != dateB.getFullYear()){ return false;}
    if(dateA.getMonth() != dateB.getMonth()){return false;}
    if(dateA.getDate() != dateB.getDate()){return false;}
    return true;
}


function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function isFireFox()
{
    if (!document.all && document.getElementById && !window.opera)
    {
        return true;
    }
    else
    {
        return false;
    }
}

function isIe7()
{
/*@cc_on
    if (@_jscript_version == '5.7'){return true;}
@*/ 
return false;
}

function IsIE8() {
    var rv = -1;
    var ua = navigator.userAgent;
    var re = new RegExp("Trident\/([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null) {
        rv = parseFloat(RegExp.$1);
    }
    return (rv == 4);
}

var timeDiff = {
    setStartTime: function() {
        d = new Date();
        time = d.getTime();
    },

    getDiff: function() {
        d = new Date();
        return (d.getTime() - time);
    }
}

function makeScrollTable(container, aheight, awidth)
{

        
    var _ff = $get('_fixedfooter');
    var _fh = $get('_fixedheader');
    if (_ff) {
        _ff.parentNode.removeChild(_ff);
    }

    if (_fh) {
        _fh.parentNode.removeChild(_fh);
    }

    container.style.height = aheight + 'px';
    container.style.width = awidth + 'px';
    

    if ($.browser.mozilla) {
        container.style.overflow = '-moz-scrollbars-vertical';
    } else if ($.browser.msie) {
    container.style.overflowY = 'scroll';
    container.style.overflowX = 'hidden';
    } else {
    container.style.overflow = 'auto';
    }

    var origTable = container.firstChild;
    origTable.style.width = '100%';
    //origTable.style.zIndex = '1';
    var header = origTable.firstChild;

    var fixedheader = header.cloneNode(true);
    //var temp = fix_dom_clone(header,fixedheader);
    //fixedheader = temp;
    //var fixedheadertbl = document.createElement('table');
    var fixedheadertbl = origTable.cloneNode(false);
    //fixedheadertbl = fix_dom_clone(origTable,fixedheadertbl);
    fixedheadertbl.style.position = 'absolute';
    fixedheadertbl.id = '_fixedheader';
    fixedheadertbl.appendChild(fixedheader);

    //var container = document.getElementById('Div2');
    var pos = findPos(container);
    fixedheadertbl.style.top = pos[1] + 'px';
    fixedheadertbl.style.left = pos[0] + 'px';
    fixedheadertbl.style.zIndex = '0';
    //fixedheadertbl.style.width =  '400px';
    //fixedheadertbl.style.borderCollapse = 'collapse';
    //tbl2.style.width = '200px';
    //container.appendChild(fixedheadertbl);
    //------------------
    container.parentNode.appendChild(fixedheadertbl);
    //alert(origTable.getElementsByTagName('TFOOT').length);
    if (origTable.getElementsByTagName('TFOOT').length > 0) {
        var footer = origTable.getElementsByTagName('TFOOT')[0];
        var fixedfooter = footer.cloneNode(true);
        //fixedfooter = fix_dom_clone(footer,fixedfooter);

        //var fixedfootertbl = document.createElement('table');
        var fixedfootertbl = origTable.cloneNode(false);
        fixedfootertbl.style.position = 'absolute';
        fixedfootertbl.style.zIndex = '0';
        fixedfootertbl.appendChild(fixedfooter);
        //container.appendChild(fixedfootertbl);
        fixedfootertbl.id = '_fixedfooter';
        container.parentNode.appendChild(fixedfootertbl);
        fixedfootertbl.style.top = (pos[1] + container.clientHeight - fixedfootertbl.clientHeight + 4) + 'px';
        fixedfootertbl.style.left = pos[0] + 'px';

        //fixedfootertbl.style.borderCollapse = 'collapse'
    }

    //above here
    //63ms
    //timeDiff.setStartTime();
    //if (isFireFox()) {
       
        var i = header.childNodes.length - 1;
        var p = header.childNodes[i].childNodes.length;
        
        for (var x = 0; x < p; x++) {
            
            if (header.childNodes[i].childNodes[x].tagName == 'TD' || header.childNodes[i].childNodes[x].tagName == 'TH') {
                //200ms
                
                var w = (header.childNodes[i].childNodes[x].clientWidth - 2) + 'px';
                fixedheader.childNodes[i].childNodes[x].style.width = w;
                //fixedheader.childNodes[0].childNodes[x].style.width = (header.childNodes[0].childNodes[x].clientWidth - 2) + 'px';
                //fixedheader.childNodes[0].childNodes[x].style.width = '97px';
                if ((fixedfooter) && fixedfooter.childNodes.length > 0) {
                    //200ms
                    fixedfooter.childNodes[0].childNodes[x].style.width = w;
                   // var uu = footer.childNodes[0].childNodes[x].clientWidth;
                    //fixedfooter.childNodes[0].childNodes[x].style.width = (footer.childNodes[0].childNodes[x].clientWidth - 2) + 'px';
                }    
             }
        }
   // }
   // alert(timeDiff.getDiff());
  //480ms here  
    
fixedheadertbl.style.width = origTable.clientWidth + 'px';
fixedheadertbl.cellSpacing = 0;
if(fixedfootertbl)
{
    fixedfootertbl.style.width = origTable.clientWidth + 'px';
    fixedfootertbl.cellSpacing = 0;
    if(origTable.clientHeight < aheight)
    {
        fixedfootertbl.style.visibility = 'hidden';
    }
}

//tested above here

if (isIe7() || IsIE8())
{
    container.style.width = awidth + 17 + 'px';
    container.style.height = aheight - 17 + 'px';
    origTable.style.width = awidth + 'px';
    pos = findPos(container);
    fixedheadertbl.style.left = pos[0] + 'px';
    if(fixedfootertbl)
    {
        fixedfootertbl.style.top = (pos[1] + container.clientHeight - fixedfootertbl.clientHeight) + 'px';
    }
}


 
//container.insertBefore(tbl2,container.firstChild);
}



function getScreenSize()
{
var x,y;
    if (self.innerHeight) // all except Explorer
    {
	    x = self.innerWidth;
	    y = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
	// Explorer 6 Strict Mode
    {
	    x = document.documentElement.clientWidth;
	    y = document.documentElement.clientHeight;
    }
    else if (document.body) // other Explorers
    {
	    x = document.body.clientWidth;
	    y = document.body.clientHeight;
    }
    return [x,y];
}


function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
		return LTrim(RTrim(value));
}

// Author: Mihai Bazon, 2006
// http://www.bazon.net/mishoo/
// This code is (c) Dynarch.com, 2006.
//
// Permission is hereby granted to use this code 
// under the terms of the GNU LGPL. (www.gnu.org/licenses/lgpl.html)

var is_gecko = /gecko/i.test(navigator.userAgent);
var is_ie    = /MSIE/.test(navigator.userAgent);

function setSelectionRange(input, start, end) {
	if (is_gecko) {
		input.setSelectionRange(start, end);
	} else {
		// assumed IE
		var range = input.createTextRange();
		range.collapse(true);
		range.moveStart("character", start);
		range.moveEnd("character", end - start);
		range.select();
	}
};

function getSelectionStart(input) {
	if (is_gecko)
		return input.selectionStart;
	var range = document.selection.createRange();
	var isCollapsed = range.compareEndPoints("StartToEnd", range) == 0;
	if (!isCollapsed)
		range.collapse(true);
	var b = range.getBookmark();
	return b.charCodeAt(2) - 2;
};

function getSelectionEnd(input) {
	if (is_gecko)
		return input.selectionEnd;
	var range = document.selection.createRange();
	var isCollapsed = range.compareEndPoints("StartToEnd", range) == 0;
	if (!isCollapsed)
		range.collapse(false);
	var b = range.getBookmark();
	return b.charCodeAt(2) - 2;
};


function showModal(aelm)
{
    if ($get('_mask' + aelm.id) != null) { return }
    var size = getScreenSize();
    var leftoffset
    if(aelm.clientWidth == 0){leftoffset = parseInt(aelm.style.width);}else{leftoffset = aelm.clientWidth;}
    leftoffset = ((leftoffset / 2) * -1);
    var topoffset
    if(aelm.clientHeight == 0){topoffset = parseInt(aelm.style.height);}else{topoffset = aelm.clientHeight;}
    topoffset = ((topoffset / 2) * -1);
    
    aelm.style.position = 'absolute';
    aelm.style.top = (size[1] / 2) + topoffset + 'px';
    aelm.style.left = (size[0] / 2) + leftoffset + 'px';
    aelm.style.zIndex = '91';
    aelm.style.display = ''; 
    
    var mask = document.createElement('div');
    mask.style.height = size[1] + 'px';
    mask.style.width = size[0] + 'px';
    mask.className = 'modalBackground';
    mask.style.position = 'absolute';
    mask.style.left = '0px';
    mask.style.top = '0px';
    mask.style.zIndex = '90';
    mask.id = '_mask' + aelm.id;
    document.body.appendChild(mask);
    
}

function hideModal(aelm)
{
    aelm.style.display = 'none';
    document.body.removeChild($get('_mask' + aelm.id));
}


function DrawDDL(anchor, items, cssName, headerCssName)
{
    var name = anchor.id + '_ddlpanel';
    $addHandler(document.body, 'mouseup', eval(anchor.id + '_Close'));
    
    if ($get(name)) {
        $get(name).style.display = '';
        return;
    }

    var panel = document.createElement('div');
    document.body.appendChild(panel);
    //panel.style.width = parseInt(width) + 'px';
    panel.style.position = "absolute";
    panel.id = name;
    panel.className = cssName;
    panel.style.overflowY = 'auto';

    
    
    var pos = findPos(anchor);
    panel.style.left = pos[0] + 'px';

    if ((pos[1] + anchor.clientHeight + panel.clientHeight) > getScreenSize()[1]) {
        //display above
        panel.style.top = pos[1] - panel.clientHeight + 'px'; 
    }
    else {
        //display below
        panel.style.top = pos[1] + anchor.clientHeight + 'px';
    }
      
    
    var contents = new Array();

    for (var y = 0; y < items.length; y++) {
        for (var x = 0; x < items[y][1].length; x++) {
            if (items[y][1][x][1] == '_header') {
                //header

                if ((x - 1) > -1 && items[y][1][x - 1][1] != '_header') {
                    contents.push('</ul>');
                }
                contents.push('<div class="' + headerCssName + '">' + items[y][1][x][0] + '</div>');

            }
            else {
                //regular item
                if (x == 0 || items[y][1][x - 1][1] == '_header') {
                    if (items[y][0].length > 0)
                        contents.push('<ul class="' + items[y][0] + '">');
                        else
                    contents.push('<ul>');
                }
                if (items[y][1][x].length == 3)
                    if(items[y][1][x][2] == 3)
                        contents.push('<li><span onclick="' + anchor.id + y + '_Click(\'' + items[y][1][x][1] + '\')">' + items[y][1][x][0] + '</span> (<a href="#" onclick="' + anchor.id + y + '_Delete(' + items[y][1][x][1] + ')">delete</a>)</span></li>');
                    else
                        contents.push('<li class="additem"><span onclick="' + anchor.id + y + '_Click(\'' + items[y][1][x][1] + '\')">' + items[y][1][x][0] + '</span></li>');
                else
                    contents.push('<li><span onclick="' + anchor.id + y + '_Click(\'' + items[y][1][x][1] + '\')">' + items[y][1][x][0] + '</span></li>');
                if (x == (items[y][1].length - 1)) { contents.push('</ul>'); }
            }

        }
    }
    
    panel.innerHTML = contents.join('');
    
}

function StrToBool(str) {
    return (trim(str).toLowerCase() == 'true') ? true : false;
}

function MarkInvalid(elm, msg) {
    // elm.style.border = '2px solid red';
    elm.style.backgroundColor = '#f9b2b2';
}

function MarkValid(elm) {
    // elm.style.border = '';
    elm.style.backgroundColor = '';
}

function GetDateString(aDate) {
    return (+(aDate.getMonth() + 1) + '/' + aDate.getDate() + '/' + aDate.getFullYear());
}

function SetSelectedCheck(chkname, value) {
    __setselected('checkbox', chkname, value);
}

function SetSelectedRadio(radioname, value) {
    __setselected('radio', radioname, value);;
}

function __setselected(type, name, value) {
    var $radios = $('input[type=' + type + '][name=' + name + ']');
    $radios.each(function() {
        if ($(this).val() == value) {
            $(this).attr('checked', true);
        } else {
            $(this).removeAttr('checked');
        }
    });
}

if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
// End -->