getBalance = function(id){
	
	successCallback = function(result){
		log.info(result);
		$(id).update(result.pointBalance);
	}

	channelAccountService.getCurrentAuthenticationData(wrapCallback(successCallback));
}
getSessionData = function(fn, ln, acc, accId, selBox){
	
	successCallback = function(result){
		log.debug("============== getSessionData LoggedUser =============");
		log.debug(result.user);
		log.error(result.currentAccount);
		$(fn).update(result.user.firstName);
		$(ln).update(result.user.lastName);
		$(acc).update("<span>"+result.currentAccount.name+"</span>");
		$(accId).update("<span style='font-size:11pt;color:;'> ("+result.currentAccount.accountId+") </span>");
		if(result.associatedAccounts.length > 0){
			$(selBox).update("<select id='adAccount' onchange='changeCurrentAccount();' style='margin-left:10px;width:120px;'></select>");
	   	   	var formSelect = $("adAccount");
	   	   		formSelect.options[0] = new Option("-- accounts --","");
	   	   	for(var i=0;i<result.associatedAccounts.length;i++){
	   	   		formSelect.options[i+1] = new Option(result.associatedAccounts[i].name, result.associatedAccounts[i].id);
	   	   	}
		}
	}
	new Ajax.Request("json-rest/cm/cmsession/getSessionData", wrapCallback(successCallback));
}

signOut = function(){
	document.location.href="signout.html";
}

wrapCallback = function(successCallback){
  return mainCallback = {
    onSuccess: function(transport){
      var response = transport.responseText.evalJSON();
	  if(response.exception != null){
  		handleException(response.exception);
 	  }
	  else{
        successCallback(response.value);
      }
    },
	onFailure: function(transport){
      handleError(transport);
    }
  };
}

handleException = function(exception){
	if(exception.className == 'com.imetrik.galaxy.exceptions.SessionNotFoundException'){
		log.error('An exception occured: '+exception.className+' \n '+exception.message);
		signOut();
	}else{
		log.error("Undefined error", exception);
		alert(exception.message);
	}
}

handleError = function(transport){
	log.error("Undefined error", transport.responseText);
	alert("System error");
}

loadApplications = function(id, lang, baseUrl){
	
   	successCallback = function(results){
		log.debug(results);
		if(results.length > 0){
			
			new Ajax.Updater(id, baseUrl+"/portal/ajax/applications/myAccount.html", { method: 'get', evalScripts:true});
			
			for(var i=0;i<results.length;i++){
				if(results[i] == 'CHANNEL_MANAGEMENT'){
					new Ajax.Updater(id, baseUrl+"/portal/ajax/applications/channelManagement.html", { method: 'get', evalScripts:true, insertion: 'after'});
				}
				if(results[i] == 'ASSET_MANAGEMENT'){
					new Ajax.Updater(id, baseUrl+"/portal/ajax/applications/assetManagement.html", { method: 'get', evalScripts:true, insertion: 'after'});
				}
			}
		}
	}
	log.debug("calling");
	new Ajax.Request(baseUrl+"/portal/json-rest/portalsession/getAvailableApplications", wrapCallback(successCallback));
}

displaySubject = function(divId, requestedField, baseUrl){
	
   	successCallback = function(result){
		log.debug(result.user.credentials.username);
		if(result){
			if(requestedField == 'username'){
				log.debug(requestedField);
				$(divId).update(result.user.credentials.username);
			}
			
		}
	}
	new Ajax.Request(baseUrl+"/portal/json-rest/portalsession/getSubject", wrapCallback(successCallback));
}

loadAccountInfo = function(baseUrl){
	
   	successCallback = function(account){
		log.debug(account.creator.personalInfo);
		if(account){
			$("accountNameT").update("<span class='accountField'>"+account.name+"</span>");
			/*------- ADDRESSES --------*/
			var addresses = account.addresses;
			for(var i=0;i<3;i++){
				if(addresses[i].type == "DEFAULT"){
					
					/* --  Main Address -- */
					
					$('stLine1').update("<span class='accountField'>"+addresses[i].streetLine1+"</span>");
					if(addresses[i].streetLine2){
						$('stLine2').update("<span class='accountField'>"+addresses[i].streetLine2+"</span>");
					}else{
						$('stLine2').hide();
					}
					$('city').update("<span class='accountField'>"+addresses[i].city+"</span>");
					$('state').update("<span class='accountField'>"+addresses[i].state+"</span>");
					$('countryCode').update("<span class='accountField'>"+addresses[i].countryCode+"</span>");
					$('zipCode').update("<span class='accountField'>"+addresses[i].zipCode+"</span>");
				}
				if(addresses[i].type == "BILLING"){
					
					/* -----  Billing Address ----- */
					
					$('billing_stLine1').update("<span class='accountField'>"+addresses[i].streetLine1+"</span>");
					if(addresses[i].streetLine2){
						$('billing_stLine2').update("<span class='accountField'>"+addresses[i].streetLine2+"</span>");
					}else{
						$('billing_stLine2').hide();
					}
					$('billing_city').update("<span class='accountField'>"+addresses[i].city+"</span>");
					$('billing_state').update("<span class='accountField'>"+addresses[i].state+"</span>");
					$('billing_countryCode').update("<span class='accountField'>"+addresses[i].countryCode+"</span>");
					$('billing_zipCode').update("<span class='accountField'>"+addresses[i].zipCode+"</span>");
				}
				if(addresses[i].type == "SHIPPING"){
					
					/* -----  Shipping Address ----- */
					
					$('shipping_stLine1').update("<span class='accountField'>"+addresses[i].streetLine1+"</span>");
					if(addresses[i].streetLine2){
						$('shipping_stLine2').update("<span class='accountField'>"+addresses[i].streetLine2+"</span>");
					}else{
						$('shipping_stLine2').hide();
					}
					$('shipping_city').update("<span class='accountField'>"+addresses[i].city+"</span>");
					$('shipping_state').update("<span class='accountField'>"+addresses[i].state+"</span>");
					$('shipping_countryCode').update("<span class='accountField'>"+addresses[i].countryCode+"</span>");
					$('shipping_zipCode').update("<span class='accountField'>"+addresses[i].zipCode+"</span>");
				}
			}
		}
	}
	log.debug("calling loadAccountInfo");
	new Ajax.Request(baseUrl+"/portal/json-rest/account/getCurrentAccountDetails", wrapCallback(successCallback));
}

/*
### loadSelectData ###

	id -> the id of the select element in witch to put the results
	met -> the method to call in localization service
	country -> the country code of the localy (if set)
*/
loadSelectData = function(id, met, country){
	
   	successCallback = function(results){
   	   	log.info(results[0]);
   	   	var formSelect = $(id);
   	 		formSelect.options[0] = new Option('- please make a selection -','');
   	   	for(var i=0;i<results.length;i++){
   	   		formSelect.options[i+1] = new Option(results[i].name, results[i].code);
   	   	}
	}
	if(country == null){
		new Ajax.Request("$[settings:portal.cm.base.url]/json-rest/localization/"+met+"?json.arg.0=en", wrapCallback(successCallback));
	}else{
		new Ajax.Request("$[settings:portal.cm.base.url]/json-rest/localization/"+met+"?json.arg.0="+country+"&json.arg.1=en", wrapCallback(successCallback));
	}
}


