var _cams		= new Array();
var _tick		= 5;
var _uaSupported	= true;
var _framerate		= 50;
var _percentage		= 50;
var _shownCam		= "";

var TAB_TYPE    = new Array("general", "motion_detection", "permissions");
var TAB_NAME    = new Array(_lang["general"], _lang["motion_detection"], _lang["permissions"]);

var _motionAlerts       = false;
var _sysNotif           = true;
var _motionNotifInterval= 1;
var _camProfileGUID     = "";
var _camProfileTab      = TAB_TYPE[0];
var _permissions        = new Array();

var _spaceRegEx         = new RegExp (' ');



function uninit() 
{
	clearAllCams();
	hideCam();
        hideCamProfile();
        hideEmbeddingScript();
        document.getElementById("user-settings").innerHTML      = "";
}

function verifyUA() 
{
	CamController.isBrowserSupported(function(data) 
	{
		_uaSupported = data;
	});
}

function retrieveCamList() 
{
	
	CamController.retrieveCamList(getLanguageId(), function(data)
	{
		var resp = data.parseJSON();

		if(true == resp.successful)
		{
			dwr.util.setValue("status-bar", "");
			setCams(resp.data.parseJSON());
			
			
		}
		else
		{
			dwr.util.setValue("status-bar", resp.error);
			uninit();
		}
	});
}

function handleEnter(keyCode) 
{
    if (keyCode == 13)
        return signIn();
    else
        return true;
}
/*
function disableLoginControls(disable) 
{
	document.getElementById("login").disabled       = disable;
	document.getElementById("password").disabled    = disable;
	document.getElementById("remember-me").disabled = disable;
}
*/

function refresh()
{
	if(!signedin)
		return;

	_tick++;

	retrieveCamList();
        setTimeout("refresh()", (_tick > 5)? 10000:2000);
}

function activateCam(index) 
{
	if(3 == _cams[index].statenum)
	{
		hideCamByIndex(index);
	}
	CamController.activateCam(getLanguageId(), _cams[index].ip, _cams[index].guid, ((3 != _cams[index].statenum)? 0:1), 1, _cams[index].capture, _cams[index].public, function(data)
	{
		var resp = data.parseJSON();

		if(true != resp.successful)
			alert(resp.error);

		_tick = 0;
		setTimeout("retrieveCamList()", 500);
	});
}

				   
function increaseFrameRate(index) 
{
	setQuality(index, _framerate+10, _percentage);
}

function decreaseFrameRate(index) 
{
	setQuality(index, _framerate-10, _percentage);
}

function increasePercentage(index) 
{
	setQuality(index, _framerate, _percentage+10);
}

function decreasePercentage(index) 
{
	setQuality(index, _framerate, _percentage-10);
}


function setQuality(index, framerate, percentage) 
{
	if(3 != _cams[index].statenum)
		return;

	CamController.setQuality(getLanguageId(), _cams[index].ip, _cams[index].guid, framerate, percentage, function(data)
	{
		var resp = data.parseJSON();

		if(true != resp.successful)
			alert(resp.error);
		
		var quality = resp.data.parseJSON();
		_framerate	= quality.framerate;
		_percentage = quality.percentage;
		dwr.util.setValue("framerate", _framerate+"%");
		dwr.util.setValue("smoothness", _percentage+"%");

	});
}

function getQuality() 
{
	CamController.getQuality(getLanguageId(), function(data)
	{
		var resp = data.parseJSON();

		if(true == resp.successful)
		{
			var quality = resp.data.parseJSON();
			_framerate	= quality.framerate;
			_percentage = quality.percentage;
			dwr.util.setValue("framerate", _framerate+"%");
			dwr.util.setValue("smoothness", _percentage+"%");
		}

	});
}


function initQuality(index) 
{
    if(_cams[index].allow_quality_adjustment)
    {
	CamController.getQuality(getLanguageId(), function(data)
	{
		var resp = data.parseJSON();

		if(true == resp.successful)
		{
			var quality = resp.data.parseJSON();
			_framerate	= quality.framerate;
			_percentage = quality.percentage;
			dwr.util.setValue("framerate", _framerate+"%");
			dwr.util.setValue("smoothness", _percentage+"%");
		}

		setQuality(index, _framerate, _percentage);

	});
    }
    else
    {
        dwr.util.setValue("framerate", _framerate+"%");
        dwr.util.setValue("smoothness", _percentage+"%");
    }
}


function publishCam(index) 
{
	_cams[index].public = !_cams[index].public;
	CamController.setCamParam(getLanguageId(), _cams[index].ip, _cams[index].guid, 0, _cams[index].capture, _cams[index].public, _cams[index].audio, function(data)
	{
		var resp = data.parseJSON();

		if(true != resp.successful)
			alert(resp.error);
	});
}

function captureCam(index) 
{
	_cams[index].capture = !_cams[index].capture;
	CamController.setCamParam(getLanguageId(), _cams[index].ip, _cams[index].guid, 0, _cams[index].capture, _cams[index].public, _cams[index].audio, function(data)
	{
		var resp = data.parseJSON();

		if(true != resp.successful)
			alert(resp.error);
	});
}

function enableAudio(index) 
{
	_cams[index].audio = !_cams[index].audio;
         
	CamController.setCamParam(getLanguageId(), _cams[index].ip, _cams[index].guid, 0, _cams[index].capture, _cams[index].public, _cams[index].audio, function(data)
	{
		var resp = data.parseJSON();

		if(true != resp.successful)
			alert(resp.error);
	});
}

function showCam(index) 
{
	var player =	"<APPLET codebase='../viewer' code='net/livestream/web/LiveStreamApplet.class'  ARCHIVE='web-viewer.jar' width=352 height=288><PARAM NAME='guid'  VALUE='" + _cams[index].guid + "'><PARAM NAME='ep' VALUE='" + _cams[index].pubpoint + "'><PARAM NAME='login' VALUE='" + _cams[index].owner + "'><PARAM NAME='transport'   VALUE='" + _cams[index].transport + "'><PARAM NAME='min-view-percentage'  VALUE='99'><PARAM NAME='resolver' VALUE='http://live-stream.net/camresolver?cam='></APPLET>" +
					"<br/><br/>" +
					"<table  class='table' width=332>" +
					"<tr><th></th><th>" + _lang["smoothness"] + ":&nbsp;<span id='smoothness'></span></th><th>" + _lang["framerate"] + ":&nbsp;<span id='framerate'></span></th></tr>" +
					"<tr>" + 
					"<td><input name='hide_cam' class='button' value='" + _lang["hide"] + "' type='button' onclick='hideCam()'/></td>" +
					"<td>" + createSmoothnessControl(index) + "</td>" +
					"<td>" + createFramerateControl(index) + "</td>" +
					"</tr>" + 					
					"</table>" + 					
					"<br/>";		

        document.getElementById("player").innerHTML     = player;
	document.getElementById("cam-name").innerHTML	= "<h1>" + _cams[index].alias_full + "</h1>";
	_shownCam = _cams[index].guid;

        initQuality(index);
        
        document.getElementById("cam-name").scrollIntoView(true);
}

