/* helpful functions */

/* emulate some php funcs */
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"), "");
}

function strpos(stack, needle, offset){
    var i = stack.indexOf(needle, offset); 
	return i >= 0 ? i : false;
}

function strlen(str){
    return ("" + str).length;
}

/* for xml processing */ 
function getXmlValue(input, start, stop)
{
    var xmlval = "";
    var beg = "";
    var end = "";
    var dt = 0;

    beg = input.indexOf(start);
    end = input.indexOf(stop);

    dt = start.length;

	if ( (beg !== false) && (end !== false) ) {
        xmlval = input.substr(beg + dt, end - beg - dt);
	}

	return xmlval;
}

/* validator extensions */
// allow: a-zA-Z0-9 , - , _ and national chars
function strangeStringProtection(input)
{
    var tsize = input.length;
    var code = "";
    var out  = "";

    var denied = "~`!@#$%^&*()+=[]{};:'\"|\\,./?";
    
    for (var idx = 0; idx < tsize; idx++) 
    {
      code = "" + input.substring(idx, idx + 1);

      if (denied.indexOf(code) == -1) {
        out += code;
      }
    }
    return out;
}

// allow: a-zA-Z0-9 , - and _
function strangeStringProtectionStrict(input)
{
    var out    = "";
    var result = "";
    var dt     = 0;
    
    var regExp = /[a-zA-Z0-9_-]+/;
    result = regExp.exec(input);
    
    if (result !== null)
    {
        dt = result.length;

        for (var i = 0; i < dt; i++) {
            out += result[i];
        }
    }

    return out;
}

// simple client-side validation for file upload
function checkForValidFileExtension(elemVal)
{
    var filePath = elemVal;
    
    if (filePath.indexOf('.') == -1)
        return false;

    var allowedExts = new Array("jpg", "jpeg", "pjpeg", "png");
    var ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();

    for (var i = 0; i < allowedExts.length; i++) {
        if (ext == allowedExts[i])
            return true;
    }

    // not allowed
    return false;
}

// email address quick check
function utilQuickEmailValidatorTest(field_value)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(field_value)) {
		return false;
	}
    
    return true;
}

// allow: 0-9 digts only
function onlyDigitsUtil(input)
{
    var out    = "";
    var result = "";
    var dt     = 0;

    var regExp = /[0-9]+/;
    result = regExp.exec(input);

    if (result !== null)
    {
        dt = result.length;

        for (var i = 0; i < dt; i++) {
            out += result[i];
        }
    }

    return out;
}

// allow: 0-9, space and - chars
function onlyForZipUtil(input)
{
    var out    = "";
    var result = "";
    var dt     = 0;

    // var regExp = /[0-9 -]+/;
    var regExp = /[0-9]+/;
    result = regExp.exec(input);

    if (result !== null)
    {
        dt = result.length;

        for (var i = 0; i < dt; i++) {
            out += result[i];
        }
    }

    return out;
}