/**
 * Inits the _spBodyOnLoadFunctionNames array
 * This is a fix due to js errors in some of the bank masterpages
 */

function initNonExistingSpBodyOnLoadFunctionNames() {
    if( typeof( _spBodyOnLoadFunctionNames ) == 'undefined' ) {
	    _spBodyOnLoadFunctionNames = new Array();
    }
}
	
/**
 * Trim a string down to maxLength from start
 *
 * @param textareaElm DOMElement HTML textarea
 * @param start int offset
 * @param maxLength int end
 */
function trimString(textareaElm, start, maxLength) {
    if(textareaElm.value.length > maxLength) {
        textareaElm.value = textareaElm.value.substring(start, maxLength);
    }
}



/** 
 * Get a DOMElement by its class name
 * Kudos to Robert Nyman of http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
 *
 * @param className String CSS class name
 * @param tag String name of tag of which to limit search to 
 * @param elm DOMElement parent node
 */
function getElementsByClassName(className, tag, elm){
    var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
    var tag = tag || "*";
    var elm = elm || document;
    var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    var returnElements = [];
    var current;
    var length = elements.length;
    for(var i=0; i<length; i++){
        current = elements[i];
        if(testClass.test(current.className)){
	        returnElements.push(current);
        }
    }
    return returnElements;
}

/**
 * Adds an onkeydown event handler to textareas that should have a maximum length set
 * 
 * @param wrapperElm DOMElement wrapper (div) around limited textareas, or textarea
 * @param maxLength maximum text length of textarea
 */
function registerLimitedTextArea(txtElmOrWrapper, maxLength) {
    if(!txtElmOrWrapper) {
        return;
    }
    var textareaElms = txtElmOrWrapper.nodeName.toLowerCase() != 'textarea' ? txtElmOrWrapper.getElementsByTagName("textarea") : new Array(txtElmOrWrapper);
    for(var i = 0; i < textareaElms.length; i++) {
        textareaElms[i].onkeyup = function() { trimString(this, 0, maxLength); };
    }
}

/**
 * Registers all textareas that should have limited text length
 */
function registerAllLimitedTextAreas() {
    if(!window.doRegisterLimitedTextAreas) {
        return;
    }
    var maxLength = 100;
    var textareaElms = getElementsByClassName("limited-textarea", null, null); // all wrappers
    if(textareaElms.length <= 0) {
        return;
    }
    if(window.maxNumOfCharsInLimitedTextAreas) {
        maxLength = maxNumOfCharsInLimitedTextAreas; 
    }
    for(var i = 0; i < textareaElms.length; i++) {
        registerLimitedTextArea(textareaElms[i], maxLength);
    }
    
}

/**
 * Submit the finn-bank web form
 */
function finnBankSubmit() {
    var unencodedText = document.getElementById("bankName").value;
    var encodedText = "";
    //To encode whitespaces and the 'Ø' character - use encodeURI
    encodedText = encodeURI(unencodedText);
    var url = window.finnBankUrl ?  window.finnBankUrl : "./finnbank.aspx?bank=";
    window.location = url + encodedText; 
    return false;
}


function userPressedEnter(evnt) {
//var code;
//if (e.which) code = e.which; else code = e.keyCode;
	if(!evnt) {
		evnt = window.event;
	}
    return evnt && ((evnt.keyCode && evnt.keyCode == 13) || (evnt.which && evnt.which == 13));
}


/**
 * onkeydown event handler for finn-bank web part/form. Submits finn-bank web form iff user hits enter key.
 */
function finnBankSubmitOnEnter(evnt) {
    if ((window.doAutoFinnBankSubmit == true) && userPressedEnter(evnt)) { 
        return finnBankSubmit(); 
    }
}

/**
 * Submit the top search form
 * Overrides SP2007's submit
 */
function submitTerraSearch() {
/**
  *_layouts/osssearchresults.aspx?
  */
    window.location = (window.searchUrl ? window.searchUrl : "/Search/results.aspx?k=") + document.getElementById("terra-search-query").value;
    return false;
}

function submitTerraSearchOnEnter(evnt) {
    if(userPressedEnter()) {
        return submitTerraSearch();
    }
}

function submitTerraBankSearch() {
/**
  *_layouts/osssearchresults.aspx?
  */
  //alert("OK");
  if (document.getElementById("terra-search-query").value.length > 0)
  {
  FullURL = document.location.href;
//alert(document.getElementById("terra-search-query").value);
bankSearchURL ="";
searchWord ="";
  componentList = FullURL.split('/');
  redListCheck = componentList[2].split('.');
//alert(redListCheck);
    //alert(window.searchUrl);
    var SearchURLNmb = 0;
    if (redListCheck[0] == "red") 
    {
//	alert("OK2");
	SearchURLNmb = 3;
        bankSearchURL = componentList[0]+"//"+componentList[2]+"/Search/results.aspx?k=";
    }
    else 
    {
    SearchURLNmb = 4;
        bankSearchURL = componentList[0]+"//"+componentList[2]+"/Search/results.aspx?k=";
    }
    searchWord = document.getElementById("terra-search-query").value;

    if(componentList[3] == "Search" || (componentList[4] == "Search" && navigator.appName == "Microsoft Internet Explorer")) {
    document.forms[0].action = bankSearchURL + searchWord;
    document.forms[0].submit();
    }
    else {
        this.location.href = bankSearchURL + searchWord;
        sleep(3);
    }
    window.location.reload( bankSearchURL + searchWord );
    }
    return false;
    
}
/*function userPressedEnterFF(e) {
var code;
if (e.which) code = e.which; else code = e.keyCode;
	if(code == 13) {
		return true;
	}
    else {
        return false;
    }
}*/
function submitTerraBankSearchOnEnter(e) {
    if(userPressedEnter(e)) {
        return submitTerraBankSearch();
    }
}
/**
 * Redirect to the bank login
 */
function loginNettBank()
{
    var bankId = 0;  
    if(document.forms[0].n_bank != null)
        bankId = document.forms[0].n_bank.value;
    //TODO: Endre før prodsetting https://www2.portalbank.no/bsl/do/slogin/Run?n_bank=
    var url = "https://www2.portalbank.no/bsl/do/slogin/Run?n_bank=" + bankId;

    window.location = url;

}
function submitLoginNettBank(e) {
    if(userPressedEnter(e)) {
        return loginNettBank();
    }
}
