// Trim Functions
// ----------------------------------------------------
if( typeof(loadPage)=='undefined' ){
  function trim(str) {
    return str.replace(/^\s+|\s+$/g,"");
  }
}
if( typeof(ltrim)=='undefined' ){
  function ltrim(str) {
    return str.replace(/^\s+/,"");
  }
}
if( typeof(rtrim)=='undefined' ){
  function rtrim(str) {
    return str.replace(/\s+$/,"");
  }
}

// Validate & Submit
// ----------------------------------------------------
if( typeof(wbForm)=='undefined' ){
  function submitform(task,skipCheck){
    var formName = 'comMember_form';
    if(task&&task.split(/\|/).length==2){
      formName = task.split(/\|/)[0];
      task = task.split(/\|/)[1];
    }
    var form = document.getElementById(formName);
    if(!task)task = form.task.value;
    if( task.match(/delete$/) != null )
      if(!confirm('Are you sure you wish to delete this Record?'))
        return false;
    if( task.match(/cancel$/) == null ){
      if( skipCheck != true ){
        for(var i=0;i < formValidate.length;i++){
          var check = trim(form[ formValidate[i][0] ].value);
          if( form[ formValidate[i][0] ].type == 'checkbox' )
            if( !form[ formValidate[i][0] ].checked )
              check = '';
          if( check.match(formValidate[i][1]) == null ) {
            alert(formValidate[i][2]);
            return false;
          }
        }
      }
    }
    form.task.value=task;
    form.submit();
    return false;
  }
}

// Load / Redirect Page
// ----------------------------------------------------
if( typeof(loadPage)=='undefined' ){
  function loadPage( url ){
    if( url != '' )document.location=url;
  }
}

// New Window
// ----------------------------------------------------
if( typeof(newWindow)=='undefined' ){
  function newWindow(url, width, height) {
    if( url.length && width && height )
      window.open( url, 'new_window', 'scrollbars=1,width='+width+',height='+height );
    if( url.length )
      window.open( url );
    return false;
  }
}

// Clean Number
// ----------------------------------------------------
if( typeof(cleanNumber)=='undefined' ){
  function cleanNumber( input ) {
    var myChar, i, b, temp = ''; input = String( input );
    var Nums = new Array('0','1','2','3','4','5','6','7','8','9','.');
    for (var i=0; i < input.length; i++) {
      myChar = input.substring(i,i+1);
      for (var b=0; b < Nums.length; b++)
        if (myChar == Nums[b]) temp += myChar;
    }
    return temp;
  }
}

// Validate Email Address
// ----------------------------------------------------
if( typeof(checkEmail)=='undefined' ){
  function checkEmail( myObj ){
    var str=trim(myObj.value);
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    if (filter.test(str)) {
      if( document.getElementById('comMember_form').website_url )
        if( trim(document.getElementById('comMember_form').website_url.value) == '' ){
          document.getElementById('comMember_form').website_url.value = myObj.value.replace( /^.*\@/, '' );
          formatURL( document.getElementById('comMember_form').website_url );
        }
    } else {
      alert("Please input a valid email address!");
      myObj.focus();
    }
    return;
  }
}

// Format Phone Field
// ----------------------------------------------------
if( typeof(formatPhone)=='undefined' ){
  function formatPhone( myObj ) {
    var temp = myObj.value.replace(/\-|\s|\.|\(|\)/g,'');
    if( temp.match( /\d{10}/ ) ) {
      var NewVal = ''; var c = 0;
      for (var i=0; i < temp.length; i++) {
        if (i == 0) { NewVal = "("; };
        if (i == 3) { NewVal = NewVal + ") "; };
        if (i == 6) { NewVal = NewVal + "-"; };
        if (i == 10) { NewVal = NewVal + " "; };
        NewVal = NewVal + temp.substring(i,i+1);
      };
      myObj.focus();
      myObj.value = NewVal;
    }
    return true;
  }
}

