/**
 * @author Dale Larsen
 * Copyright 2010 Fabuso, LLC
 */
/** 
 * @author dlarsen
 * simplifies the console.log call for firebug and IE developer tools and makes it so if a console is not open, no error is fired.
 */
function log(msg){
   try {
      console.log(msg);
   } catch (err) {
      //msg = msg.truncateString(122);
      //alert('Please open the console. Output was:\n' + msg);
   }
}

var gblMonths = {
   '01': 'January',
   '02': 'February',
   '03': 'March',
   '04': 'April',
   '05': 'May',
   '06': 'June',
   '07': 'July',
   '08': 'August',
   '09': 'September',
   '10': 'October',
   '11': 'November',
   '12': 'December'
}
/**
 * @author Dale Larsen
 * @param {String} bdate
 * Parses the date returned in a blogger rss feed to be human readable
 * example blogger date format '2011-01-17T13:32:00.000-08:00'
 */
function parseBloggerDate(bdate){
   var oDate = bdate.split('T')[0].split('-');
   oDate = gblMonths[oDate[1]] + ' ' + oDate[2] + ', ' + oDate[0];
   return oDate;
}

/**
 * @author Dale Larsen
 * @param {String} bdate
 * Parses the date returned in the date picker onSelect function so it can match the blogger format.
 * example date picker format '02/14/2011'
 */
function parseDatePickerDate(bdate){
   var oDate = bdate.split('/');
   oDate = gblMonths[oDate[0]] + ' ' + oDate[1] + ', ' + oDate[2];
   return oDate;
}

/**
 * @author Dale Larsen
 * @param {String} fullId
 * Parses the post id of a entry.id
 * example id 'tag:blogger.com,1999:blog-662512279704956112.post-1656740436208857075' will return 1656740436208857075
 */
function parseBloggerPostId(fullId){
   return fullId.split('post-')[1];
}

/**
 * @author Dale Larsen
 */
var paramObj = {
   getAllParams: function(str){
   
      if (str) {
         var firstParam = str.split('?')[1];
         var params = [];
         if (firstParam) params = firstParam.split('&');
         
         return params;
      } else {
         return false;
      }
      
   },
   getParam: function(str, paramName){
   
      var qparts = str.split('?');
      if (qparts.length == 0) {
         return false;
      }
      var query = qparts[1];
      if (query) {
         var vars = query.split('&');
         var retValue = '';
         for (var i = 0; i < vars.length; i++) {
            var parts = vars[i].split('=');
            if (parts[0] == paramName) {
               retValue = parts[1];
               break;
            }
         }
         retValue = unescape(retValue);
         retValue.replace(/\+/g, ' ');
         return retValue;
      } else {
         return false;
      }
   },
   setParam: function(str, paramName, pVal){
      var allPs = this.getAllParams(str);
      var pAlreadySet = false;
      for (var i = 0; i < allPs.length; i++) {
         if (allPs[i].split('=')[0] == paramName) {
            pAlreadySet = true;
            break;
         }
      }
      if (!pAlreadySet) {
         str += (!str.match(/\?/) ? '?' : '&') + paramName + '=' + pVal;
      } else {
         str = str.split('?')[0];
         for (var i = 0; i < allPs.length; i++) {
            var useSep = (i == 0) ? '?' : '&';
            if (allPs[i].split('=')[0] == paramName) {
               str += useSep + paramName + '=' + pVal;
            } else {
               str += useSep + allPs[i];
            }
         }
      }
      return str;
   },
   remove: function(str, paramName){
      if (str) {
      
         if (paramName) {
         
            /**
             * TODO: write a remove param script here when I catually need it
             */
         } else {
            return str;
         }
         
      } else {
         return false;
      }
   }
};

String.prototype.setParam = function(paramName, pVal){
   return paramObj.setParam(this, paramName, pVal);
};
String.prototype.getParam = function(paramName){
   return paramObj.getParam(this, paramName);
};
String.prototype.removeParam = function(paramName){//function has not been completed
   var str = this;
   if (str) {
      return paramObj.remove(str, paramName);
   } else {
      return false;
   }
   
};
/**
 * will push to the array obj only if the item value is not already in the array
 * @param {String} item
 * the item arg has to be a String
 */
Array.prototype.pushNoDup = function(item){
   var a = this;
   if (item) {
   
      var hasItem = false;
      for (var i = 0; i < a.length; i++) {
         if (a[i] == item){
            hasItem = true;
            break;
         }
      }
      if (!hasItem){
         a.push(item);
      }
      
   }
   
};

function sortAtoB(a, b){
   return a - b;
}

