// common functions

// char * traslateData(void *value, [void[] *inputArrValues, void[] *outputArrValues])
function translateData() {
  switch (arguments.length) {
    case 3: {
      var value = arguments[0];

      var inputArrValues = arguments[1];
      var outputArrValues = arguments[2];

      break;
    }
    case 2:
    case 1:
    default: {
      value = parseInt(value);

      var inputArrValues = new Array(0, 1);
      var outputArrValues = new Array('no', 'yes');

      break;
    }
  }

  for(var i=0; i<inputArrValues.length; i++) {
    if(value==inputArrValues[i]) {
      return outputArrValues[i];
    }
  }

  return 'none';
}

// format date
function formatDateUStoBR(date) {
  try {
    date = date.toString();
  }
  catch(e) {

  }

  //second argument (true = datetime)
  if(arguments.length==2 && arguments[1]==true) {
    var tmp = date.split(' ');
    var d = tmp[0].split('-');

    var r = d[2] + '/' + d[1] + '/' + d[0] + ' ' + tmp[1];

    tmp = r;
  }
  else {
    var d = date.split('-');

    var tmp = d[2] + '/' + d[1] + '/' + d[0];
  }

  if(tmp.indexOf("undefined") != -1) {
    return '';
  }

  return tmp;
}


/* array prototypes */
// in array
Array.prototype.in_array = function(needle) {
    for(var i=0,n=this.length; i<n; i++) {
        if(this[i] == needle) {
            return true;
        }
    }

    return false;
};


// wordwrap
String.prototype.wordWrap = function(m, b, c){
    var i, j, l, s, r;

    if(m < 1) {
        return this;
    }


    for(i = -1, l = (r = this.split("\n")).length; ++i < l; r[i] += s) {
        for(s = r[i], r[i] = ""; s.length > m; r[i] += s.slice(0, j) + ((s = s.slice(j)).length ? b : "")) {
            j = c == 2 || (j = s.slice(0, m + 1).match(/\S*(\s)?$/))[1] ? m : j.input.length - j[0].length || c == 1 && m || j.input.length + (j = s.slice(m).match(/^\S*/)).input.length;
        }
    }

    return r.join("\n");
};


var Utf8 = {

    // public method for url encoding
    encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // public method for url decoding
    decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {
            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }

        return string;
    }
}