function genEmbeddingScript(index) 
{
    if( _cams[index].public)
    {
	var script =	"<APPLET codebase='http://live-stream.net/viewer' code='net/livestream/web/LiveStreamApplet.class'  ARCHIVE='web-viewer.jar' width=176 height=144><PARAM NAME='guid'  VALUE='" + _cams[index].guid + "'><PARAM NAME='resolver' VALUE='http://live-stream.net/camresolver?cam='><PARAM NAME='min-view-percentage'  VALUE='99'><PARAM NAME='url' VALUE='http://live-stream.net'><PARAM NAME='transport' VALUE='udp'></APPLET>" + 
					"<p>&copy; 2007-2011 <a href='http://live-stream.net' target=_blank>LiveStream</a></p>";		

        var content         = "<table class='table' width='400'>";    
        content             += "<tr><td colspan='2'>";
        content             += "<textarea rows='5' cols='5' id='embed-script-t'>" + script + "</textarea>";
        content             += "</td></tr>";
        content             += "<tr><td colspan='2' align='right'>";
        content             += "<input name='hide_script' class='button' value='" + _lang["hide"] + "' type='button' onclick='hideEmbeddingScript()'/>";
        content             += "</td></tr>";
        content             += "</table>";
        
	document.getElementById("embed-script").innerHTML		= content;
        document.getElementById("embed-cam-name").innerHTML             = "<h1>" + _cams[index].alias_full + "</h1><code>" + _lang["copy_paste_code_below"] + ":</code>";
        document.getElementById("embed-script-t").focus();
        document.getElementById("embed-script-t").select();
    }
    else
    {
        showCamProfile(index, TAB_TYPE[0], true);
        alert(_lang["please_mark"] + ' \"' + _cams[index].alias_full + '\" ' + _lang["as_public"]);
    }
}

function hideEmbeddingScript(index) 
{
    document.getElementById("embed-script").innerHTML		= "";
    document.getElementById("embed-cam-name").innerHTML         = ""; 
}

function hideCam() 
{
	document.getElementById("player").innerHTML		= "";
	document.getElementById("cam-name").innerHTML	= "";
	_shownCam										= "";
}

function hideCamByIndex(index) 
{
	if(null != _cams[index] && _shownCam == _cams[index].guid)//null != document.getElementById("player_" + _cams[index].pubpoint))
		 hideCam();
}


function clearCams(cams) 
{
	var tbody = document.getElementById("cam-table-body");

	var shouldBeRemoved = new Array();
	var index           = 0;
	var trElems         = tbody.getElementsByTagName("tr");

   // alert(trElems);

	for (var i = 0; i <trElems.length; i++) 
	{   
		var trElem = trElems[i];

		var exists = false;
		for (var j = 0; j < cams.length; j++) 
		{
			//alert(trElem.id + " to remove: " + cams[j].guid);

			if(trElem.id == cams[j].guid)
			{
				exists = true;
				break;
			}
		}

		if(false == exists)
			shouldBeRemoved[index++] = trElem.id;
			
	}


	for (var i = 0; i < shouldBeRemoved.length; i++) 
		tbody.removeChild(document.getElementById(shouldBeRemoved[i]));
}

function clearAllCams() 
{
	var tbody = document.getElementById("cam-table-body");

	while (tbody.childNodes.length > 0) 
		tbody.removeChild(tbody.firstChild);

	_cams = new Array();
}


function createCamActivationControl(index)
{
    var control = "";
    
    switch(_cams[index].statenum)
    {
        case 3:		
            control =	"<input name='act_cam' class='button' value='" + _lang["stop"] + "' type='button' onclick='activateCam(" + index + ")'/>" +
                        "&nbsp;" +
                        "<input name='show_cam' class='button' value='" + _lang["show"] + "' type='button' onclick='showCam(" + index + ")'/>";
            break;                
        case 5:
        case 7:
            control = "<input name='act_cam' class='button' value='" + _lang["start"] + "' type='button' onclick='activateCam(" + index + ")'/>";
            break;
        default:
            control = "<input name='act_cam' class='button' value='...' type='button'/>";
            break;
    }
    
    return control;
}

function updateMotionSettings(index) 
{
    dwr.util.setValue("update_motion_settings_status", _lang["updating"]);
    
    CamController.setMotionSettings(getLanguageId(),
                                    _cams[index].ip,
                                    _cams[index].guid, 
                                    document.getElementById("notify_on_motion").checked,
                                    100 - document.getElementById("motion_detect_sensitivity").options[document.getElementById("motion_detect_sensitivity").selectedIndex].value,
                                    document.getElementById("motion_alert_int").options[document.getElementById("motion_alert_int").selectedIndex].value,
                                    document.getElementById("capture_on_motion").checked,
                                    document.getElementById("capture_length").options[document.getElementById("capture_length").selectedIndex].value,
                                    function(data) 
    {
        var resp = data.parseJSON();
        if(true != resp.successful)
            alert(resp.error);
        else
        {
            data                                    = resp.data.parseJSON();
            _cams[index].notify_on_motion           = data.notify_on_motion;
            _cams[index].motion_detect_sensitivity  = data.motion_detect_sensitivity;
            _cams[index].motion_alert_int           = data.motion_alert_int;
            _cams[index].capture_on_motion          = data.capture_on_motion;
            _cams[index].capture_length             = data.capture_length;
        }
        
        showCamProfileTab(index, TAB_TYPE[1]);
        dwr.util.setValue("update_motion_settings_status", "");
    });
}

function onNeverExpires(guid, alias, login, update)
{
    var neverExpires = document.getElementById("chk_never_expires").checked;
    
    document.getElementById("expiration_month").disabled = neverExpires;
    document.getElementById("expiration_day").disabled = neverExpires;
    document.getElementById("expiration_year").disabled = neverExpires;
    
    if(update)
      updatePermissionsOnEnter(guid, alias, login, 13);
}

function updatePermissionsOnEnter(guid, alias, login, keyCode)
{
    if (keyCode == 13)
    {
        var type = "";
        
        for(var j=0; j<_permissions[0].actions.length; j++)
            if(document.getElementById(_permissions[0].actions[j].type).checked)
            {
                type = _permissions[0].actions[j].type;
                break;
            }
        
        return updatePermissions(guid, alias, login, type);
    }
    else
        return true;
}