// Format URL Field
// ----------------------------------------------------
if( typeof(formatURL)=='undefined' ){
  function formatURL( myObj ){
    var value = trim(myObj.value);
    if( value.length ){
      if( value.match( /^http|ftp/ ) == null )
        if( value.match( /^\w+\.\w+\/{0,1}$/ ) != null )
          value = 'www.'+value;
      if( value.match( /^http|ftp/ ) == null )
        value = 'http://'+value;
      if( value.match( /\.com$|\.org$|\.net$|\.us$/ ) != null )
        value = value+'/';
    }
    myObj.value = value;
  }
}

// Format Date Field
// ----------------------------------------------------
if( typeof(formatDate)=='undefined' ){
  function formatDate( myObj, format ){
    var value = trim(myObj.value);
    if( value.length ){
      if( value.match( /^\d{4,6}/ ) != null ){ //mmddyyyy
        if( value.length > 6 )
          value = value.replace( /(\d{2})(\d{2})(\d{4})/, "$3-$1-$2" );
        else
          value = value.replace( /(\d{2})(\d{2})(\d{2})/, "20$3-$1-$2" );
      } else if( value.match( /\d{2}.\d{2}.\d{4}/ ) != null ){ //mm-dd-yyyy
        value = value.replace( /(\d{2}).(\d{2}).(\d{4})/, "$3-$1-$2" );
      } else if( value.match( /\d{1,2}.\d{1,2}.\d{4}/ ) != null ){ //m-d-yyyy
        value = value.replace( /(\d{1,2}).(\d{1,2}).(\d{4})/, "$3-$1-$2" );
      } else if( value.match( /\d{1,2}.\d{1,2}.\d{2}/ ) != null ){ //m-d-yy
        value = value.replace( /(\d{1,2}).(\d{1,2}).(\d{2})/, "20$3-$1-$2" );
      } else {
        alert("Please Correct the Date Format:\n  yyyy-mm-dd\n  mm-dd-yyyy\n  m-d-yy");
        myObj.focus();
      }
    }
    myObj.value = value;
  }
}

// Format Price
// ----------------------------------------------------
if( typeof(formatPrice)=='undefined' ){
  function formatPrice( myObj, format ) {
    var temp = cleanNumber( myObj.value );
    var pre = temp; var post = "00";
    for (var i=(temp.length-1); i >= 0; i=i-1) {
      if (temp.substring(i,i+1) == '.') {
        pre = temp.substring(0,i);
        if (i > (temp.length-3))
          post = temp.substring(i+1,temp.length) + "0";
        else
          post = temp.substring(i+1,i+3);
      }
    }
    var NewVal = ''; var c = 0;
    for (var i=(pre.length-1); i >= 0; i=i-1) {
      if (c > 2) { NewVal = "," + NewVal; c = 0; };
      NewVal = pre.substring(i,i+1) + NewVal; c++;
    }
    if( format == 1 ){
      NewVal = "$" + NewVal + "." + post;
    } else if( format == 1 ){
      NewVal = NewVal + ( post > 0 ? "." + post : '' );
    } else if( format == 2 ){
      NewVal = NewVal + "." + post;
    } else {
      NewVal = "$" + NewVal + ( post > 0 ? "." + post : '' );
    }
    myObj.value = NewVal;
  }
}

// Get Select List Box Text
// ----------------------------------------------------
if( typeof(getSelectedIndexText)=='undefined' ){
  function getSelectedIndexText( form_id, field_id ) {
    return document.forms[ form_id ][ field_id ].options[ document.forms[ form_id ][ field_id ].selectedIndex ].text;
  }
}

// Get Select List Box Value
// ----------------------------------------------------
if( typeof(getSelectedIndexValue)=='undefined' ){
  function getSelectedIndexValue( form_id, field_id ) {
    return document.forms[ form_id ][ field_id ].options[ document.forms[ form_id ][ field_id ].selectedIndex ].value;
  }
}

