/* 
ajax.js: generic library of javascript for animation / branding effects
    david.kelly@fanore.com (http://www.fanore.com/website_design.htm)
    
    
    
*/

//    generic_populate_panel: uses ajax to open param_url, into param_el and executes param_complete when finished

function generic_populate_panel(param_url, params, param_el, param_complete){
    if (params.indexOf('xedit') > 0){
    window.location.href=param_url + "?" + params
    return void[0];
    }
    var d=new Date();
    //alert(params)
      var myAjax = new Ajax.Updater(param_el, 
            param_url, 
            {
                method: 'get', 
                parameters: params + '&d=' + d.toString(),
                onComplete: function(obj){
                  eval('tickle_session();')
                  if (param_complete.indexOf(';')>0){
                    var p=param_complete.split(';')
                    for (var i=0;i<p.length;i++){
                        
                        eval(p[i]);
                    }
                  }
                  else{
                    if (param_complete=='generic_tracking'){
                        generic_tracking(params);  
                    }
                    else
                    {
                     eval(param_complete);
                     }
                  }
                }
            });   

} 
function generic_null(){
    return void[0];
}
function generic_tracking(params){
    //alert(params)
    var el=get_el('url_params');
    if (el){
        el.value=params;
    }
    return void[0];
}

//generic_refresh_dashboard: refresh an ajax enabled workspace dashboard
function generic_refresh_dashboard(){
    var el=get_el('dashboard_params');
    var url="../asp/object_administration.asp"
    if (el){
        var params=el.value;
        //alert(params);
        var d=new Date();
          var myAjax = new Ajax.Updater('dashboardpanel', 
                url, 
                {
                    method: 'get', 
                    parameters: params + '&d=' + d.toString(),
                    onComplete: function(obj){
                      eval('tickle_session();')
                      
                    }
                });   
        
        
    }
}
// generic_refresh_listing: populate ajax_results with appropriate listing
function generic_refresh_listing(){
var el=get_el('url_params');
var url="../asp/object_administration.asp"
    if (el){
        var params=el.value;
        //alert(params);
        var d=new Date();
          var myAjax = new Ajax.Updater('ajax_results', 
                url, 
                {
                    method: 'get', 
                    parameters: params + '&d=' + d.toString(),
                    onComplete: function(obj){
                      eval('tickle_session();')
                      eval('generic_refresh_dashboard();');
                    }
                });   
        
    }
 return void[0];
}


// generic_clear: simply clears innerhtml of ajax_results panel
function generic_clear(){
    $('ajax_results').innerHTML='';
}

/* generic_context_selector: uses the param_context to build ajax call to populate 'select an item' dialogue
                             param_context: tag context to enable rendering of appropriate listing
                             param_base: first part of params e.g. objectid=x&tag=y
                             param_el: id of element into which the ID value of selected item should be injected
                             param_caption: id of the element into which the 'name' / 'caption' of item selected should be injected
*/                            
function generic_context_selector(param_context, param_base, param_el,param_caption,param_before){
    var params=param_base
    if (param_before.length!=0){
        var proceed=eval(param_before);
        if (proceed==false){
            return void[0];
        }
         params=params + proceed;
    }
    
    var url='../asp/object_administration.asp';
    if (param_context.length==0){return void[0]}
    
    //populate utility object with ajax content and present on screen
      var d=new Date();
          var myAjax = new Ajax.Updater('utility', 
                url, 
                {
                    method: 'get', 
                    parameters: params + '&d=' + d.toString() + '&context=' + param_context + '&el=' + param_el + '&caption=' + param_caption,
                    onComplete: function(obj){
                      
                      eval('tickle_session();')
                      eval('position_utility();');
                    }
                });       
    
}

/*
generic_selector_select_this: when panel populated (see generic_context_selector) each item can be selected - points at this function
    param_id: id of the item selected
    param_el: id of element into which param_id should be placed (always a text box)
    param_caption: id of element into which 'title of item' should be placed
     
*/
function generic_selector_select_this(param_id, param_el, param_caption, param_auto){
var url="../asp/object_administration.asp"
    if (param_auto.length!=0){
        //special case requires that we open param_auto via ajax and then refresh list
          var d=new Date();
              var myAjax = new Ajax.Updater(param_caption, 
                    url, 
                    {
                        method: 'get', 
                        parameters: param_auto + '&d=' + d.toString() + '&param_id=' + param_id,
                        onComplete: function(obj){
                          generic_close_utility();
                          eval('generic_refresh_listing();')
                        }
                    });       
           
    }
    else{
    
    
    $(param_el).value=param_id;
    $(param_caption).innerHTML=$('caption' + param_id).innerText;
    generic_close_utility();
    }
}

