/* 
agileActions.js: library of javascript for handling CMS activities
    david.kelly@fanore.com (http://www.fanore.com/website_design.htm)
    
    
    
*/
//serviceAction: switchboard for handling change events
function serviceAction(paramAction, paramID, paramSubFilter){
    var params='';
    
    var service=parseInt($('#service').val());
    var context=$('#serviceContext').val();
    var paramComplete='';
    var el='';
    //alert(paramAction);
    switch (paramAction){
        case 'applyFilter': // handles the application of a specific filter (identified by paramID)
            var params=$('#' + paramID).val();
            //alert(params);
            if (params.length!=0){
                var url=$('#base').val() + "v2010/ajax.asp";
                $('#default_params').val(params);
                generic_populate_panel(url, params, 'ajax_results', 'generic_tracking(' + '\'' + params + '\')');
                return void[0];
            }
            break;                
        case 'applySubFilter': // handles the application of a specific filter use to drilldown on a particular data stream
            var params='serviceid=' + service + '&tag=_applySubFilter&report=filter&context=' + context + '&filter=' + paramSubFilter + '&id=' + paramID;
            //alert(params);
             var url=$('#base').val() + "v2010/ajax.asp";
            var errorURL=url + '?' + params;
            //window.location.href=errorURL;
            //return void[0];
                $('#default_params').val(params);
                generic_populate_panel(url, params, 'ajax_results', 'generic_tracking(' + '\'' + params + '\')');
                return void[0];
            break;                
            
        case 'assetProperties'://view details about an asset
            var params='serviceid=' + service + '&tag=_viewAsset&context=' + context + '&id=' + paramID;
            var url=$('#base').val() + "v2010/ajax.asp";
            var d=new Date();
            var errorURL=url + '?' + params;
            //window.location.href=errorURL;
            //break;
            $('#assetWorkspace').load(errorURL, function(){
                //bind to the cancel button
                $('#assetWorkspace #cancelButton').click(function(){
                    $('#assetWorkspace').html('');
                });
                
            });
            break;
        case 'changeLevel': //occurs as an event in sort console (see genericRendering) 
            var params='serviceid=' + service + '&tag=_expand&context=' + context + '&contextid=' + paramID;
            var url=$('#base').val() + "v2010/ajax.asp?" + params;
            //window.location.href=url;
            //break;
            $('#sortLevel').load(url,function(){
                                $('#params').val(params.replace('_expand','_saveSort'));
                               // $('.wrapScroll ul').unbind();
                                $('.wrapScroll ul').sortable();
                                         $('.wrapButtons input.cancelButton').bind('click',function(){
                                            $('#ajaxInteractive').overlay().close();
                                          });                        
                                $('#sortForm').submit(function(){
                                                      if (postSortables()){
                                                        generic_refresh_listing();
                                                      }
                                                      $('#ajaxInteractive').overlay().close();
                                                      return false;
                                                      });//end handle submit
                                
                        
                        
                            });
            
            break;
        case 'delete'://delete the record
            paramComplete='genericCSS();' // default behaviour
            
            // if we are displaying a shaped list then refresh the page
            switch (service){
                case 1061://content management
                    paramComplete="generic_refresh_listing();";
                    break;
                default:
            }   

            params='serviceid=' + service + '&tag=_delete&context=' + context + '&id=' + paramID;
            if ($('#serviceFilters').length){
            //alert($('#serviceFilters select').val())
                if($('#serviceFilters select').val().toString().indexOf('filter=')!=-1){
                    var data=parseStringAsQuery($('#serviceFilters select').val());
                    params+='&filter=' + data['filter'].toString();
                }
            }
            
            url=$('#base').val() + "v2010/ajax.asp?" + params;
            displayDebugingInformation(url);
            el='#row' + paramID //name of the row to delete to provide visual feedback
            if (confirm('Are you sure you want to delete this record ?')){
                    $.getJSON(url, function(data){
                                if(data.errors==0){
                                        if ($(el).length){
                                            $(el).remove();
                                        }
                                        if (paramComplete!=''){
                                            eval(paramComplete);
                                        }
                                }
                                else{
                                    alert(data.message);
                                }
                       
                        
                        });                    
            
            }
            break;
        case 'deleteAsset'://delete a media record associated with 'this' record
            var url=$('#base').val() + "v2010/ajax.asp";
            var d=new Date();
            var params='serviceid=' + service + '&tag=_deleteAsset&context=' + context + '&id=' + paramID + '&KAV=' + d.toString() ;
            var errorURL=url + '?' + params;
            displayDebugingInformation(errorURL);
             $('#assetWorkspace').html('');
                    $.getJSON(errorURL, function(data){
                                if(data.errors==0){
                                        if ($(el).length){
                                            $('#asset' + paramID).remove();
                                        }
                                }
                                else{
                                    alert(data.message);
                                }
                        });                    
            break;
        case 'deleteXreference':
            var url=$('#base').val() + "v2010/ajax.asp";
            var d=new Date();
                    var filterName='';
                    if ($('#serviceFilters').length){
                            if (arguments.length==3){
                            //paramSubFilter
                            filterName=paramSubFilter;
                            }
                            else{
                            var data=parseStringAsQuery($('#serviceFilters select').val());
                            filterName= data['filter'].toString();
                            }
                        }        

            var params='serviceid='  + service +  '&tag=_deletexreference&context=' + context + '&filter=' + filterName + '&id=' + paramID + '&master=' + $('#master').val() + '&KAV=' + d.toString() ;
            var html='<span><a href="#" id="href' + paramID + '">' + $('#item' + paramID).attr('title') + '</a></span>';
            
            var errorURL=url + '?' + params
            displayDebugingInformation(errorURL);
             if ($('#debugSave').length){
                if ($('#debugSave').attr('checked')==true){
                        openExternalTool(errorURL);
                         return void[0];
                }
             }      
            
            
                    $.getJSON(errorURL, function(data){
                                if(data.errors==0){
                                        if ($(el).length){
                                            $('#item' + paramID).remove();
                                        }
                                        if ($('.wrapRHSScroll span').length !=0){
                                            $(html).insertBefore('.wrapRHSScroll span:first');
                                        }
                                        else{
                                            $('.wrapRHSScroll').html(html);
                                        }
                                }
                                else{
                                    alert(data.message);
                                }
                        });                    
            break;
            
        case 'edit': // edit the record
            var params='serviceid=' + service + '&tag=_edit&context=' + context + '&id=' + paramID;
            
            if ($('#serviceFilters').length){
                //check for subfilter first
                if (arguments.length==3){
                //paramSubFilter
                params+='&filter=' + paramSubFilter;
                }
                else{
                var data=parseStringAsQuery($('#serviceFilters select').val());
                    if (data['filter']){
                        params+='&filter=' + data['filter'].toString();
                    }
                }
            }
            //alert(params);
            return editConsole(params,paramID);
            break;
        case 'editCaption'://edit the caption of an asset 
            var params='serviceid=' + service + '&tag=_editAssetCaption&context=' + context + '&id=' + paramID;
            var url=$('#base').val() + "v2010/ajax.asp";
            var d=new Date();
            var errorURL=url + '?' + params;
            //window.location.href=errorURL;
            $('#assetWorkspace').load(errorURL, function(){
                //bind to the cancel button
                $('#assetWorkspace #cancelButton').click(function(){
                    $('#assetWorkspace').html('');
                });
                
            });
            //alert(params);
            break;
        case 'export': // export to EXCEL
            var service=parseInt($('#service').val());
            var url=$('#base').val() + "v2010/ajax.asp?serviceid=" + service + "&tag=_export&context=" + context + '&id=' + paramID;
            var w=window.open(url,context);  
            break;
        case 'exportCustomers': // export to EXCEL
            var service=parseInt($('#service').val());
            var url=$('#base').val() + "v2010/ajax.asp?serviceid=" + service + "&tag=_export&context=" + context + "customers";
            var w=window.open(url,context);  
            break;
         case "print"://export to html (custom based on customer styling requirements)
            var service=parseInt($('#service').val());
            var url=$('#base').val() + "v2010/ajax.asp?serviceid=" + service + "&tag=_print&context=" + context + "&contextID=" + paramID;
            var w=window.open(url,context);  
            break;
            
            
            
        case 'media': // manage assets associated with the record
            var params='serviceid=' + service + '&tag=_media&context=' + context + '&id=' + paramID;
           // alert(params);
            return mediaConsole(params,paramID);
            break;  
        case 'populateAddressForm': //called from forms.inc on country drop down change event when editing an address
            var params='serviceid=' + service + '&tag=_renderAddressDialogue&context=' + context + '&country=' + $('#inputCountryID').val() + '&account=' + paramID;
            var url=$('#base').val() + "v2010/ajax.asp?" + params; 
            $('#countryBasedAddress').load(url, function(){
                //need to match county listing ?
                if ($('#address4Data').length){
                    $('#inputaddress4').val($('#address4Data').val());
                }
            });
            break;         
        case 'showimage'://show picture
            displayImage(paramContext);
            break;
        case 'sort': //display sorting dialogue
            var params='serviceid=' + service + '&tag=_sort&context=' + context + '&id=' + paramID;
            //alert(params);
            return sortConsole(params,paramID,'generic_refresh_listing();');
            break;
        case 'sortAssets': //used to display sortable list of assets in assetWorkspace
            var params='serviceid=' + service + '&tag=_sortAssets&context=' + context + '&contextID=' + paramID;
            if ($('#serviceFilters').length){
                //check for subfilter first
                if (arguments.length==3){
                //paramSubFilter
                params+='&filter=' + paramSubFilter;
                }
                else{
                if($('#serviceFilters select').val().toString().indexOf('filter=')!=-1){
                
                var data=parseStringAsQuery($('#serviceFilters select').val());
                params+='&filter=' + data['filter'].toString();
                }
                }
            }
            var url=$('#base').val() + "v2010/ajax.asp";
            var d=new Date();
            var errorURL=url + '?' + params;
            //window.location.href=errorURL;
            $('#assetWorkspace').load(errorURL, function(){
                var params='serviceid=' + service + '&tag=_saveSort&context=assets';
                $('#sortForm #params').val(params)
                //bind to the cancel button
                $('#assetWorkspace #cancelButton').click(function(){
                    $('#assetWorkspace').html('');
                });
                //make the list sortable
                $('.wrapScroll ul').sortable();
                //intercept the post action
                $('#sortForm').submit(function(){
                      if (postSortables()){
                        asset_refresh_listing();
                      }
                      $('#assetWorkspace').html('');
                      return false;
               });//end handle submit
                 
                
            });
            //alert(params);
            break;
        
              
        case 'state'://change state
            var params='serviceid=' + service + '&tag=_state&context=' + context + '&id=' + paramID;            
            if ($('#serviceFilters').length){
                //check for subfilter first
                if (arguments.length==3){
                //paramSubFilter
                params+='&filter=' + paramSubFilter;
                }
                else{
                if($('#serviceFilters select').val().toString().indexOf('filter=')!=-1){
                var data=parseStringAsQuery($('#serviceFilters select').val());
                params+='&filter=' + data['filter'].toString();
                }
                }
            }
            var errorURL=$('#base').val() + "v2010/ajax.asp?" + params
            displayDebugingInformation(errorURL);
                    $.getJSON(errorURL, function(data){
                                if(data.errors==0){
                                                if ($('#state' + paramID).hasClass('state0')){
                                                        //currently 'off' 
                                                        $('#state' + paramID).removeClass('state0').addClass('state1');
                                                }
                                                else
                                                {
                                                        //currently on
                                                        $('#state' + paramID).removeClass('state1').addClass('state0');
                                                }
                                }
                                else{
                                    alert(data.message);
                                }
                        });                    

           // toggleState(params,paramID);
            break;
        case 'xreferences': //handle cross references
            var params='serviceid=' + service + '&tag=_xrefMembers&context=' + context + '&filter=' + paramSubFilter + '&recordid=' + paramID;            
            return manageXreferences(params,paramID,'setupXreferenceDialogue();','postXReferenceDialogue();');
            break;
        
        default://other actions         
                
    
    }
    return void[0];
}