// Filter Select List Box
// ----------------------------------------------------
if( typeof(filterSelectList)=='undefined' ){
  var filterSelectListOpt = Array();
  var filterSelectListBox = Array();
  function filterSelectList( myObj, filter_str ){
    if( filterSelectListOpt[ myObj.id ] == null )
      filterSelectListOpt[ myObj.id ] = myObj.options[ myObj.selectedIndex ].value;
    if( !filterSelectListBox[ myObj.id ] ){
      filterSelectListBox[ myObj.id ] = Array();
      for( var i=0; i < myObj.options.length; i++ )
        filterSelectListBox[ myObj.id ][i] = myObj.options[i];
    }
    while( myObj.options.length ) myObj.options[0] = null;
    var newSelectList = Array(), sIndex = 0;
    for( var i=0; i < filterSelectListBox[ myObj.id ].length; i++ )
      if( filterSelectListBox[ myObj.id ][ i ].text.match( filter_str ) )
        newSelectList.push( filterSelectListBox[ myObj.id ][ i ] );
    for( var i=0; i < newSelectList.length; i++ ){
      myObj.options[i] = newSelectList[i];
      if( myObj.options[i].value == filterSelectListOpt[ myObj.id ] )
        sIndex = i;
    }
    myObj.options.selectedIndex = sIndex;
  }
}

// Limit Input Length in TextArea Objects
// ----------------------------------------------------
if( typeof(limitInput)=='undefined' ){
  function limitInput(fieldObj,maxChars,reportField,outPut) {
    var result = true;
    if (fieldObj.value.length >= maxChars) {
      fieldObj.value = fieldObj.value.substring(0,maxChars);
      result = false;
    }
    if (reportField != '')
      document.getElementById(reportField).innerHTML = sprintf(outPut,(maxChars - fieldObj.value.length));
    if (window.event) window.event.returnValue = result;
    return result;
  }
}

// Copy Object Contents to Clipboard
// ----------------------------------------------------
if( typeof(copyToCB)=='undefined' ){
  function copyToCB( myObj ){
    myObj.select();
    if(document.all){
      txt=myObj.createTextRange();
      txt.execCommand("Copy");
    } else {
      alert('Right Click on the Highlighted Text and Select COPY');
    }
  }
}

// This code is in the public domain.
// Feel free to link back to http://jan.moesen.nu/
// source: http://jan.moesen.nu/code/javascript/sprintf-and-printf-in-javascript/
// ----------------------------------------------------
if( typeof(sprintf)=='undefined' ){
  function sprintf() {
    if (!arguments || arguments.length < 1 || !RegExp) return;
    var str = arguments[0];
    var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
    var a = b = [], numSubstitutions = 0, numMatches = 0;
    while (a = re.exec(str)) {
      var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
      var pPrecision = a[5], pType = a[6], rightPart = a[7];
      numMatches++;
      if (pType == '%'){
        subst = '%';
      } else {
        numSubstitutions++;
        if (numSubstitutions >= arguments.length)
        {
          alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
        }
        var param = arguments[numSubstitutions];
        var pad = '';
               if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
          else if (pPad) pad = pPad;
        var justifyRight = true;
               if (pJustify && pJustify === "-") justifyRight = false;
        var minLength = -1;
               if (pMinLength) minLength = parseInt(pMinLength);
        var precision = -1;
               if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
        var subst = param;
               if (pType == 'b') subst = parseInt(param).toString(2);
          else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
          else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
          else if (pType == 'u') subst = Math.abs(param);
          else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
          else if (pType == 'o') subst = parseInt(param).toString(8);
          else if (pType == 's') subst = param;
          else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
          else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
      }
      str = leftpart + subst + rightPart;
    }
    return str;
  }
}

// Parse URL into Variables
// ----------------------------------------------------
if( typeof(parseVarStr)=='undefined' ){
  function parseVarStr( varStr ) {
    if (varStr.length == 0)
      return;
    var nPos = 0;
    var sChar = "";
    var sWord = "";
    var nMaxVars = 0;
    var sVarLine = "";
    var sName = new Array();
    var sValue = new Array();
    // Parse
    while (nPos < varStr.length) {
      sChar = varStr.substring(nPos, nPos + 1);
      if (sChar == "=") {
        sName[nMaxVars] = sWord;
        sWord = "";
      } else if (sChar == "&") {
        sValue[nMaxVars] = sWord;
        sWord = "";
        nMaxVars++;
      } else if (nPos == varStr.length - 1) {
        sWord += varStr.substring(nPos, nPos + 1);
        sValue[nMaxVars] = sWord;
        sWord = "";
        nMaxVars++;
      } else {
        sWord += sChar;
      }
      nPos++;
    }
    return new Array( sName, sValue );
  }
}
