﻿function GetSelectedValue(elementId)
{
    var elem = document.getElementById(elementId);
    var val = elem.options[elem.selectedIndex].value;
    
    return val;
}

function SetSelectedValue(elementId, value)
{
    var elem = document.getElementById(elementId);
    
    for (var i = 0; i < elem.options.length; ++i)
    {
        if (elem.options[i].value != value)
            elem.options[i].selected = false;
        else
            elem.options[i].selected = true;
    }
}

function InArray(needle, arr)
{
    for (var i = 0; i < arr.length; ++i)
    {
        if (arr[i] == needle)
            return i;
    }
    
    return -1;
}

function AssembleQueryStr(params)
{
    var output = "?";
    
    for (var key in params)
    {
        output += key;
        output += "=";
        output += escape(params[key]);
        output += "&";
    }
    
    return output;
}

// Function from: http://snipplr.com/view/799/get-url-variables/
// Read a page's GET URL variables and return them as an associative array.
function GetUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

    for (var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
     
    return vars;
}

/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

// Based on code 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 new Array(curleft,curtop);
    }
    else
        return false;
}

// Trim functions from: http://www.webtoolkit.info/javascript-trim.html
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

