/**
 * Ens diu si es un array l'objecte
 * @param obj
 * @return boolean
 */
function isArray(obj) {
	   if (obj.constructor.toString().indexOf("Array") == -1)
	      return false;
	   else
	      return true;
}
/**
 * Ens diu si la funció existeix
 * @param function_name
 * @return boolean
 */
function function_exists (function_name) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Steve Clay
    // +   improved by: Legaev Andrey
    // *     example 1: function_exists('isFinite');
    // *     returns 1: true
    if (typeof function_name == 'string'){
    	bTrueFalse = false;
    	bTrueFalse = typeof this.window[function_name] == 'function';
    	if (!bTrueFalse) bTrueFalse = typeof parent.window[function_name] == 'function';
        return (bTrueFalse);
    } else{
        return (function_name instanceof Function);
    }
}
/**
 * Format de la data
 * @param fechaHora
 * @return string
 */
function formatData(fechaHora){
	fechaHora = fechaHora.split(' ');
	if (fechaHora[1] == undefined) fechaHora[1] = '';
	fecha = fechaHora[0].split('-');
	return (fecha[2]+'-'+fecha[1]+'-'+fecha[0].substring(2)+' '+fechaHora[1]);
}

/**
 * Emula el isset de php
 * @param varname
 * @return boolen
 */
function isset(var_name)  {
	  if(typeof( window[ var_name ] ) != "undefined") return true;
	  else return false;
	}
/**
 * Emula el trim de php
 * @param stringToTrim
 * @return
 */
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
/**
 * Emula el ltrim de php
 * @param stringToTrim
 * @return
 */
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
/**
 * Emula el rtrim de php
 * @param stringToTrim
 * @return
 */
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}
/**
 * Emula el format_number de php
 * @param pnumber
 * @param decimals
 * @return
 */
function format_number(pnumber, decimals)
{
	if (pnumber.indexOf(','))
		pnumber = pnumber.replace(/,/g, '.');
	if (isNaN(pnumber)) { return 0};
	if (pnumber=='') { return 0};
	var snum = new String(pnumber);
	var sec = snum.split('.');
	var whole = parseFloat(sec[0]);
	var result = '';
	
	if(sec.length > 1){
		var dec = new String(sec[1]);
		dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));
		dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));
		var dot = dec.indexOf('.');
		if(dot == -1){
			dec += '.'; 
			dot = dec.indexOf('.');
		}
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	} else{
		var dot;
		var dec = new String(whole);
		dec += '.';
		dot = dec.indexOf('.');		
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	}	
	return result;
}

/**
 * Emula el in_array
 * @param needle
 * @param haystack
 * @param argStrict
 * @return
 */
function in_array (needle, haystack, argStrict) {
    // Checks if the given value exists in the array  
    // 
    // version: 910.912
    // discuss at: http://phpjs.org/functions/in_array
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: vlado houba
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
    // *     returns 2: false
    // *     example 3: in_array(1, ['1', '2', '3']);
    // *     returns 3: true
    // *     example 3: in_array(1, ['1', '2', '3'], false);
    // *     returns 3: true
    // *     example 4: in_array(1, ['1', '2', '3'], true);
    // *     returns 4: false
    var key = '', strict = !!argStrict;

    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        if (typeof(needle)=='string') {
            str = haystack.toString();
            alert (str+'-'+needle);
            return (str.search(needle) !== false);
        }

        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }

    return false;
}
/**
 * Emula el intval de php
 *  
 * @param mixed_var
 * @param base
 * @return
 */
function intval (mixed_var, base) {
    // Get the integer value of a variable using the optional base for the conversion  
    // 
    // version: 910.813
    // discuss at: http://phpjs.org/functions/intval    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: stensi
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Matteo
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)    // *     example 1: intval('Kevin van Zonneveld');
    // *     returns 1: 0
    // *     example 2: intval(4.2);
    // *     returns 2: 4
    // *     example 3: intval(42, 8);    // *     returns 3: 42
    // *     example 4: intval('09');
    // *     returns 4: 9
    // *     example 5: intval('1e', 16);
    // *     returns 5: 30    var tmp;
 
    var type = typeof( mixed_var );
 
    if (type === 'boolean') {        return (mixed_var) ? 1 : 0;
    } else if (type === 'string') {
        tmp = parseInt(mixed_var, base || 10);
        return (isNaN(tmp) || !isFinite(tmp)) ? 0 : tmp;
    } else if (type === 'number' && isFinite(mixed_var) ) {        return Math.floor(mixed_var);
    } else {
        return 0;
    }
}