function updatePermissions(guid, alias, login, type)
{
    dwr.util.setValue("update_permissions_settings_status", _lang["updating"]);
    dwr.util.setValue("btn_update_permissions_settings", "...");
    
    var exp = "";
    if(!document.getElementById("chk_never_expires").checked)
    {
        exp = document.getElementById("expiration_year").options[document.getElementById("expiration_year").selectedIndex].value + 
               "-" + 
               document.getElementById("expiration_month").options[document.getElementById("expiration_month").selectedIndex].value + 
               "-" + 
               document.getElementById("expiration_day").options[document.getElementById("expiration_day").selectedIndex].value; 
    }
    
    CamController.setCamPermission( getLanguageId(),
                                    login,
                                    guid, 
                                    type,
                                    exp,
                                    function(data)  
    {
        var resp = data.parseJSON();
        if(true != resp.successful)
        {
            alert(resp.error);
        }
        else
        {
        }
        
        showCamPersmissionsSettings(guid, alias, login);
        dwr.util.setValue("update_permissions_settings_status", "");
    });
}


function updatePermittedNotificationChannelOnEnter(guid, alias, login, channel, keyCode)
{
    if (keyCode == 13)
        return updatePermittedNotificationChannel(guid, alias, login, channel);
    else
        return true;
}

function updatePermittedNotificationChannel(guid, alias, login, channel)
{
    dwr.util.setValue("update_permissions_settings_status", _lang["updating"]);
    dwr.util.setValue("btn_update_permissions_settings", "...");
    dwr.util.setValue("btn_update_permitted_motifications_channels_" + channel, "...");
    
    var maxPerDay = dwr.util.getValue("txt_max_per_day_" + channel);
    
    CamController.setPermittedNotificationChannel(getLanguageId(),
                                                    login,
                                                  guid, 
                                                  channel,
                                                  document.getElementById("chk_" + channel).checked,
                                                  maxPerDay,
                                                  function(data)  
    {
        var resp = data.parseJSON();
        if(true != resp.successful)
        {
            alert(resp.error);
        }
        else if("sms" == channel && document.getElementById("chk_" + channel).checked)
        {
            Accountant.getBalance(getLanguageId(), function(data)
            {
                var resp    = data.parseJSON();

                if(true == resp.successful)
                {
                    resp    = resp.data.parseJSON();
                    
                    var buy = false;
                    if(0 == resp.notifications)
                        buy = confirm(_lang["sms_balance_empty_would_like_acquire"]);
                    else if(20 > resp.notifications)
                        buy = confirm(_lang["sms_balance_low_would_like_acquire"]);
                    
                    if(buy)
                        window.location = "buycredits";
                }

            });
        }
        
        showCamPersmissionsSettings(guid, alias, login);
        dwr.util.setValue("update_permissions_settings_status", "");
    });
}

function permittedLoginChanged(login)
{
    //var l = login.options[login.selectedIndex].value;
    showUserPersmissions(login.selectedIndex);
}

