﻿// JScript File

function numberFilter(e, txt, maxlength) {
    if(e==null) e = window.event;
    var charCode = ( e.which ) ? e.which : e.keyCode;
    
    var isNumber = (( charCode >= 48 && charCode <= 57)
                       || (charCode >= 96 && charCode <= 105) ); // numbers
        
    var isControl =         
            (charCode == 8 // backspace
            || charCode == 46 // delete
            || charCode == 36 // home
            || charCode == 35 // end
            || charCode == 37 // left
            || charCode == 39 // right
            );
          
    if(!(isControl || (isNumber && txt.value.length < maxlength)))
    {  
        if (e.preventDefault) e.preventDefault();
        else e.returnValue = false;	    
	}
}

function assemble(spanId, domain, user, linkName)
{
    var addr = user;
    addr += '\u0040';
    addr += domain;
    
    if(linkName == null || linkName == '') linkName = addr;
    
    var prefix = '\u006d\u0061\u0069';
    prefix += '\u006c\u0074\u006f';        
    
    var link = '<a href="'+prefix+':'+addr+'">'+linkName+'</a>';
    
    var span = document.getElementById(spanId);
    if(span != null)
    {
        //span.innerHTML = link;
        $(span).replaceWith(link);
    }
}

function toggleSrc(img, postfix)
{
    var src = img.src;
    var extensionStart = src.lastIndexOf('.');
    var name = src;
    var extension = '';
    if (extensionStart >= 0)
    { 
        extension = src.substr(extensionStart);    
        name = src.substr(0, extensionStart);
    }
    
    if(name.length > postfix.length)
    {
        if(name.lastIndexOf(postfix) == name.length-postfix.length)
        {
            img.src = name.substr(0,name.length-postfix.length) + extension;
        }
        else
        {
            img.src = name + postfix + extension;
        }
    }
    else
    {
        img.src = name + postfix + extension;
    }
}

function openPopup(url, width, height, windowName, resizable, scrollbars, menubar, toolbar, statusbar)
{
    if(width == null) width = 400;
    if(height == null) height = 300;
    if(windowName == null) windowName = 'popup';         
    
    var settings = 'width='+width+', height='+height;
    if(resizable != null) settings += ',resizable=' + (resizable ? '1' : '0');
    if(scrollbars != null) settings += ',scrollbars=' + (scrollbars ? '1' : '0');
    
    // menubar must always be displayed, otherwise Firefox won't take into account the specified width and height
    // TODO remove menubar parameter
    settings += ',menubar=1';
    
    if(toolbar != null) settings += ',toolbar=' + (toolbar ? '1' : '0');
    if(statusbar != null) settings += ',status=' + (statusbar ? '1' : '0');
                
    var wnd = window.open(url, windowName, settings);    
    wnd.focus();
    
    return wnd;
}

function preloadImage(imageUrl)
{
    var img = new Image();
    img.src = imageUrl;
}

// error handler for ajax call errors
function requestFailed(error) {
    var stackTrace = error.get_stackTrace();
    var message = error.get_message();
    var statusCode = error.get_statusCode();
    var exceptionType = error.get_exceptionType();
    var timedout = error.get_timedOut();

    var msg = "Stack Trace: " + stackTrace + "\n" +
                "Service Error: " + message + "\n" +
                "Status Code: " + statusCode + "\n" +
                "Exception Type: " + exceptionType + "\n" +
                "Timedout: " + timedout;
    alert(msg);
}
