﻿/*
 *  __  __   ____  ____    ___              
 * |  \/  | / ___||  _ \  |_ _| _ __    ___ 
 * | |\/| || |  _ | |_) |  | | | '_ \  / __|
 * | |  | || |_| ||  __/   | | | | | || (__ 
 * |_|  |_| \____||_|     |___||_| |_| \___|
 *  
 * Copyright © 2008, MGP, Inc.
 * All rights reserved.
 * 
 */

if(!MGP) var MGP={};
if(!MGP.Product) MGP.Product={};
if(!MGP.Product.MapOffice) MGP.Product.MapOffice={};

MGP.Product.MapOffice.Utility = {
    formatString: function(inputString, outputPattern, token) {
        var item, patternList, stringBuilder, inputLength, outputString;
        if (!token || !outputPattern) {
            return inputString;
        }
        patternList = outputPattern.split(token);
        inputLength = inputString.length;
        stringBuilder = [];
        for (var i = 0, j = 0, k = 0, l = 0; i < patternList.length; i++) {
            j = patternList[i].length;
            l = j + k;
            if (l > inputLength) {
                if (i < patternList.length) {
                    item = inputString.substring(k, inputString.length);
                    stringBuilder.push(item);
                }
                break;
            }
            item = inputString.substring(k, l);
            if (i == (patternList.length - 1) && l < inputString.length) {
                item += inputString.substring(l, inputString.length);
            }
            stringBuilder.push(item);
            k += j;
        }

        if (stringBuilder.length == 1 && outputPattern.indexOf(token) >= 0) {
            return stringBuilder[0] + token;
        }
        else {
            return stringBuilder.join(token);
        }
    },
    parseForJSON: function(XMLObject) {
        var startIndex, endIndex;

        startIndex = XMLObject.indexOf("{");
        endIndex = XMLObject.lastIndexOf("}") + 1;

        if (endIndex < 2) {
            return "{}";
        }
        else {
            return XMLObject.substring(startIndex, endIndex);
        }
    },
    trimString: function(inputString) {
        return inputString.replace(/^\s+|\s+$/g, "");
    },
    toProperCase: function(inputString) {
        inputString = inputString.toLowerCase();
        return inputString.replace(/^(.)|\s(.)/g, function($1) { return $1.toUpperCase(); });
    },
    isInList: function(list, item) {
        for (var i = 0; i < list.length; i++) {
            if (list[i] == item) {
                return true;
            }
        }
        return false;
    },
    createCookie: function(name, value, days) {
        var expires = "";
        var date = new Date();
        if (days) {
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toGMTString();
        }
        document.cookie = name + "=" + value + expires + "; path=/";
    },
    readCookie: function(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    },
    eraseCookie: function(name) {
        this.createCookie(name, "", -1);
    },
    isWhole: function(s) {
        // Checks that an input string is whole numner. 
        var isWhole_re = /^\s*\d+\s*$/;
        return String(s).search(isWhole_re) != -1
    },
    uniqueArray: function(arr) {
        var test = {};
        return dojo.filter(arr, function(val) {
            return test[val] ? false : (test[val] = true);
        });
    },
    Geoprocess_GetResultIndexByFeatureName: function(results, featureName) {
        var resultIndex = -1;
        for (var i = 0, il = results.length; i < il; i++) {
            if (featureName == results[i].paramName) {
                resultIndex = i;
                break;
            }
        }
        return resultIndex;

    }

}

String.prototype.visualLength = function()
{
    var ruler = document.getElementById("ruler");
    ruler.innerHTML = this;
    return ruler.offsetWidth;
}