function showUserPersmissions(index)
{
    var permission  = _permissions[index];
    var content     = "";
    
    content         += "<table class='table' width='200'>";
    
    
    content         += "<tr>";
    content         += "<td>";
    content         += "<h2>" + _lang["access_level"] + "&nbsp;[<a href='javascript:;' onclick='showHelp(\"" + _lang["select_permission_level_to_grant"] + " <strong>" + permission.login + "</strong> " + _lang["for"] + " <strong>" + permission.alias + "</strong>.\")'>?</a>]</h2>";
    //content         += "</td>";
    //content         += "</tr>";
    
    content         += "<br/>";
    content         += "<table><tr>";
    for(var j=0; j<permission.actions.length; j++)
    {
        //content         += "<tr>";
        content         += "<td>";
        content         += "<input type='radio' name='rb_permissions' id='" + permission.actions[j].type + "'" + (permission.level == permission.actions[j].type? "checked":"")  +  " onclick='updatePermissions(\"" + permission.guid + "\", \"" + permission.alias + "\", \"" + permission.login + "\", \"" + permission.actions[j].type + "\")'/>&nbsp;<b>" + _lang[permission.actions[j].type] + "</b>" + ((permission.actions[j].description != "")? ("<br/>" + permission.actions[j].description + ""):"");
        content         += "</td>";
        //content         += "</tr>";
    }
    content         += "</tr></table>";

    content         += "</tr>";


    content         += "<tr><td></td></tr>";
    
    var expiration  = new Date();
    if(permission.exp > 0)
        expiration.setTime(permission.exp);
    else
        expiration.setTime(expiration.getTime() + 1000*3600*24*7); // in a week
    
    content         += "<tr>";
    content         += "<td>";
    content         += "<h2>" + _lang["expires_on"] + "&nbsp;[<a href='javascript:;' onclick='showHelp(\"" + _lang["schedule_automatic"] + " <strong>" + permission.login + "</strong> " + _lang["permissions_expiration"] + " " + _lang["for"] + " <strong>" + permission.alias + "</strong>.\")'>?</a>]</h2>";
    content         += "<br/>";
    content         += "<input type='checkbox' name='chk_never_expires' id='chk_never_expires' " + ((0 > permission.exp)? "checked":"") + " onclick='onNeverExpires(\"" + permission.guid + "\", \"" + permission.alias + "\", \"" + permission.login + "\", true)'/>&nbsp;" + _lang["never"] + "<br/>";
    
    content         += "<select id='expiration_month' name='expiration_month' class='combobox_narrow'>";
    for(var j=0; j<MONTH.length; j++)
        content += "<option value='"+ ((j+1 < 10)? "0"+(j+1) : (j+1)) + "' " + ((expiration.getMonth() == j)? "selected":"") + ">" + MONTH[j] + "</option>";
    content         += "</select>"; 

    content         += "<select id='expiration_day' name='expiration_day' class='combobox_narrow'>";
    for(var j=1; j<=31; j++)
        content += "<option value='"+ ((j < 10)? "0"+j : j) + "' " + ((expiration.getDate() == j)? "selected":"") + ">" + j + "</option>";
    content         += "</select>"; 

    content         += "<select id='expiration_year' name='expiration_year' class='combobox_narrow'>";
    for(var j=2000; j<=expiration.getFullYear(); j++)
        content += "<option value='"+ j + "' " + ((expiration.getFullYear() == j)? "selected":"") + ">" + j + "</option>";
    content         += "</select>"; 

    content         += "&nbsp;"; 
    content         += "<input id='btn_update_permissions_settings' name='btn_update_permissions_settings' class='button' value='" + _lang["update"] + "' type='button' onclick='updatePermissionsOnEnter(\"" + permission.guid + "\", \"" + permission.alias + "\", \"" + permission.login + "\", " + "13)'/>";
    content         += "</td>";
    content         += "</tr>";
    
    content         += "<tr><td></td></tr>";
    
    content         += "<tr>";
    content         += "<td>";
    content         += "<h2> " + _lang["motion_detection_notifications"] + "*&nbsp;[<a href='javascript:;' onclick='showHelp(\"" + _lang["define_how_user"] + " <strong>" + permission.login + "</strong> " + _lang["will_receive_motion_detection_notif_from"] + " <strong>" + permission.alias + "</strong>.<br/><br/>" + _lang["notice_paid_channel_at_your_expense"] + "\")'>?</a>]</h2>";
    content         += "<br/>";
    
    content         += "<table class='table' width='100%'>";
    content         += "<thead>";
    content         += "<tr>";
    content         += "<td><strong>" + _lang["channel"] + "</strong></td>";
    content         += "<td><strong>" + _lang["daily_notif_limit"].replace(_spaceRegEx, '&nbsp;') + "</strong></td>";
    content         += "<td><strong>" + _lang["sent_today"].replace(_spaceRegEx, '&nbsp;') + "</strong></td>";
    content         += "</tr>";
    content         += "</thead>";
    
    for(var j=0; j<permission.notif_channels.length; j++)
    {
        if("vi" == _lang["lang"] && "sms" == permission.notif_channels[j].type)
            continue;

        content         += "<tr>";
        
        content         += "<td>";
        content         += "<input type='checkbox' name='chk_" + permission.notif_channels[j].type + "' id='chk_" + permission.notif_channels[j].type + "' " + (permission.notif_channels[j].allowed? "checked":"") +  " onclick='updatePermittedNotificationChannel(\"" + permission.guid + "\", \"" + permission.alias + "\", \"" + permission.login + "\", \"" + permission.notif_channels[j].type + "\")'/>&nbsp;" + permission.notif_channels[j].name.replace(_spaceRegEx, '&nbsp;');
        content         += "</td>";

        content         += "<td>";
        content         += "<input type='text' class='" + ((permission.notif_channels[j].allowed)? "textbox_narrow" : "textbox") + "' name='txt_max_per_day_" + permission.notif_channels[j].type + "' id='txt_max_per_day_" + permission.notif_channels[j].type + "' value='" + permission.notif_channels[j].max_per_day + "' " + (!permission.notif_channels[j].allowed? "disabled":"") + " onkeydown='updatePermittedNotificationChannelOnEnter(\"" + permission.guid + "\", \"" + permission.alias + "\", \"" + permission.login + "\", \"" + permission.notif_channels[j].type + "\", event.keyCode)'/>";
        
        if(permission.notif_channels[j].allowed)
            content         += "<input id='btn_update_permitted_motifications_channels_" + permission.notif_channels[j].type + "' name='btn_update_permitted_motifications_channels_" + permission.notif_channels[j].type + "'  class='button' value='" + _lang["update"] + "' type='button' onclick='updatePermittedNotificationChannel(\"" + permission.guid + "\", \"" + permission.alias + "\", \"" + permission.login + "\", \"" + permission.notif_channels[j].type + "\")'/>";
        content         += "</td>";
        
        content         += "<td>";
        content         += permission.notif_channels[j].counter;
        content         += "</td>";
        
        content         += "</tr>";
    }
    content         += "</table>";
    content         += "(*) " + _lang["paid_channel_at_your_expense"];
    
    content         += "</td>";
    content         += "</tr>";
    
    content         += "</table>";
    
    document.getElementById("permissions").innerHTML            = content;
    
    onNeverExpires("", "", "", false);
}

function addPermittedLogin(guid)
{
    var login = dwr.util.getValue("txt_add_permitted_login");

    // check if such user is not in list
    for(var j=0; j<_permissions.length; j++)
        if(_permissions[j].login.toLowerCase() == login.toLowerCase())
        {
            document.getElementById("add_permitted_login").innerHTML  = "";
            document.getElementById("permitted_login").selectedIndex  = j;
            permittedLoginChanged(document.getElementById("permitted_login"));
            return;
        }
    
    dwr.util.setValue("btn_add_permitted_login", "...");
    dwr.util.setValue("update_user_settings_status", _lang["adding"]);
    
    CamController.addPermittedLogin(getLanguageId(),
                                    login,
                                    guid, 
                                    function(data) 
    {
        var resp = data.parseJSON();
        if(true != resp.successful)
        {
            if(null != document.getElementById("txt_add_permitted_login"))
            {
              dwr.util.setValue("btn_add_permitted_login", "Add");
              document.getElementById("txt_add_permitted_login").focus();
              document.getElementById("txt_add_permitted_login").select();
            }

            if("" == resp.redirect)
                alert(resp.error);
            else if(confirm(resp.error))
                window.location = resp.redirect;
            
        }
        else
        {
            var permission = resp.data.parseJSON();
            
            _permissions.push(permission);
            
            var option    = document.createElement("option");
            option.value  = _permissions[_permissions.length-1].login;
            option.text   = _permissions[_permissions.length-1].login;
            document.getElementById("permitted_login").options.add(option);
            document.getElementById("permitted_login").selectedIndex  = _permissions.length-1;
            document.getElementById("permitted_login").disabled       = false;
            
            permittedLoginChanged(document.getElementById("permitted_login"));
            
            document.getElementById("add_permitted_login").innerHTML  = "";
        }
        
        dwr.util.setValue("update_user_settings_status", "");
    });
    
    
}

function addPermittedLoginOnEnter(guid, keyCode)
{
    if (keyCode == 13)
        return addPermittedLogin(guid);
    else
	return true;
}

function onAddPermittedLogin(guid)
{
    
    var content = "";
    
    content     += "<input name='txt_add_permitted_login' id='txt_add_permitted_login' class='textbox' type='text' onkeydown='addPermittedLoginOnEnter(\"" + guid +  "\", event.keyCode)'/>";
    content     += "<input name='btn_add_permitted_login' class='button' value='" + _lang["add"] + "' type='button' onclick='addPermittedLogin(\"" + guid +  "\")'/>";
    
    document.getElementById("add_permitted_login").innerHTML  = content;
    document.getElementById("txt_add_permitted_login").focus();
    
}

