﻿
function makeTopFrame() {
    if (window != window.top) {
        top.location.href = location.href;
    }
}
    

/* param examples 
    type: type='text' (a JQuery attribute expression)
    not: .impersonate (a JQuery expression filtering elements)
*/
function focusFirstInput(attributeFilter, notFilter) {
    if (typeof attributeFilter == "undefined") {
        attributeFilter = "type='text'";
    }
    if (typeof notFilter == "undefined") {
        notFilter = ".impersonate";
    }
    var first = JQ(":input[" + attributeFilter + "]:not(" + notFilter + "):first");
    if (first) { 
        try{
            first.focus();
        }
        catch(e){                        
        }                  
    }    
}
                                                           
                


function reportAjaxError(request) {
	alert('A Javascript/AJAX error occurred:\n' + request.statusText);
	//alert(request.responseText);
}



function stopEventBubbling(e) {
    if (!e) var e = window.event;
    if (e.stopPropogation) {
        e.stopPropogation();
    } else {
        e.cancelBubble = true;
    }
}		




function SQ(s) {
    return("'" + s + "'");
}

function DQ(s) {
    return("\"" + s + "\"");
}   



function getX(obj)
{
  return( obj.offsetParent==null ? obj.offsetLeft : obj.offsetLeft+getX(obj.offsetParent) );
}

function getY(obj)
{
  return( obj.offsetParent==null ? obj.offsetTop : obj.offsetTop+getY(obj.offsetParent) );
}





//begin validation
function isEmail(s) {
    if (s.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
        return true;
    else
        return false;
}

function isMonetary(s) {
    if (s.search(/^[0-9\.,$]+$/) != -1)
        return true;
    else
        return false;
}



function isDouble(s) {
    if (s.search(/^[0-9\.,]+$/) != -1)
        return true;
    else
        return false;
}

function isInteger(s) {
    if (s.search(/^[0-9,]+$/) != -1)
        return true;
    else
        return false;
}


function isDate(s) {
    if (s.search(/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d/) != -1)
        return true;
    else
        return false;
}    
//end validation


function trimString(sInString) {
   sInString = sInString.replace( /^\s+/g, "" );// strip leading
   return sInString.replace( /\s+$/g, "" );// strip trailing
}




/* begin from http://www.breakingpar.com/bkp/home.nsf/0/CA99375CC06FB52687256AFB0013E5E9 */
function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function

function getSelectedCheckbox(buttonGroup) {
   // Go through all the check boxes. return an array of all the ones
   // that are selected (their position numbers). if no boxes were checked,
   // returned array will be empty (length will be zero)
   var retArr = new Array();
   var lastElement = 0;
   if (buttonGroup[0]) { // if the button group is an array (one check box is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            retArr.length = lastElement;
            retArr[lastElement] = i;
            lastElement++;
         }
      }
   } else { // There is only one check box (it's not an array)
      if (buttonGroup.checked) { // if the one check box is checked
         retArr.length = lastElement;
         retArr[lastElement] = 0; // return zero as the only array value
      }
   }
   return retArr;
} // Ends the "getSelectedCheckbox" function

function getSelectedCheckboxValue(buttonGroup) {
   // return an array of values selected in the check box group. if no boxes
   // were checked, returned array will be empty (length will be zero)
   var retArr = new Array(); // set up empty array for the return values
   var selectedItems = getSelectedCheckbox(buttonGroup);
   if (selectedItems.length != 0) { // if there was something selected
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) { // Make sure it's an array
            retArr[i] = buttonGroup[selectedItems[i]].value;
         } else { // It's not an array (there's just one check box and it's selected)
            retArr[i] = buttonGroup.value;// return that value
         }
      }
   }
   return retArr;
} // Ends the "getSelectedCheckBoxValue" function

/* end from http://www.breakingpar.com/bkp/home.nsf/0/CA99375CC06FB52687256AFB0013E5E9 */





// return the value of the radio button that is checked
    // return an empty string if none are checked, or
    // there are no radio buttons
    function getRadioCheckedValue(radioObj) {
	    if(!radioObj)
    		return "";
	    var radioLength = radioObj.length;
	    if(radioLength == undefined)
		    if(radioObj.checked)
    			return radioObj.value;
	    	else
		    	return "";
	    for(var i = 0; i < radioLength; i++) {
		    if(radioObj[i].checked) {
			    return radioObj[i].value;
		    }
	    }
	    return "";
    }
    
    
    
    
    
    
    
    
/* from http://tuckey.org/textareasizer/ */   
function countTextAreaLines(strtocount, cols) {
    var hard_lines = 1;
    var last = 0;
    while ( true ) {
        last = strtocount.indexOf("\n", last+1);
        hard_lines ++;
        if ( last == -1 ) break;
    }
    var soft_lines = Math.round(strtocount.length / (cols-1));
    var hard = eval("hard_lines  " + unescape("%3e") + "soft_lines;");
    if ( hard ) soft_lines = hard_lines;
    return soft_lines;
}
    
