/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
notificationType = {
    INFO : {
        css: 'notificationBlue',
        fade: true
    },
    SUCCESS : {
        css: 'notificationGreen',
        fade: true
    },
    FAILURE : {
        css: 'notificationRed',
        fade: false
    }
}

function redirect(to){
    return document.location.href=to;
}

function get_url_param(name){
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    if( results == null )    return "";
    else return results[1];
}

function createCookie(name,value,days) {
    var expires = "";

    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toGMTString();
    }

    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

function showMsg(containerId, fadeDuration)
{
    var container = Ext.get(containerId);
    var type = notificationType[readCookie('__mType')];
    var message = readCookie('__mText');
        
    eraseCookie('__mText');
    eraseCookie('__mType');
    
    if(container != null && type != null)
    {
        for(nt in notificationType){
            if(container.hasClass(nt.css))
                container.removeClass(nt.css);
        }
        
        container.addClass(type.css);
        container.dom.innerHTML = message;
        container.fadeIn({
            duration: fadeDuration
        });

        if(type.fade){
            setTimeout("hideMsg('"+containerId+"', "+fadeDuration+")", 5);
        }
    }

}

function showMsg(message, type, containerId, fadeDuration)
{
    var container = Ext.get(containerId);

    if(container != null && type != null)
    {
        for(nt in notificationType){
            if(container.hasClass(nt.css))
                container.removeClass(nt.css);
        }

        container.addClass(type.css);
        container.dom.innerHTML = message;
        container.fadeIn({
            duration: fadeDuration
        });

        if(type.fade){
            setTimeout("hideMsg('"+containerId+"', "+fadeDuration+")", 5);
        }
    }

}

function hideMsg(containerId, fadeDuration)
{
    var container = Ext.get(containerId);
    if(container != null)
    {
        container.fadeOut({
            duration: fadeDuration
        });
    }
}

function popUpProperties(inobj) {
    op = window.open();
    op.document.open('text/plain');
    for (objprop in inobj) {
        op.document.write(objprop + ' => ' + inobj[objprop] + '\n');
    }
    op.document.close();
}

function winUnload(e)
{
    //IE
    if(!document.all) {
        window.open('goodbye.html', "logout","menubar=no,width=400,height=200,toolbar=no,status=no,resizable=no,titlebar=no,scrollbars=no,location=no,directories=no", false);
    }

    //FireFox
    if(!document.getElementById){
        window.open('goodbye.html', "logout","menubar=no,width=400,height=200,toolbar=no,status=no,resizable=no,titlebar=no,scrollbars=no,location=no,directories=no", false);
    }
}

function setActiveLink(linkId, cssClass, sideId, imageClass){
    var link = Ext.get(linkId);
    if(link != null)
        link.addClass(cssClass);

    var side = Ext.get(sideId);
    if(side != null)
        side.addClass(imageClass);
}

function hoverIn(mainId, mainClass, sideId, sideClass){
    addClass(mainId, mainClass);
    addClass(sideId, sideClass);
}

function hoverOut(mainId, mainClass, sideId, sideClass){
    removeClass(mainId, mainClass);
    removeClass(sideId, sideClass);
}

function addClass(id, cssClass){
    var container = Ext.get(id);
    if(container != null && !container.hasClass(cssClass))
        container.addClass(cssClass);
}

function removeClass(id, cssClass){
    var container = Ext.get(id);
    if(container != null && container.hasClass(cssClass))
        container.removeClass(cssClass);
}

function setUserFName(containerId){
    var container = Ext.get(containerId);
    var user = Ext.decode(readCookie('__snupU'));
    container.dom.innerHTML = "Hello " + user.firstName + "!";
}
 
function SHA1(msg) {
    /**
*
*  Secure Hash Algorithm (SHA1)
*  http://www.webtoolkit.info/
*
**/  
 
    function rotate_left(n,s) {
        var t4 = ( n<<s ) | (n>>>(32-s));
        return t4;
    };
 
    function lsb_hex(val) {
        var str="";
        var i;
        var vh;
        var vl;
 
        for( i=0; i<=6; i+=2 ) {
            vh = (val>>>(i*4+4))&0x0f;
            vl = (val>>>(i*4))&0x0f;
            str += vh.toString(16) + vl.toString(16);
        }
        return str;
    };
 
    function cvt_hex(val) {
        var str="";
        var i;
        var v;
 
        for( i=7; i>=0; i-- ) {
            v = (val>>>(i*4))&0x0f;
            str += v.toString(16);
        }
        return str;
    };
 
 
    function Utf8Encode(string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
 
        for (var n = 0; n < string.length; n++) {
 
            var c = string.charCodeAt(n);
 
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
 
        }
 
        return utftext;
    };
 
    var blockstart;
    var i, j;
    var W = new Array(80);
    var H0 = 0x67452301;
    var H1 = 0xEFCDAB89;
    var H2 = 0x98BADCFE;
    var H3 = 0x10325476;
    var H4 = 0xC3D2E1F0;
    var A, B, C, D, E;
    var temp;
 
    msg = Utf8Encode(msg);
 
    var msg_len = msg.length;
 
    var word_array = new Array();
    for( i=0; i<msg_len-3; i+=4 ) {
        j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 |
        msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3);
        word_array.push( j );
    }
 
    switch( msg_len % 4 ) {
        case 0:
            i = 0x080000000;
            break;
        case 1:
            i = msg.charCodeAt(msg_len-1)<<24 | 0x0800000;
            break;
 
        case 2:
            i = msg.charCodeAt(msg_len-2)<<24 | msg.charCodeAt(msg_len-1)<<16 | 0x08000;
            break;
 
        case 3:
            i = msg.charCodeAt(msg_len-3)<<24 | msg.charCodeAt(msg_len-2)<<16 | msg.charCodeAt(msg_len-1)<<8	| 0x80;
            break;
    }
 
    word_array.push( i );
 
    while( (word_array.length % 16) != 14 ) word_array.push( 0 );
 
    word_array.push( msg_len>>>29 );
    word_array.push( (msg_len<<3)&0x0ffffffff );
 
 
    for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {
 
        for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];
        for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);
 
        A = H0;
        B = H1;
        C = H2;
        D = H3;
        E = H4;
 
        for( i= 0; i<=19; i++ ) {
            temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }
 
        for( i=20; i<=39; i++ ) {
            temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }
 
        for( i=40; i<=59; i++ ) {
            temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }
 
        for( i=60; i<=79; i++ ) {
            temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }
 
        H0 = (H0 + A) & 0x0ffffffff;
        H1 = (H1 + B) & 0x0ffffffff;
        H2 = (H2 + C) & 0x0ffffffff;
        H3 = (H3 + D) & 0x0ffffffff;
        H4 = (H4 + E) & 0x0ffffffff;
 
    }
 
    var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);
 
    return temp.toLowerCase();
 
}