function onRegisterAndAddPermittedLogin(guid, alias)
{
    
    var content = "";
    
    
    content     += "<code>";
    content     += "<span id='reg-status'>" + _lang["going_to_create_new_account"] + "<br/>" + _lang["this_account_will_be_granted_for"] + " <strong>" + alias + "</strong>.<br/><br/>" + _lang["fill_out_form_below"] + "<br/>" + _lang["all_fields_mandatory"] + "</span>";
    content     += "<div class='searchform'>";
    content     += "<table id='reg-form' width=200>";
    content     += "<tr>";
    content     += "<td colspan='2'>" + _lang["username"].replace(_spaceRegEx, '&nbsp;') + "</td>";
    content     += "<td><input name='txt_login' id='txt_login' class='textbox' type='text' onkeydown='registerOnEnter(\"" + guid + "\", \"" + alias + "\", " + "event.keyCode)'/></td>";
    content     += "</tr>";
    content     += "<tr>";
    content     += "<td colspan='2'>" + _lang["password"].replace(_spaceRegEx, '&nbsp;') + "</td>";
    content     += "<td><input name='txt_password' id='txt_password' class='textbox' type='password' onkeydown='registerOnEnter(\"" + guid + "\", \"" + alias + "\", " + "event.keyCode)'/></td>";
    content     += "</tr>";
    content     += "<tr>";
    content     += "<td colspan='2'>" + _lang["password_confirm"].replace(_spaceRegEx, '&nbsp;') + "</td>";
    content     += "<td><input name='txt_password-conf' id='txt_password-conf' class='textbox' type='password' onkeydown='registerOnEnter(\"" + guid + "\", \"" + alias + "\", " + "event.keyCode)'/></td>";
    content     += "</tr>";
    content     += "<tr>";
    content     += "<td colspan='2'>" + _lang["fname"].replace(_spaceRegEx, '&nbsp;') + "</td>";
    content     += "<td><input name='txt_fname' id='txt_fname' class='textbox' type='text' onkeydown='registerOnEnter(\"" + guid + "\", \"" + alias + "\", " + "event.keyCode)'/></td>";
    content     += "</tr>";
    content     += "<tr>";
    content     += "<td colspan='2'>" + _lang["lname"].replace(_spaceRegEx, '&nbsp;') + "</td>";
    content     += "<td><input name='txt_lname' id='txt_lname' class='textbox' type='text' onkeydown='registerOnEnter(\"" + guid + "\", \"" + alias + "\", " + "event.keyCode)'/></td>";
    content     += "</tr>";
    content     += "<tr>";
    content     += "<td>" + _lang["phone"].replace(_spaceRegEx, '&nbsp;') + "</td>";
    content     += "<td id='flag'></td>";
    content     += "<td><input name='txt_number' id='txt_number' class='textbox' type='text' onkeydown='registerOnEnter(\"" + guid + "\", \"" + alias + "\", " + "event.keyCode)'/></td>";
    content     += "</tr>";
    content     += "<tr>";
    content     += "<td colspan='2'>" + _lang["security_code"].replace(_spaceRegEx, '&nbsp;') + "</td>";
    content     += "<td><input name='captcha-i' id='captcha-i' class='textbox' type='text'  onkeydown='registerOnEnter(\"" + guid + "\", \"" + alias + "\", " + "event.keyCode)'/></td>";
    content     += "</tr>";
    content     += "<tr>";
    content     += "<td colspan='3' align='right'><span id='captcha'></span><br/><a href='javascript:;' onclick='refreshCaptcha()'>" + _lang["refresh"] + "</a></td>";
    content     += "</tr>";
    content     += "<tr>";
    content     += "<td colspan='3' align='right'><input name='register' class='button' value='" + _lang["register"] + "' type='button' onclick='register(\"" + guid + "\", \"" + alias + "\")'/></td>";
    content     += "</tr>";
    content     += "</table>";
    content     += "</div>";
    content     += "</code>";
    
    document.getElementById("add_permitted_login").innerHTML  = content;
    
    
    document.getElementById("flag").innerHTML = "";

    SmsSender.getClientCountryAndCountryCode(getLanguageId(), function(data)
    {
        if("" != data)
        {
            var country = data.parseJSON();

            if("" != country.id )
                document.getElementById("flag").innerHTML = "<img src='../res/flags/" + country.id + ".png'>";

            if("" != country.code)
                dwr.util.setValue("number", country.code);

            refreshCaptcha();

        }

        document.getElementById("txt_login").focus();
    });
    
}

function register(guid, alias) 
{
    var password      = dwr.util.getValue("txt_password");
    var passwordConf  = dwr.util.getValue("txt_password-conf");

    if(password != passwordConf)
    {
        document.getElementById("reg-status").innerHTML = "<strong>" + _lang["password_confirmation_doesnt_match"] + "</strong>";
        return;
    }



    var number  = dwr.util.getValue("txt_number");
    var captcha = dwr.util.getValue("captcha-i");

    if(0 == captcha.length)
    {
        document.getElementById("captcha-i").focus();
        alert(_lang["security_code_not_set"]);
        return;
    }

    var login = dwr.util.getValue("txt_login");
    
    document.getElementById("reg-status").innerHTML = "<strong>" + _lang["registering"]  + "</strong>";
    Accountant.register(getLanguageId(),
                        login,
                        dwr.util.getValue("txt_password"),
                        dwr.util.getValue("txt_fname"),
                        dwr.util.getValue("txt_lname"),
                        number, 
                        captcha, 
                        false,
                        function(data) 
    {
        var resp = data.parseJSON();

        if(!resp.successful)
        {
            document.getElementById("reg-status").innerHTML = "<strong>" + resp.error + "</strong>";
            alert(resp.error);
        }
        else
        {
            dwr.util.setValue("update_user_settings_status", _lang["adding"]);
    
            CamController.addPermittedLogin(getLanguageId(),
                                            login,
                                            guid,
                                            function(data) 
            {
                document.getElementById("add_permitted_login").innerHTML  = "";
                
                var resp = data.parseJSON();
                if(true != resp.successful)
                    alert(resp.error);
                else
                    showCamPersmissionsSettings(guid, alias, login);

                dwr.util.setValue("update_user_settings_status", "");
            });
    
        }
    });
}

function registerOnEnter(guid, alias, keyCode) 
{
    if (keyCode == 13)
        return register(guid, alias);
    else
        return true;
}

function refreshCaptcha()
{
    document.getElementById("captcha").innerHTML = "<img src='../Captcha.jpg/" + new Date().getTime() + "'>";
}

function onRemovePermittedLogin(guid, alias)
{
    if(document.getElementById("permitted_login").selectedIndex < 0)
        return;
    
    dwr.util.setValue("update_permissions_settings_status", _lang["updating"]);
    
    CamController.removePermittedLogin( getLanguageId(),
                                        document.getElementById("permitted_login").options[document.getElementById("permitted_login").selectedIndex].value,
                                        guid,
                                        function(data)
    {
        var resp = data.parseJSON();
        if(true != resp.successful)
        {
            alert(resp.error);
        }
        else
        {
            showCamPersmissionsSettings(guid, alias, "");
        }
        
        dwr.util.setValue("update_user_settings_status", "");
    });
    
}



