﻿var _isIE = (window.navigator.appName.toLowerCase().indexOf('explorer') != -1);


function getScrollXPos() {
    if (!_isIE) {
        return window.pageXOffset;
    }
    else {
        if (document.documentElement && document.documentElement.scrollLeft) {
            return document.documentElement.scrollLeft;
        }
        else if (document.body) {
            return document.body.scrollLeft;
        }
    }
    return 0;
}

function getScrollY() {
    if (!_isIE) {
        return window.pageYOffset;
    }
    else {
        if (document.documentElement && document.documentElement.scrollTop) {
            return document.documentElement.scrollTop;
        }
        else if (document.body) {
            return document.body.scrollTop;
        }
    }
    return 0;
}

function addCSSClassName(element, className) {
    var current = element.className;
    if (current) {
        if (current.charAt(current.length - 1) != ' ') {
            current += ' ';
        }
        current += className;
    }
    else {
        current = className;
    }
    element.className = current;
}

function removeCSSClassName(element, className) {
    var current = element.className;
    if (current) {
        if (current.substring(current.length - className.length - 1, current.length) == ' ' + className) {
            element.className = current.substring(0, current.length - className.length - 1);
            return;
        }
        if (current == className) {
            element.className = "";
            return;
        }
        var index = current.indexOf(' ' + className + ' ');
        if (index != -1) {
            element.className = current.substring(0, index) + current.substring(index + className.length + 2, current.length);
            return;
        }
        if (current.substring(0, className.length) == className + ' ') {
            element.className = current.substring(className.length + 1, current.length);
        }
    }
}

function getElementByTagName(element, tagName) {
    var elements = getElementsByTagName(element, tagName);
    if (elements && elements.length > 0) {
        return elements[0];
    }
    else return null;
}

function $$(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return document.all[elementId];
    }
    else return null;
}


function getElementsByTagName(element, tagName) {
    if (element && tagName) {
        if (element.getElementsByTagName) {
            return element.getElementsByTagName(tagName);
        }
        if (element.all && element.all.tags) {
            return element.all.tags(tagName);
        }
    }
    return null;
}

function setPositionPx(element, x, y, width, height) {
    if (element) {
        if (x) {
            element.style.left = x + "px";
        }
        if (y) {
            element.style.top = y + "px";
        }
        if (width) {
            element.style.width = width + "px";
        }
        if (height) {
            element.style.height = height + "px";
        }
    }
}

function setVisibility(element, visible) {
    if (visible == 1) {
        showBlockVisible(element);
    }
    else {
        hideBlockVisible(element);
    }
}

function showBlockVisible(element) {
    if (element) {
        element.style.display = "block";
        element.style.visibility = "visible";
    }
}

function hideBlockVisible(element) {
    if (element) {
        element.style.display = "none";
        element.style.visibility = "hidden";
    }
}


function getPositionStr(element) {
    var pos = GetPosition(element);
    return "X: " + pos.x + "\nY: " + pos.y + "\nW: " + pos.width + "\nH: " + pos.height;

}

