function changeAccountType(portletNameSpace) {	
	if($('#' + portletNameSpace + 'accountTypeSelect').val() == ""){        
	    $('#' + portletNameSpace + 'trackVic').hide();
	    $('#' + portletNameSpace + 'trackVicDisabled').hide();
	    $('#' + portletNameSpace + 'trackCard').hide();
	    $('#' + portletNameSpace + 'trackCardDisabled').hide();
	} 
      else
      if($('#' + portletNameSpace + 'accountTypeSelect').val() == "ffp"){
        $('#' + portletNameSpace + 'trackVic').show();
	    $('#' + portletNameSpace + 'trackVicDisabled').show();
	    $('#' + portletNameSpace + 'trackCard').hide();    	  	                
	    $('#' + portletNameSpace + 'trackCardDisabled').hide();
      } 
      else if($('#' + portletNameSpace + 'accountTypeSelect').val() == "cc"){
        $('#' + portletNameSpace + 'trackVic').hide();
	    $('#' + portletNameSpace + 'trackVicDisabled').hide();
    	$('#' + portletNameSpace + 'trackCard').show();
	    $('#' + portletNameSpace + 'trackCardDisabled').show();
   	 } 
}

function accountTypeAddCard(toClone, toAdd, elem){
	cloneAndCleanGenericDiv(toClone, toAdd, elem);
}
function accountTypeAddVic(toClone, toAdd, elem){		
	cloneAndCleanGenericDiv(toClone, toAdd, elem);	
}

function accountTypeAddContact(toClone, toAdd, elem){		
	$(toAdd).find(toClone).find('hr').show();
	cloneAndCleanGenericDiv(toClone, toAdd, elem);
	
	var p = $(toAdd).find(toClone).find('p[class=contentsFormFieldPlus]'); 	
  	$(p).html(changeContactNumber($(p).html(),1));
  	
  	$(toAdd).find(toClone).find('hr').hide();
}

function accountTypeRemoveCard(closestToRemove, elem){
	removeGenericDiv(closestToRemove, elem);
}
function accountTypeRemoveVic(closestToRemove, elem){
	removeGenericDiv(closestToRemove, elem);
}

function accountTypeRemoveContact(closestToRemove, elem){
	var closest = $(elem).closest(closestToRemove);
	$(closest).nextAll().find('p[class=contentsFormFieldPlus]').each(function(){
		$(this).html(changeContactNumber($(this).html(),-1));
	 });
	
	removeGenericDiv(closestToRemove, elem);
	$(closestToRemove+":last").find('hr').hide();
}


function removeGenericDiv(closestToRemove, elem){
	var closest = $(elem).closest(closestToRemove);	
	$(closest).nextAll().find(":input").each(function() {                                          
      var newName = changeSpringName(this,-1);
      var newId = changeSpringId(this,-1);                    	                                
      
      $(this).replaceWith(getInputClonedByHtml(newName, newId, this));            
      
    });
  $(closest).remove();
	try { changeContentsHeight(); } catch(e) { }
}
function getInputClonedByHtml(nName, nId, oInput) {
    var nType = $(oInput).attr('type');        
    var newinput;
    
    if(nType.match("^select")) {
      newinput = $('<select id="' + nId + '" name="' + nName + '">');
      $(newinput).attr('multiple', $(oInput).attr('multiple'));
      $(newinput).html($(oInput).html());
    } else {
      newinput = $('<input type="' + nType + '" id="' + nId + '" name="' + nName + '">');
    }
    $(newinput).attr('class', $(oInput).attr('class'));
    $(newinput).attr('disabled', $(oInput).attr('disabled'));
    $(newinput).attr('maxlength', $(oInput).attr('maxlength')); 
    $(newinput).attr('alt', $(oInput).attr('alt'));
    $(newinput).attr('title', $(oInput).attr('title'));
    $(newinput).attr('src', $(oInput).attr('src'));
    $(newinput).attr('style', $(oInput).attr('style'));
    
    $(newinput).val($(oInput).val());
                  
    return newinput;
}
function cloneAndCleanGenericDiv(toClone, toAdd, elem){		
  	var newElm = $(toClone).clone(true);  	  	  	
  	$(newElm).find(":input:not([type='radio'])").each(function() {                                          
      var newName = changeSpringName(this,1);
      var newId = changeSpringId(this,1);                    	                                
      
      $(this).replaceWith(getInputClonedByHtml(newName, newId, this));            
      
    });
    
    $(newElm).find("input:not([type='radio']):enabled").val(""); 	    	
   	$(newElm).find(":input[type='radio']").each(function() {                                          
      var newName = changeSpringNameRadio(this,1);
      var newId = changeSpringIdRadio(this,1);                    	                                
      
      $(this).replaceWith(getInputClonedByHtml(newName, newId, this));            
      
    });
    $(newElm).find("select").attr('selectedIndex', '0');
  	$(newElm).find('div[class="contentsColumnLoginAlertErrorContainer"]').remove();
  	$(newElm).appendTo(toAdd);
  	try { changeContentsHeight(); } catch(e) { }
}