function showCamPersmissionsSettings(guid, alias, login)
{
    CamController.getCamPermissions(getLanguageId(), guid, function(data)
    {
        var resp = data.parseJSON();
        if(true != resp.successful)
        {
            document.getElementById("cam-settings").innerHTML  = "<p><strong>" + resp.error +  "</strong></p>";
        }
        else
        {
            resp            = resp.data.parseJSON();
            _permissions    = resp.permissions;
            
            var content     = "";
            var selected    = -1;
    
            content         += "<span id='help'></span>";  
            content         += "<label id='update_permissions_settings_status'></label>";
            content         += "<div class='searchform'>";
            content         += "<table class='table' width='400'>";
           
            content         += "<tr>";
            content         += "<td colspan='2'>";
            content         += "<strong>" + _lang["user"] + "</strong>&nbsp;[<a href='javascript:;' onclick='showHelp(\"" + _lang["manage_permitted_users"] + " <strong>" + alias + "</strong>.\")'>?</a>]<br/>";
            content         += "<select id='permitted_login' name='permitted_login' class='combobox_wide' " + ((0 < _permissions.length)? "" : "disabled")  + " onchange='permittedLoginChanged(this)'>";
            for(var j=0; j<_permissions.length; j++)
            {
                if(login.toLowerCase() == _permissions[j].login.toLowerCase())
                    selected = j;
                content += "<option value='"+ _permissions[j].login + "' " + ((login.toLowerCase() == _permissions[j].login.toLowerCase())? "selected":"") + ">" + _permissions[j].login + "</option>";
            }
            content         += "</select>";
            
            content         += "<br/>";
            content         += "<a href='javascript:;' onclick='onAddPermittedLogin(\"" + guid + "\")'>" + _lang["add_existing"] + "</a>|<a href='javascript:;' onclick='onRegisterAndAddPermittedLogin(\"" + guid + "\", \"" + alias + "\")'>" + _lang["add_new"] + "</a>|<a href='javascript:;' onclick='onRemovePermittedLogin(\"" + guid + "\", \"" + alias + "\")'>" + _lang["remove"] + "</a>"
            content         += "<br/><br/>";
            content         += "<span id='add_permitted_login'></span>"
            content         += "</td>";
            content         += "</tr>";
            

            content         += "<tr>";
            content         += "<td colspan=2><span id='permissions'></span></td>";
            content         += "</tr>";
            
            content         += "</table>";
            content         += "</div>";


            document.getElementById("cam-settings").innerHTML            = content;
            
            
            if(selected < 0 && _permissions.length > 0)
                selected  = 0;
            if(selected >= 0)
                showUserPersmissions(selected);
            
        }
    });
}


function createSettingsControl(index)
{
    return "<a href='javascript:;' onclick='showCamProfile(" + index + ", \"" + "" + "\", true)'>" + _lang["edit"] + "</a>&nbsp;|&nbsp;<a href='javascript:;' onclick='genEmbeddingScript(" + index + ")'>" + _lang["embed"] + "</a>";
}

function showCamProfile(index, tab, scroll)
{
    if("" == tab)
        tab = _camProfileTab;
    
    // create tab menu
    var menu = "<h1>" + _lang["settings_for"] + " " + _cams[index].alias_full + "</h1><table width='100%'>";
    
    menu += "<tr><td><code>";
    for(var i=0; i<TAB_TYPE.length; i++)
    {
        var name        = TAB_NAME[i];
        
        if(TAB_TYPE[i] == tab)
          name = "<strong>" + name + "</strong>";
      
        menu += "<a href='javascript:;' onclick='showCamProfile(" + index +  ",\"" + TAB_TYPE[i] + "\")'>" + name + "</a>"
        
        if(i < (TAB_TYPE.length-1))
          menu += "&nbsp;|&nbsp;";
      
    }
    menu += "</code></td>";
    
    menu += "<td align='right'><input id='hide_cam_profile' name='hide_cam_profile' class='button' value='" + _lang["hide"] + "' type='button' onclick='hideCamProfile()'/></td>";
    menu += "</tr></table>";
    
    document.getElementById("cam-settings-menu").innerHTML = menu;
    if(scroll)
      document.getElementById("cam-settings-menu").scrollIntoView(true);
    
    // show tab
    showCamProfileTab(index, tab);
}

