Ext.BLANK_IMAGE_URL = 'Resources/ExtJs/Resources//images/default/s.gif';

var Auth = new Auth();
var strategyListDataSet;
var LoginForm;
var UseCookiePass = false;

var controls = {
  Username:             null,
  Password:             null,
  ddlRem:                 null
}

Ext.onReady(function(){
    Init();
});

function Init()
{
        
        
    Ext.QuickTips.init();
    Ext.form.Field.prototype.msgTarget = 'side';
    
    controls.Username = new Ext.form.TextField({
            fieldLabel: 'Email',
            name: 'user',
            width:180,
            maxLength: 100
        });
    controls.Username.applyTo('user');
    controls.Username.on('specialkey', HandleKeyPress);
    controls.Username.on('change', function () { UseCookiePass = false;  });
    
     // Convert subnavigation to an EXT combo
    controls.startPage = new Ext.form.ComboBox({
        name:  'idNav',
        typeAhead: false,
        editable: false,
        mode: 'local',
        triggerAction: 'all',
        transform:'startPage',
        resizable: false,
        width:180,
	maxHeight:63,
        forceSelection:true
    });
  
    controls.startPage.on('specialkey', HandleKeyPress);
    
    controls.ddlRem = new Ext.form.ComboBox({
        name:  'idRem',
        typeAhead: false,
        editable: false,
        mode: 'local',
        triggerAction: 'all',
        transform:'remoptions',
        resizable: false,
        width:180,
        forceSelection:true
    });
  
    controls.ddlRem.on('specialkey', HandleKeyPress);
    
    controls.Password = new Ext.form.TextField({
            fieldLabel: 'Password',
            name: 'pass',
            width:180,
            maxLength: 100,
            autoCreate : {tag: "input", type: "password", size: "16", autocomplete: "on"}
        });
    controls.Password.applyTo('pass');
    controls.Password.on('specialkey', HandleKeyPress);
    
    controls.Password.applyTo('pass');
    controls.Password.on('change', function () { UseCookiePass = false;  });

    setTimeout('ShowScreen();', 100);
    
        
}

function ShowScreen()
{
    controls.Username.setValue(readCookie('BH4_Data1'))
    SetPassword()
    SetRememberMe();
    if (readCookie('BH4_Data1') == null)
        controls.Username.focus();
    else
        controls.Password.focus();
}

function SetPassword()
{
    if (readCookie('BH4_Data2') != null)
    {
        UseCookiePass = true;
        var plength = readCookie('BH4_Data3')
        var pdum = "";
        if (plength == null) plength = 8;
        for (var p1=0; p1 < plength; p1++)
            pdum = pdum + '*';
        
        controls.Password.setValue(pdum);
    }
    else
        UseCookiePass = false;
    
}
function SetPassword()
{
    if (readCookie('BH4_Data2') != null)
    {
        UseCookiePass = true;
        var plength = readCookie('BH4_Data3')
        var pdum = "";
        if (plength == null) plength = 8;
        for (var p1=0; p1 < plength; p1++)
            pdum = pdum + '*';
        
        controls.Password.setValue(pdum);
    }
    else
        UseCookiePass = false;
    
}

function SetRememberMe()
{

    var rem = readCookie('BH4_Data4')
    
    rem = (rem == null) ? 3 : rem;
    try
    {
        controls.ddlRem.setValue(rem);
    }
    catch (e)
    {
        controls.Rem1.setValue(1);
    }
    
}

function LoginClicked()
{
    var pass = controls.Password.getValue();
    var hashPass =readCookie('BH4_Data2');
    var ret = 0;
    if (UseCookiePass)
        ret = Security.LoginHash(controls.Username.getValue(), hashPass)
    else
        ret = Security.LoginUser(controls.Username.getValue(), pass)
        
    if (ret == 1)
    {
        eraseCookie('BH4_Data1');
        eraseCookie('BH4_Data2');
        eraseCookie('BH4_Data3');
        eraseCookie('BH4_Data4');
        if (controls.ddlRem.getValue() == "1")
        {
            createCookie('BH4_Data1', controls.Username.getValue(), 365);
            
            if (UseCookiePass)
                createCookie('BH4_Data2', hashPass, 365);
            else
                createCookie('BH4_Data2', Security.hex_sha256(pass.split(' ').join('')), 365);
                
            createCookie('BH4_Data3', pass.length, 365);
            createCookie('BH4_Data4', 1, 365);
        }
        if (controls.ddlRem.getValue() == "2")
        {
            createCookie('BH4_Data1', controls.Username.getValue(), 365);
            createCookie('BH4_Data4', 2, 365);
        }
        if (controls.ddlRem.getValue() == "3")
            createCookie('BH4_Data4', 3, 365);
            
        parent.window.location = "Pages/General/main.htm?v=" + controls.startPage.getValue();
    }
    if (ret == 2)
        parent.window.location = "AccountLocked.htm";
    if (ret == 3)
        parent.window.location = "PassChange.htm";
    if (ret == 4)
        alert("Login Failed - This user id is already signed into the system.");
    if (ret == 0)
    {
        alert("Login Failed - Please check your username and password and try again.");
    }
    
}

function HandleKeyPress(e)
{
    if (Ext.EventObject.getKey() == 13)
        setTimeout('LoginClicked()', 300);
}

function Register()
{
    Ext.Msg.alert("Registration", "To register to use the Bloodhound System, please contact Bloodhound Investment Research at 952-935-2309.");
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	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);
}