function changeSpringName(elem,offset){
	return computeSpringKeys($(elem).attr("name"),offset);

}

function refreshButtons(containerDiv, contBtnDivName, addClass, removeClass) {	
	var len = $(containerDiv).find('div[name="' + contBtnDivName + '"]').length;
	
	$(containerDiv).find('div[name="' + contBtnDivName + '"]').find('p[class="' + addClass + '"]').hide();
	$(containerDiv).find('div[name="' + contBtnDivName + '"]').find('p[class="' + removeClass + '"]').show();
	
	if(len == 1) {
	  $(containerDiv).find('div[name="' + contBtnDivName + '"]:first').find('p[class="' + removeClass + '"]').hide();		
	}
	$(containerDiv).find('div[name="' + contBtnDivName + '"]:last').find('p[class="' + addClass + '"]').show();
	
}

function changeSpringId(elem,offset){
 return computeSpringKeys($(elem).attr("id"),offset);

}

function changeSpringIdRadio(elem,offset){
  $(elem).removeAttr("checked");
	return computeSpringKeysRadio($(elem).attr("id"),offset);
}

function changeSpringNameRadio(elem,offset){
  return computeSpringKeysRadio($(elem).attr("name"),offset);

}

function changeContactNumber(str,offset){
	var regex = new RegExp('^(\\d+)(.+)');
	var results;
	var contactNumber;
	if(str!=null){
		results = regex.exec(str);
		contactNumber = parseInt(results[1])+offset;
		return contactNumber+results[2];
	}
	return str;
	
}

function computeSpringKeys(str,offset){
	var regex;
	var arr;
	var results;
	var namevar;
	var res;
	
	if(str != null) {
		regex = new RegExp('(\\[?)(\\d+)(\\]?)$');
		arr = str.split(".");
		
		var len = arr.length;
		for (var i = 0; i<len; i++) {
  			results = regex.exec(arr[i]);
  			if(results != null) {
          namevar = arr[i].replace(results[0], '');
	            if(namevar != "") {
	              namevar = namevar+results[1]+(parseInt(results[2])+offset)+results[3];
	              if(res == null) {
		            	res = namevar;
		            } else {
		            	res = res + '.' + namevar;
		            }
	            }	            
  			} else {
  				if(res == null) {
	            	res = arr[i];
	            } else {
	            	res = res + '.' + arr[i];
	            }
  			}
		}
		return res;
	}
	return str;
}

function computeSpringKeysRadio(str,offset){
	var regex;
	var arr;
	var results;
	var namevar;
	var res;
	
	if(str != null) {
		regex = new RegExp('(\\[?)(\\d+)(\\]?)$');
		arr = str.split(".");
		var len = arr.length;
		for (var i = 0; i<len; i++) {
  			results = regex.exec(arr[i]);
        if(results != null && i<len-1) {
 	  			namevar = arr[i].replace(results[0], '');
	            if(namevar != "") {
	              namevar = namevar+results[1]+(parseInt(results[2])+offset)+results[3];
	              if(res == null) {
		            	res = namevar;
		            } else {
		            	res = res + '.' + namevar;
		            }
	            }	            
  			} else {
  				if(res == null) {
	            	res = arr[i];
	            } else {
	            	res = res + '.' + arr[i];
	            }
  			}
		}
		return res;
	}
	return str;
}

 function parseID(myid) { 
 	return '#'+myid.replace(/:/g,"\\:").replace(/\./g,"\\.");
 }