function showCamProfileTab(index, tab)
{
    _camProfileTab  = tab;
    _camProfileGUID = _cams[index].guid;
    
    
    var content     = "";
    
    if(tab == TAB_TYPE[0]) // general
    {
        content   += "<div class='searchform'>";
        content   += "<table width='400'><tr>";
        
        switch(_cams[index].statenum)
        {
            case 3:		
            case 5:
            {
                if(_cams[index].enable_capture)
                    content += "<td><input name='capture_cam' type='checkbox' " + (_cams[index].capture? "checked":"") + " " + (!_cams[index].enable_capture? "disabled":"") + " onclick='captureCam(" + index + ")'/>&nbsp;" + _lang["capture"] + "</td>";

                if(_cams[index].enable_public)
                    content += "<td><input name='publish_cam' type='checkbox' " + (_cams[index].public? "checked":"") + " " + (!_cams[index].enable_public? "disabled":"") + " onclick='publishCam(" + index + ")'/>&nbsp;" + _lang["public"] + "</td>";

                break;            
            }
            default:
            {
               if(_cams[index].enable_capture)
                    content += "<td><input name='capture_cam' type='checkbox' " + (_cams[index].capture? "checked":"") + " disabled/>&nbsp;" + _lang["capture"] + "</td>";

               if(_cams[index].enable_public)
                   content += "<td><input name='publish_cam' type='checkbox' " + (_cams[index].public? "checked":"") + " disabled/>&nbsp;" + _lang["public"] + "</td>";

               break;
            }
        }

        content   += "<td><input name='enable_audio' type='checkbox' " + (_cams[index].audio? "checked":"") + " " + (!_cams[index].allow_audio_act? "disabled":"") + " onclick='enableAudio(" + index + ")'/>&nbsp;" + _lang["audio"] + "</td>";
        content   += "</tr></table>";
        content   += "</div>";
    }
    else if(tab == TAB_TYPE[1]) // motion detection
    {
        if(_cams[index].allow_motion_detect_act)
        {
          content         += "<label id='update_motion_settings_status'></label>";
          content         += "<p><strong>" + _lang["important"] + "</strong><br/><br/>" + _lang["motion_detection_tips"] + "</p>";
          content         += "<div class='searchform'>";
          content         += "<table class='table' width='400'>";

          content         += "<tr>";
          content         += "<td colspan='2' align='left'><input type='checkbox' id='notify_on_motion' " + (_cams[index].notify_on_motion? "checked":"")  +  " onclick='updateMotionSettings(" + index + ")'/>&nbsp;On</td>";
          content         += "</tr>";

          content         += "<tr>";
          content         += "<td>" + _lang["sensitivity"] + " (%)</td>";
          content         += "<td align='right'>";
          content         += "<select id='motion_detect_sensitivity' name='motion_detect_sensitivity' class='combobox' " + (_cams[index].notify_on_motion? "" : "disabled")  + " onchange='updateMotionSettings(" + index + ")'>";
          for(var i=0; i<=100; i++)
              content += "<option value='" + i + "' " + (((100-i) == _cams[index].motion_detect_sensitivity)? "selected" : "") + ">" + i + "</option>";
          content         += "</select>"; 
          content         += "</td>";
          content         += "</tr>";

          content         += "<tr>";
          content         += "<td>" + _lang["motion_alert_interval"] + "</td>";
          content         += "<td align='right'>";
          content         += "<select id='motion_alert_int' name='motion_alert_int' class='combobox' " + (_cams[index].notify_on_motion? "" : "disabled")  + " onchange='updateMotionSettings(" + index + ")'>";
          for(var i=1; i<=240; i++)
              content += "<option value='"+ i + "' " + ((i == _cams[index].motion_alert_int)? "selected" : "") + ">" + i + "</option>";
          content         += "</select>"; 
          content         += "</td>";
          content         += "</tr>";

          content         += "<tr>";
          content         += "<td colspan='2' align='left'><input type='checkbox' id='capture_on_motion' " + (_cams[index].capture_on_motion? "checked":"") + " " + (_cams[index].notify_on_motion? "" : "disabled")  + " onclick='updateMotionSettings(" + index + ")'/>&nbsp;Start&nbsp;capture&nbsp;on&nbsp;motion&nbsp;detection</td>";
          content         += "</tr>";

          content         += "<tr>";
          content         += "<td>" + _lang["capture_duration"] + "</td>";
          content         += "<td align='right'>";
          content         += "<select id='capture_length' name='capture_length' class='combobox' " + ((_cams[index].notify_on_motion && _cams[index].capture_on_motion)? "" : "disabled")  + " onchange='updateMotionSettings(" + index + ")'>";
          for(var i=1; i<=240; i++)
              content += "<option value='"+ i + "' " + ((i == _cams[index].capture_length)? "selected" : "") + ">" + i + "</option>";
          content         += "</select>"; 
          content         += "</td>";
          content         += "</tr>";

          content         += "</table>";
          content         += "</div>";
        }
        else
            content       += "<p><strong>" + _lang["not_authorized_to_edit_params"] + "</strong></p>";
    }
    else if(tab == TAB_TYPE[2]) // permissions
    {
        if(_cams[index].allow_motion_detect_act)
            showCamPersmissionsSettings(_cams[index].guid, _cams[index].alias_full,  "");
        else
            content       += "<p><strong>" + _lang["not_authorized_to_edit_params"] + "</strong></p>";
    }
    
    if("" != content)
        document.getElementById("cam-settings").innerHTML = content;
}

function hideCamProfile()
{
    //_camProfileTab      = "";
    _camProfileGUID     = "";
    
    document.getElementById("cam-settings-menu").innerHTML = "";
    document.getElementById("cam-settings").innerHTML = "";
}


function createCamPublicControl(index)
{
    return "";
}

function createPreview(index)
{
	return ("" != _cams[index].preview)? ("<img src='../" + _cams[index].preview + "' width='66' height='54'>") : "";
}




function createSmoothnessControl(index)
{
	switch(_cams[index].statenum)
	{
		case 3:		
			return	"<a href='#' onMouseOver=\"document.images[" + (_LANGUAGES.length+2+0) + "].src='../res/left_over.png';return true;\" onMouseOut=\"document.images[" + (_LANGUAGES.length+2+0) + "].src='../res/left.png';return true;\" onMouseDown=\"document.images[" + (_LANGUAGES.length+2+0) + "].src='../res/left_down.png';return true;\" onMouseUp=\"document.images[" + (_LANGUAGES.length+2+0) + "].src='../res/left.png';return true;\">" +
					"<img src='../res/left.png' onclick='decreasePercentage(" + index + ")'/>" +
					"<a href='#' onMouseOver=\"document.images[" + (_LANGUAGES.length+2+1) + "].src='../res/right_over.png';return true;\" onMouseOut=\"document.images[" + (_LANGUAGES.length+2+1) + "].src='../res/right.png';return true;\"  onMouseDown=\"document.images[" + (_LANGUAGES.length+2+1) + "].src='../res/right_down.png';return true;\" onMouseUp=\"document.images[" + (_LANGUAGES.length+2+1) + "].src='../res/right.png';return true;\">" +
					"<img name='smoothnessUp' src='../res/right.png' onclick='increasePercentage(" + index + ")'/>";
		default:
			return "";
	}
}

 function createFramerateControl(index)
{
	switch(_cams[index].statenum)
	{
		case 3:		
			return	"<a href='#' onMouseOver=\"document.images[" + (_LANGUAGES.length+2+2) + "].src='../res/left_over.png';return true;\" onMouseOut=\"document.images[" + (_LANGUAGES.length+2+2) + "].src='../res/left.png';return true;\" onMouseDown=\"document.images[" + (_LANGUAGES.length+2+2) + "].src='../res/left_down.png';return true;\" onMouseUp=\"document.images[" + (_LANGUAGES.length+2+2) + "].src='../res/left.png';return true;\">" +
					"<img name='framerateDown' src='../res/left.png' onclick='decreaseFrameRate(" + index + ")'/>" +
					"<a href='#' onMouseOver=\"document.images[" + (_LANGUAGES.length+2+3) + "].src='../res/right_over.png';return true;\" onMouseOut=\"document.images[" + (_LANGUAGES.length+2+3) + "].src='../res/right.png';return true;\" onMouseDown=\"document.images[" + (_LANGUAGES.length+2+3) + "].src='../res/right_down.png';return true;\" onMouseUp=\"document.images[" + (_LANGUAGES.length+2+3) + "].src='../res/right.png';return true;\">" +
					"<img name='framerateUp' src='../res/right.png' onclick='increaseFrameRate(" + index + ")'/>";
		default:
			return "";
	}
}