//setupXreferenceDialogue
function setupXreferenceDialogue(){
//alert("setupMemberManagement")
       
        //$('.wrapLHSScroll ul').sortable( "destroy"); //remove if still in memory from a previous operation
        $('.wrapLHSScroll ul').sortable(); // make items in LHS draggable
        setupXreferenceDialogueRHS(); // set-up records in the RHS panel
}

//setupXreferenceDialogueRHS: capture the tick/untick events for managing members of an xreference context
function setupXreferenceDialogueRHS(){
        var url=$('#base').val() + "v2010/ajax.asp";
        var base=$('#params').val();
        var master=$('#master').val();
        var d=new Date();
        var filterName='';
        if ($('#serviceFilters').length){
                var data=parseStringAsQuery($('#serviceFilters select').val());
                filterName=data['filter'].toString();
            }        
    $('.wrapRHSScroll a').unbind().bind('click',function(e){
        e.preventDefault();
        var html='<li title="' + $(this).text() + '" id="' + $(this).attr('id').replace('href','item') + '"><a href="javascript: serviceAction(\'deleteXreference\',' + $(this).attr('id').replace('href','') + ',\'' + filterName + '\');" class="delete" title="Delete this record"></a>' + $(this).text() + '</li>';
        data=base + '&tag=_genericUpdateXREF&recordid=' + $(this).attr('id').replace('href','') + '&master=' + master + '&filter=' + filterName + '&KAV=' + d.toString() 
        errorURL=url + '?' + data
         if ($('#debugSave').length){
            if ($('#debugSave').attr('checked')==true){
                    openExternalTool(errorURL);
                     return void[0];
            }
         }      
        
        
        //alert(errorURL);
        if ($('#debugPanel').length){
            var debughtml=$('#debugPanel').html() + '<br/><strong>populateLinkTypeSelectorOptions</strong><br/>';
            debughtml+='param_url: <a href="' + errorURL + '">click for url</a><br/>';
            debughtml+='master: ' + master + '<br/>';
            $('#debugPanel').html(debughtml);
      
        
        }
        //window.location.href=errorURL;
        //return void[0];
        $.get(url,data);
        $(this).parent().slideUp('fast');
        //alert($('.wrapLHSScroll ul li').size());
        if ($('.wrapLHSScroll ul li').size() !=0){
            $(html).insertAfter('.wrapLHSScroll ul li:last');
        }
        else{
            $('.wrapLHSScroll ul').html(html);
        }
        
    });
}