//generic_close_utility: simply closes the utility object
function generic_close_utility(){
    new Effect.DropOut('utility');
    $('utility').innerHTML='';
}

//generic_delete: deletes item from ajax feature
function  generic_delete(params,param_id){
    if (!confirm('Are you sure you want to delete this record?')){
        return void[0];
    }
    var url="../asp/object_administration.asp" 
    var row_id='listing_' + param_id
    var d=new Date();
    //to debug any issues with deleting items simply uncomment the lines below
    //window.location.href=url + "?" + params + '&param_id=' + param_id + '&d=' + d.toString()
    //return void[0];
          
              var myAjax = new Ajax.Updater('dump', 
                    url, 
                    {
                        method: 'get', 
                        parameters: params + '&param_id=' + param_id + '&d=' + d.toString(),
                        onComplete: function(obj){
                          Element.remove(row_id);
                        }
                    });       
    return void[0];
}

//generic_state_change: applies status update to passed data / toggles on/off only
function generic_state_change(params, param_id){
    var url="../asp/object_administration.asp"
    var d=new Date();
    var img='state_' + param_id;
    var o_src=$(img).src
//     alert($(img).src)
    if (params.endsWith('0')){
        var src='../images/status_1.gif'
        var n_params=params.replace('current=0','current=1');
        var n_ref="javascript: generic_state_change('" + n_params + "'," + param_id + ");"
    }
    else{
        var src='../images/status_0.gif'
        var n_params=params.replace('current=1','current=0');
        var n_ref="javascript: generic_state_change('" + n_params + "'," + param_id + ");"
    }
    //get original value of 'href'
    var myAjax = new Ajax.Updater('dump', 
                    url, 
                    {
                        method: 'get', 
                        parameters: params + '&param_id=' + param_id + '&d=' + d.toString(),
                        onComplete: function(obj){
                         //   alert($(img).src)
                          $(img).src=src;
                          //alert($(img).src)
                          //alert(n_ref)
                          $('state_action_' + param_id).href=n_ref;
                        }
    });       
    return void[0];
    
}

//track_narrative: activates narrative tracking
function track_narrative(){
        var alreadyRun = false;
        var cwseditor = FCKeditorAPI.GetInstance('txtHTML') ;
    	var oDOM = cwseditor.EditorDocument ;
    	var iLength ;
        iLength = oDOM.body.innerText.length ;
        var buffer=oDOM.body.innerText;
        iLength=buffer.length //length of characters in object being tracked
        // pickup tracking variables
        var i_limit=parseInt($F('tracking_limit')) // limit of characters
        var i_tracking=parseInt($F('tracking_state')) // current state on/off
        var el_reciever=$F('tracking_reciever');//object to populate
        if (i_tracking==0){ // implies that tracking is turned off
            return void[0];
        }
        
        
        if (iLength > i_limit){
            iLength=i_limit;
        }
        $(el_reciever).value=buffer.substring(0,iLength);
        var el=get_el('js_characters')
        if (el){
                 $('js_characters').innerText=$(el_reciever).value.length 
        }
    return void[0];        

}

function toggle_track_narrative(){
    var track_on_text='<span>stop tracking</span>';
    var track_off_text='<span>track narrative</span>';
    var param_switch=parseInt($F('tracking_state'));
    if (parseInt(param_switch)==0){
        $('tracking_state').value='1'
        $('track_button').innerHTML=track_on_text
    }
    else{
        $('tracking_state').value='0'
        $('track_button').innerHTML=track_off_text
    
    }
    return void[0];
}

//thumbnail_manager: dhtml panel for manipulating thumbnail images
function thumbnail_manager(param_url,params,param_id){
    alert("this feature currently unavailable");
    return void[0];
    var d=new Date();
      var myAjax = new Ajax.Updater('utility', 
            param_url, 
            {
                method: 'get', 
                parameters: params + '&d=' + d.toString(),
                onComplete: function(obj){
                  eval('tickle_session();')
                  eval('position_utility();');
                }
            });   
    
}




