var selectedUserRow;

function onChangePassword(sender, txtOldPwdCtrlId, txtNewPwdCtrlId, txtConfirmPwdCtrlId)
{
    Page_ClientValidate();
    
    if(Page_IsValid)
    {
        var context = new Object();
        context.commandName = 'OnChangePassword';
        var arguments = String.format('["{0}","{1}","{2}","{3}"]',context.commandName,
                                                          $get(txtOldPwdCtrlId).value,
                                                          $get(txtNewPwdCtrlId).value,
                                                          $get(txtConfirmPwdCtrlId).value);
        
        WebForm_DoCallback(sender, arguments, callbackHandler, context, onError);
    }
}

function onSendTopupRequest(sender, txtUnitsTopupId)
{
    Page_ClientValidate();
    
    if(Page_IsValid)
    {
        var context = new Object();
        context.commandName = 'OnSendRequestTopup';
        var arguments = String.format('["{0}","{1}"]',context.commandName,$get(txtUnitsTopupId).value);
        
        WebForm_DoCallback(sender, arguments, callbackHandler, context, onError);
    }
}

function onSaveUserSettings(sender, txtFirstNameId, txtMidNameId, txtLastNameId, rbHtmlId, rbPlainTextId)
{
    var context = new Object();
    context.commandName = 'OnSaveUserSettings';
    
    var emailFormat = '';
    if($get(rbHtmlId).checked)
        emailFormat = $get(rbHtmlId).value;
    else if($get(rbPlainTextId).checked)
        emailFormat = $get(rbPlainTextId).value;
        
    var arguments = String.format('["{0}","{1}","{2}","{3}","{4}"]',context.commandName,$get(txtFirstNameId).value,$get(txtMidNameId).value,$get(txtLastNameId).value,emailFormat);
    
    WebForm_DoCallback(sender, arguments, callbackHandler, context, onError);
}

function callbackHandler(result, context)
{
     if(result.length == 0)
        return;
        
    var objResult = Sys.Serialization.JavaScriptSerializer.deserialize(result);

    switch(context.commandName)
    {
        case 'OnChangePassword':
        case 'OnSaveUserSettings':
        case 'OnSendRequestTopup':
            $get(objResult.msgCtrlId).innerHTML = objResult.message;
            break;
        case 'OnSendEmail':
            if(objResult.result == 'OK')
            {                
                var fwdExtender = $find("mbForward");    
                document.getElementById('divProgress2').innerHTML = "";      
                fwdExtender.hide();                   
                return true;
            }
            else
            {        
                var args = objResult.result.split(',');
                if(args[1] == 'FailEmail')
                {
                    var fwdExtender = $find("mbForward");    
                    document.getElementById('divProgress2').innerHTML = "";      
                    fwdExtender.hide();
                    alert(args[0]);
                    return false;
                }
                else
                {
                    var fwdExtender = $find("mbForward");    
                    document.getElementById('divProgress2').innerHTML = "";      
                    fwdExtender.hide();
                    var args = objResult.result.split(',');
                    document.getElementById(args[0]).value = args[1];
                    document.getElementById(args[2]).innerHTML = args[3];
                    var mainExtender = $find("mbEmailExc");		    
		            mainExtender.show();
                    return false;
                }
            }
            break;                            
        case 'OnCancelPopup':
            var mainExtender = $find("mbEmailExc");		    
		    mainExtender.hide();
            break;
        case 'OnRetrySendMail':
            if(objResult.result == 'OK')
            {            
                var fwdExtender = $find("mbEmailExc");    
                document.getElementById('divProgress').innerHTML = "";      
                fwdExtender.hide();                 
                return true;
            }
            else
            {
                var mainExtender = $find("mbEmailExc");
                mainExtender.hide();
                var args = objResult.result.split(',');            
                document.getElementById(args[0]).innerHTML = args[1];
                document.getElementById('divProgress').innerHTML = "";            
	            mainExtender.show();
                return false;
            }
            break;
    }
}

function onError(message, context)
{
    alert('Exception: [' + context.CommandName + '] - ' + message);
}