function postXReferenceDialogue(){

//$('.wrapLHSScroll ul').unbind();
//$('.wrapRHSScroll a').unbind();

    //loops through sortables
    var url=$('#base').val() + "v2010/ajax.asp"
    var base=$('#serviceBase').val();
    var master=$('#master').val();
    var data='';
    var d=Math.random();
    var errorURL='';
    var filterName='';
            if ($('#serviceFilters').length){
                //check for subfilter first
                var data=parseStringAsQuery($('#serviceFilters select').val());
                filterName= data['filter'].toString();
            }
    
    
    //alert(base);
    //return false;
    $('.wrapLHSScroll li').each(function(i){
        //alert($(this).attr('id'));
        data=base + '&tag=_genericSaveSortMember&filter=' + filterName + '&recordid=' + $(this).attr('id').replace('item','') + '&master=' + master + '&sequence=' + i + '&KAV=' + d.toString().replace('.',''); 
        errorURL=url +  data
         if ($('#debugSave').length){
            if ($('#debugSave').attr('checked')==true){
                    openExternalTool(errorURL);
                     return void[0];
            }
         }      
        //openExternalTool(errorURL);
        //window.location.href=errorURL;
        //return void[0];
        $.get(errorURL);
    });
     $('.wrapLHSScroll ul').sortable( "destroy");
    return true;
}













function checkXERate(paramAcronym){
    var acronym='';
    if (arguments.length==0){
        if ($('#inputtitle').val().length==0){
            show_error_message("please enter the acronym for this currency (e.g. EUR or USD or GBP,etc.) before checking rate!",'error_message_panel'); 
            $('inputtitle').focus();
            return void[0];  
        }
        acronym=$('#inputtitle').val();
    }
    else{
        acronym=paramAcronym;
    }
    
    var url="http://www.xe.com/ucc/convert.cgi?Amount=1&From=EUR&To=" + acronym;
    openExternalTool(url);
    return void[0];
}




//
function openExternalTool(paramURL){
    var d=Math.random();
    var w='win' + d.toString().replace('.','')
    window.open(paramURL,w);
    return void[0];
}


function displayDebugingInformation(paramURL){
    if ($('#debugPanel').length){
         var html=$('#debugPanel').html() + '<br/><strong>ajax</strong><br/>';
         html+='param_url: <a href="' + paramURL + '">click for url</a><br/>';
         $('#debugPanel').html(html);
      }
    


}