function setCams(cams) 
{
	_cams = cams;
	
	clearCams(cams);

        var index   = -1;
	var tbody   = document.getElementById("cam-table-body");
	
	var trElem, tdElem, txtNode;
	for (var j = 0; j < cams.length; j++) 
	{
                if(_camProfileGUID == _cams[j].guid)
                    index = j;
                
		trElem              = document.getElementById(cams[j].guid);
		if(null == trElem)
		{
			trElem = document.createElement("tr");
			
			trElem.className    = (j%2 == 0)? "row-a" : "row-b";
			trElem.id           = cams[j].guid

                        //var icon    = "";    
			tdElem      = document.createElement("td");
			tdElem.id   = "status_icon";
			if(3 == cams[j].statenum)
                            tdElem.innerHTML = "<img src='../res/square-green.png'>";
                        else if(5 == cams[j].statenum)
                            tdElem.innerHTML = "<img src='../res/square-gray.png'>";
                        else 
                            tdElem.innerHTML = "<img src='../res/square-blue.png'>";
                        
                        if(cams[j].ccode.length > 0)
                            tdElem.innerHTML = tdElem.innerHTML + "<br/><img src='../res/flags/" + cams[j].ccode + ".png' alt='" + cams[j].cname +  "' title='"  + cams[j].cname + "'>";

			trElem.appendChild(tdElem);

			tdElem              = document.createElement("td");
			tdElem.id           = "alias";
			tdElem.className    = "td.first";
			txtNode             = document.createElement("div");
                        txtNode.innerHTML   = cams[j].alias.replace(_spaceRegEx, '&nbsp;');
			tdElem.appendChild(txtNode);
                         
			trElem.appendChild(tdElem);

			tdElem              = document.createElement("td");
			tdElem.id           = "control";
			tdElem.innerHTML	= createCamActivationControl(j); 
			trElem.appendChild(tdElem);

			tdElem              = document.createElement("td");
			tdElem.id           = "preview";
			tdElem.innerHTML	= createPreview(j); 
			trElem.appendChild(tdElem);
  
			tdElem              = document.createElement("td");
			tdElem.id           = "settings";
			tdElem.innerHTML	= createSettingsControl(j); 
			trElem.appendChild(tdElem);

			tbody.appendChild(trElem);
                         
		}
		else
		{
			for (var i = 0; i < trElem.childNodes.length; i++) 
			{
				if("status_icon" == trElem.childNodes[i].id)
				{
					if(3 == cams[j].statenum)
						trElem.childNodes[i].innerHTML = "<img src='../res/square-green.png'>";
					else if(5 == cams[j].statenum)
						trElem.childNodes[i].innerHTML = "<img src='../res/square-gray.png'>";
					else 
						trElem.childNodes[i].innerHTML = "<img src='../res/square-blue.png'>";
                                             
                                        if(cams[j].ccode.length > 0)
                                            trElem.childNodes[i].innerHTML = trElem.childNodes[i].innerHTML + "<br/><img src='../res/flags/" + cams[j].ccode + ".png' alt='" + cams[j].cname +  "' title='"  + cams[j].cname + "'>";

				}   
				else if("alias" == trElem.childNodes[i].id)
				{   
                                    while(trElem.childNodes[i].childNodes.length > 0)
                                      trElem.childNodes[i].removeChild(trElem.childNodes[i].firstChild);
                                       
                                    trElem.childNodes[i].appendChild(document.createTextNode(cams[j].alias));

				}
				else if("control" == trElem.childNodes[i].id)
				{   
					var act = createCamActivationControl(j);
					if(act != trElem.childNodes[i].innerHTML)
						trElem.childNodes[i].innerHTML = act;
				}
				else if("preview" == trElem.childNodes[i].id)
				{   
					var preview = createPreview(j);
					if(preview != trElem.childNodes[i].innerHTML)
						trElem.childNodes[i].innerHTML = preview;
				}
				else if("settings" == trElem.childNodes[i].id)
				{   
					var set = createSettingsControl(j);
					if(set != trElem.childNodes[i].innerHTML)
						trElem.childNodes[i].innerHTML = set;
				}
			}
		}
                
                if(_cams[j].guid == _camProfileGUID && TAB_TYPE[0] == _camProfileTab)
                    showCamProfile(j, _camProfileTab, false);
                
	}

	// reinit style
	for (var i = 0; i < tbody.childNodes.length; i++) 
	{
		trElem				= tbody.childNodes[i];
		trElem.className    = (i%2 == 0)? "row-a" : "row-b";
	}
         
        if(index < 0 && _camProfileGUID != "")
            hideCamProfile();
}

function updateUserSettings() 
{
    dwr.util.setValue("update_user_settings", "...");
    dwr.util.setValue("update_user_settings_status", _lang["updating"]);
    
    Accountant.updateUserSettings(getLanguageId(), document.getElementById("show_foreign_cams").checked, _motionAlerts, _sysNotif, _motionNotifInterval, function(data)
    {
        var resp = data.parseJSON();
        if(true != resp.successful)
            alert(resp.error);
        else
            retrieveCamList();
        
        dwr.util.setValue("update_user_settings", _lang["update"]);
        dwr.util.setValue("update_user_settings_status", "");
    });
}


function setUserSettings() 
{
	Accountant.getUserInfo(getLanguageId(), function(data)
	{
                var resp = data.parseJSON();
		if(true == resp.successful)
		{
			var userInfo    = resp.data.parseJSON();
                        var content     = ""; 
                        
                        _motionAlerts           = userInfo.notify_on_motion;
                        _sysNotif               = userInfo.sys_notif;
                        
                        
                        // settings
                        content         += "<label id='update_user_settings_status'></label>";
                        content         += "<table class='table' width='400'>";
                        
                        content         += "<tr>";
                        content         += "<td colspan='2' align='left'><input type='checkbox' id='show_foreign_cams'" + (userInfo.show_foreign_cams? "checked":"")  +  " onclick='updateUserSettings()'/>&nbsp;" + _lang["show_pub_cams"] + "</td>";
                        content         += "</tr>";

                        content         += "</table>";
                        
                        document.getElementById("user-settings").innerHTML  = content;
		}
                else
                    document.getElementById("user-settings").innerHTML  = "";
                     
	});
}


function updateUi()
{
    updateMenu();

    document.getElementById("caption").innerHTML        = _lang["cams"];
    document.getElementById("alias").innerHTML          = _lang["alias"];
    document.getElementById("control").innerHTML        = _lang["control"];
    document.getElementById("preview").innerHTML        = _lang["preview"];
    document.getElementById("profile").innerHTML        = _lang["profile"];

    document.getElementById("homepage_ad").innerHTML    = _lang["homepage_ad"];
    document.getElementById("learn_more").innerHTML     = _lang["learn_more"];


}
