/**
 * Open a Live Chat po-up window
 *
 * @param string 	url
 */
function startLiveChat(url)
{
	window.open(url, "rf_live_chat", "status=no,titlebar=no,toolbar=no,location=no,menubar=no,resizeable=no,scrollbars=no,screenX=50,screenY=100,width=455,height=370");
}

/**
 * Checks if a value exists in an array
 *
 * @param string 	needle
 * @param array		haystack
 */
function in_array(needle, haystack)
{
    for (var i = 0; i < haystack.length; i++)
    {
        if (haystack[i] == needle)
        {
            return true;
        }
    }
    return false;
}

/**
 * Checks if a key exists in an array
 *
 * @param string 	key needle
 * @param array		haystack
 */
function array_key_exists ( key, search )
{

	if( !search || (search.constructor !== Array && search.constructor !== Object) )
    {
        return false;
    }

    return key in search;
}

/**
 * Convert an array to string
 *
 * @param array		array
 * @param string 	string_glue
 */
function array2String(array, string_glue)
{
	var string = "";

	for (var i = 0; i < array.length; i++)
	{
		if(i == 0)
		{
			string = string + array[i];
		}
		else
		{
			string = string + string_glue + array[i];
		}
	}

	return string;
}

/**
 * Display the hidden element
 *
 * @param string	element_id
 */
function displayElement(element_id)
{
	if(document.getElementById(element_id))
	{
		document.getElementById(element_id).style.display = "";
	}

	return false;
}

/**
 * Hide an element
 *
 * @param string	element_id
 */
function hideElement(element_id)
{
	if(document.getElementById(element_id))
	{
		document.getElementById(element_id).style.display = "none";
	}
	return false;
}

function str_replace (search, replace, subject, count) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni
    // +   improved by: Philip Peterson
    // +   improved by: Simon Willison (http://simonwillison.net)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   bugfixed by: Anton Ongson
    // +      input by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    tweaked by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Oleg Eremeev
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Oleg Eremeev
    // %          note 1: The count parameter must be passed as a string in order
    // %          note 1:  to find a global variable in which the result will be given
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
    // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
    // *     returns 2: 'hemmo, mars'
 
    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
            f = [].concat(search),
            r = [].concat(replace),
            s = subject,
            ra = r instanceof Array, sa = s instanceof Array;
    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }
 
    for (i=0, sl=s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j=0, fl=f.length; j < fl; j++) {
            temp = s[i]+'';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length-s[i].length)/f[j].length;}
        }
    }
    return sa ? s : s[0];
}