﻿/*
    This script file is an effort to centralize BestPlaces common
    Javascript functions into one file.
    --Adam DuVander, November 16, 2007
*/

function calcCounter(textfield, maxnum)
{
  var tfobj = $(textfield);
  var remnum = maxnum - tfobj.value.length;
  return remnum;
}
function updateCounter(textfield, counterfield, maxnum)
{
  var cfobj = $(counterfield);
  var remnum = calcCounter(textfield, maxnum);
  if (remnum <= 0)
  {
    var tfobj = $(textfield);
    tfobj.value = Left(tfobj.value, maxnum);
    remnum = 0;
  }
  if (cfobj.toString() == '[object HTMLTextAreaElement]')
  {
    cfobj.value = remnum;
  }
  else
  {
    cfobj.innerHTML = remnum;
  }
}

/* String functions */
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);
    }
}

/* Object functions */
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

/* Event functions */
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

/* CSS-related functions */

// findPos from: http://www.quirksmode.org/js/findpos.html
function findPos(obj) {
	var curleft = curtop = 0;
	
	if (obj.offsetParent) {
	    do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}
function findTop(obj)
{
    var posarray = findPos(obj);
    return posarray[1];
}
function findLeft(obj)
{
    var posarray = findPos(obj);
    return posarray[0];
}
function getScrollTop()
{
    return document.documentElement.scrollTop || document.body.scrollTop;
}
function setScrollTop(num)
{
    if (document.documentElement.scrollTop && (!document.body.scrollTop))
    {
        document.documentElement.scrollTop = num;
    }
    else
    {
        window.scrollTo(0, num);
        //document.body.scrollTop = num;
    }
}