/*function OpenDialogWindow(url, windowName, height, width)
{
    if (window.showModalDialog) 
    {
        var args = String.format('dialogHeight={0}px;dialogWidth={1}px', height, width);
        window.showModalDialog(url, windowName, args);
    } 
    else 
    {
        var args = String.format('dialogHeight={0}px;dialogWidth={1}px;toolbar=no;directories=no;status=no;menubar=no;scrollbars=no;resizable=no;modal=yes',height,width);
        window.open(url, windowName, args);
    }
}*/

function onSendEmail(sender, txtEmailId, hfEmail, fwdEmail, userEmail, htmlCode)
{
    var btn = document.getElementById(fwdEmail);
    var emailAddr;
    if(btn.checked)
    {
        emailAddr = document.getElementById(txtEmailId).value.trim();
    }
    else
    {
        emailAddr = userEmail;
    }
    
    document.getElementById(hfEmail).value = emailAddr;
    
    var progress = document.getElementById('divProgress2');    
    progress.innerHTML = htmlCode;    
    
    var arguments = String.format('["{0}","{1}"]', 'OnSendEmail', emailAddr);
    var context = new Object();
    context.commandName = 'OnSendEmail';
    
    WebForm_DoCallback(sender, arguments, callbackHandler, context, onError);   
}

function onCancelSendEmail(ModalPopupExtender1)
{
    //$find(ModalPopupExtender1).hide();
    return true;
}

function onDeleteUser(userId, row, message)
{
    selectedUserRow = row; 
    jQuery("input[id$=hfAlert]")[0].value = message;
    PageMethods.DeleteUser(userId, OnSuccess, OnFailed, null);
}

function onClickSearch(sender, e)
{
    __doPostBack(sender, e);
}

function onDeleteUserCallBack(result)
{
    if(result)
    {        
        jQuery("table[id$=gvUsers]")[0].deleteRow(selectedUserRow);     
    }
    else
    {
        alert(jQuery("input[id$=hfAlert]")[0].value);
    }
}

function OnSuccess(result, userContext, methodName)
{
    switch(methodName)
    {        
        case 'DeleteUser':
            onDeleteUserCallBack(result);
            break;        
        default:
            break;
    }
}

function OnFailed(error, userContext, methodName)
{
    alert('Exception: [' + methodName + '] - ' + error.get_message());
}

function onSearchHelp()
{
    //alert('A popup should be show here !');
    var popupHelp = $find("mbHelp");
    $get('popupBody').innerHTML = $("input[id$=hfPopupContent]")[0].value;
    popupHelp.show(); 
}

function onClickRetry(sender, hfEmail, htmlCode)
{    
    var progress = document.getElementById('divProgress');    
    progress.innerHTML = htmlCode;
    var emailAddr = document.getElementById(hfEmail).value;
    var arguments = String.format('["{0}","{1}"]', "RetrySendMail", emailAddr);   
    
    var context = new Object();
    context.commandName = 'OnRetrySendMail';
    
    WebForm_DoCallback(sender, arguments, callbackHandler, context, onError);  
}

function onClickSendEmail(htmlCode, hfEmail, email)
{
    document.getElementById(hfEmail).value = document.getElementById(email).value.trim();
    var progress = document.getElementById('divProgress2');
    progress.innerHTML = htmlCode;    
}

function onClickCancel(sender, hfEmailId)
{
    var popup = $find("mbEmailExc");    
    popup.hide(); 
//    var email = $get(hfEmailId).value;
//    var arguments;
//    if(email.trim()=="")
//    {
//        arguments = String.format('["{0}"]', "RechargeMeter");
//    }
//    else
//    {
//        arguments = String.format('["{0}"]', "CancelPopup");
//    }
    var arguments = String.format('["{0}"]', "CancelPopup");
    var context = new Object();
    //context.commandName = 'OnRechargeMeter';
    context.commandName = 'OnCancelPopup';
    
    WebForm_DoCallback(sender, arguments, callbackHandler, context, onError);  
}

function onShowPopup(label, msg)
{
    document.getElementById(label).innerHTML = msg;    
}

function onClickRadioButton(textbox, button)
{
    var txt = document.getElementById(textbox);
    var btn = document.getElementById(button);
    if(btn.checked)
    {
        txt.disabled = false;
    }
    else
    {
        txt.disabled = true;
    }
}