function getPosition(element) {
    var result = new Object();
    result.x = 0;
    result.y = 0;
    result.width = 0;
    result.height = 0;
    if (element.offsetParent) {
        result.x = element.offsetLeft;
        result.y = element.offsetTop;
        var parent = element.offsetParent;
        while (parent) {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop;
            var parentTagName = parent.tagName.toLowerCase();
            if (parentTagName != "table" &&
                parentTagName != "body" && 
                parentTagName != "html" && 
                parentTagName != "div" && 
                parent.clientTop && 
                parent.clientLeft) {
                result.x += parent.clientLeft;
                result.y += parent.clientTop;
            }
            parent = parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x = element.left;
        result.y = element.top;
    }
    else {
        if (element.x) {
            result.x = element.x;
        }
        if (element.y) {
            result.y = element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width = element.offsetWidth;
        result.height = element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
        result.width = element.style.pixelWidth;
        result.height = element.style.pixelHeight;
    }
    return result;
}

function getNextElement(element) {
    var node = element;
    do {node = node.nextSibling;} while (node && node.nodeType != 1);
    return node;
 }
 
 function getPrevElement(element) {
  var node = element;
    do {node = node.previousSibling;} while (node && node.nodeType != 1);
    return node;
 }
 
 function removePrevElement(element, prevElemName) {
      var prev = getPrevElement(element);
      if (!prev) return false;
      if (prevElemName) {
        if (prev.name) {
            if (prev.name == prevElemName) {
                element.parentNode.removeChild(prev);
                return true;
            }
        }
      }
      element.parentNode.removeChild(prev);
      return true;  
 }
 
 
  
 function getFirstChild(element) {
    
    for (var i = 0; i < element.childNodes.length; i++) {
        if (element.childNodes[i].nodeType != 1) return element.childNodes[i];
    }
 }
 
 function getElementDir(element) {
    if (element) {
        if (element.dir) {
            return element.dir;
        }
        return WebForm_GetElementDir(element.parentNode);
    }
    return "ltr";
}
 
 function getAllNonTextElements(element) {
    var elems = new Array();
    for (var i = 0; i < element.childNodes.length; i++) {
        if (element.childNodes[i].nodeType != 1) {
            elems.push(element.childNodes[i]);
        }    
    }
    return elems.length > 0 ? elems : null;
 }
 
 //trace functions:
 //to use - create element with id trc.
 function dmp(val) {
    $$('trc').innerHTML = val;
 }
 function dmc() {
    $$('trc').innerHTML = '';
 }
 function dma(val) {
    $$('trc').innerHTML = $$('trc').innerHTML + '<br />' + val;
 }

function isDate(str){
  var re =  /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;  
  // /^(\d{1,2})[\s\.\/-](\d{1,2})[\s\.\/-](\d{4})$/
  if (!re.test(str)) return false;
  return true;
}

function isEmpty(str){
  return (str == null) || (str.length == 0);
}

function isEmail(str){
  if(isEmpty(str)) return false;
  var re = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i
  return re.test(str);
}

function isAlpha(str){
  var re = /[^a-zA-Z]/g
  if (re.test(str)) return false;
  return true;
}

function isFNumeric(str)
{
   var validChars = "-+0123456789.,";
   var isNumber=true;
   var cchar;
   for (i = 0; i < str.length && isNumber == true; i++) 
      { 
      cchar = str.charAt(i); 
      if (validChars.indexOf(cchar) == -1) 
         {
         isNumber = false;
         }
      }
   return isNumber;
   
 }

function isNumeric(str){
  var re = /[\D]/g
  if (re.test(str)) return false;
  return true;
}
// contains characters A-Z, a-z or 0-9 ?
function isAlphaNumeric(str){
  var re = /[^a-zA-Z0-9]/g
  if (re.test(str)) return false;
  return true;
}

function isBetween(str, min, max){
  return (str.length >= min)&&(str.length <= max);
}
function isPhoneNumber(str){
  var re = /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/
  return re.test(str);
}
function isWhitespace(str){
  var re = /[\S]/g
  if (re.test(str)) return false;
  return true;
}
function stripWhitespace(str, replacement){
  if (replacement == null) replacement = '';
  var result = str;
  var re = /\s/g
  if(str.search(re) != -1){
    result = str.replace(re, replacement);
  }
  return result;
}
function formatNumber(str)
{
	str += '';
	x = str.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}



function GetXmlHttpObject()
{ 
    var objXMLHttp=null
    if (window.XMLHttpRequest)
    {
    objXMLHttp=new XMLHttpRequest()

    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
}

//assigns run-time event handler
//parameters:
//    ob:           element (for example returned from getElementById(...)
//    eventName:    eventName wihout 'on' prefix
//    funcRef:      function reference (function name without '()') 
//    example:      
function assignEventListener(ob, eventName, funcRef) {
    if (window.addEventListener) {
        ob.addEventListener(eventName, funcRef, false);
    }
    else {
        ob.attachEvent('on' + eventName, funcRef);
    }
}  

function ShowPopupDlg(url, name, width, height, resize )
{
   
  //IE 
  var returnValue;
  if (window.showModalDialog)
  {
    if (resize == "true" || resize == "yes" || resize == "1") {
       returnValue = window.showModalDialog(url ,name,
        "center:no;edge:raised;resizable:yes;scroll:yes;status:no;dialogTop:0;dialogLeft:0;dialogWidth=" + width + "px;dialogHeight=" +height + "px")
    
    }
    else {
       returnValue = window.showModalDialog(url ,name,
        "center:no;edge:raised;resizable:no;scroll:yes;status:no;dialogTop:0;dialogLeft:0;dialogWidth=" + width + "px;dialogHeight=" +height + "px")
    }
      return returnValue;
  }
  else
  {
    //Mozilla
    window.top.captureEvents (Event.CLICK|Event.FOCUS)
    //window.top.onclick=IgnoreEvents
    window.top.onfocus=HandleFocus 
    if (resize == "true" || resize == "yes" || resize == "1") {
        winModalWindow = 
            window.open (url, name, "resizable=yes,dependent=yes,scrollbars=yes,top=0,left=0,width="+width+",,height=" + height)
    }
    else {
        winModalWindow = 
            window.open (url, name, "resizable=no,dependent=yes,scrollbars=yes,top=0,left=0,width="+width+";,height=" + height)
    
    
    }
    winModalWindow.focus()
    
  }
}

