﻿





//Messages
function displayAlert(message)
{
    window.alert(message);
}


//form formating
function focusSelect(e)
{
    if (window.event) 
        e = window.event;  
    
    var srcEl = GetEventElement(arguments);
	srcEl.select();
}

function focusSelect(e)
{
    if (window.event) 
        e = window.event;  
    
    var srcEl = GetEventElement(arguments);
	srcEl.select();
}

function blurInteger()
{
	var e = GetEventElement(arguments);	
	e.value = formatInteger(e.value);
	onBlurEx(e)
}

function blurFloatInRange(ev, prec, min, max)
{
	var e = GetEventElement(arguments);	
	if (floatInRange(e.value, prec, min, max) == true) 
	{
		e.value = formatDouble(e.value, prec);
	}
	else
		e.value = '';
	onBlurEx(e)
}

// call checkMinMax() using the onblur event, or wherever it makes sense.
// include a maxValue and/or a minValue attribute in the element as well as a title element.
function checkMinMax()
{
	el = GetEventElement(arguments);
		
	var title = el.title;
	var value = parseFloat(el.value);
	var maxValue = parseFloat(el.maxValue);
	

	if(el.minValue != 'undefined')
	{
		var minValString = el.minValue;
		if(value < parseFloat(minValString))
		{
			displayAlert(title + " must be at least " + minValString + ".");
			el.focus();
		}
	}
	
	var maxValString;
	if(el.maxValue != 'undefined')
	{
		maxValString = el.maxValue;
	}
	else
	{
	    maxValString = 2147483647;
	}
	
	if(value > parseFloat(maxValString))
	{
		displayAlert(title + " must not exceed " + maxValString + ".");
		el.focus();
	}
}


//formating
function stripChars(s, chars)
{	
	var rx = new RegExp("["+chars+"]",'g');  
	return s.replace(rx,"");
}

function stripNonDecimals(s)
{	
	return stripChars(s, "^\\d");
}

function fitRight(s, len, pad)
{
	s=s+"";
	var rc = s.substr(0, len);
	while(rc.length < len)
		rc = rc + pad;
	return rc;
}

function fitLeft(s, len, pad)
{
	s=s+"";
	var rc = s.substr(0, len);
	while(rc.length < len)
		rc = pad + rc;
	return rc;
}

function trim(s) 
{
	s=s+"";
    var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    return (m == null) ? "" : m[1];
}
function rtrim(s) 
{
	s=s+"";
	var objRegExp = /^([\w\W]*)(\b\s*)$/;

	if(objRegExp.test(s)) 
	{
		s = s.replace(objRegExp, '$1');
	}
	return s;
}

function ltrim(s) 
{
	s=s+"";
	var objRegExp = /^(\s*)(\b[\w\W]*)$/;
    if(objRegExp.test(s)) 
    {
       s = s.replace(objRegExp, '$2');
    }
	return s;
}
function formatInteger(s)
{
	s = trim(s);
	var sign = s.indexOf('-') == 0 ? "-" : "";
	var rc = stripChars(s, '^\\d');
	if (rc.length > 0)
		rc = sign + rc;
	return rc;
}
function floatInRange(f, prec, min, max)
{	 
	var ff = formatDouble(f, prec);	
	if ( ff >= min  && ff <= max && ff != '')		
		return true;
	else
		return false;
}

function formatDouble(s, prec)
{
	s=s+"";
	s = trim(s);
	var sign = (s.indexOf('-') == 0) ? "-" : "";
	var rc = stripChars(s, '^\\d.');
	rc = new String(Math.round(new Number(rc) * (1*(Math.pow(10,3)))) / (1*(Math.pow(10,3))));
	
	if (rc.length > 0)
	{
		rc = sign + rc;
		//rc = Math.round(rc * (1*10^prec)) / (1*10^prec)
		var left = rc;
		var right = "";
		if (rc.indexOf('.') > -1)
		{
			var sp = rc.split('.');
			left = sp[0];
			right = sp[1];
		}
		
		if (prec == 0)
			rc = left;
		else
			rc = left + "." + fitRight(right, prec, "0");
	}
	return rc;
}

//javascript core
function GetEventElement(arguments_sent)
{
    var args = (typeof arguments_sent[0]=='object')?arguments[0]:arguments;
    var e;
    
    if (window.event) 
        e = window.event; 
    else if (args.length > 0)
        e = args[0];
    else 
        return null;
        
    return e.srcElement? e.srcElement : e.target; 
}

function getElement(id)
{
	return document.getElementById(id);
}

function getElementsByName(name)
{
	return document.getElementsByName(name);
}


function getParentElement(id)
{
	return parent.document.getElementById(id);
}

Object.extend = function(destination, source) 
{
    for (property in source) 
    {
        destination[property] = source[property];
    }

    return destination;
}

// util functions

function getRandomNumber(maxNumber)
{
	if (Math.random && Math.floor)
	{
		var randomNumber = Math.floor(Math.random() * maxNumber);
		return randomNumber;
	}
}


function onBlurEx(elem)
{
//not for Organizer users: This function is "overridden" in work.js
}

function loadjscssfile(filename)
{
    
  var headID = document.getElementsByTagName("head")[0];
  var newScript = document.createElement('script');
  newScript.type = 'text/javascript';
  newScript.onload=simLoaded;
  newScript.src = filename;
  headID.appendChild(newScript);
}

function doWhenEnterPressed(evn) 
{
    var enterWasPressed = false;
    if (window.event && window.event.keyCode == 13) { // IE
        enterWasPressed = true;
    } else if (evn && (evn.keyCode == 13 || evn.which == 13 )) { // FF
        enterWasPressed = true;
    }
    return enterWasPressed;
}


