/**
 * BC/ of AJAX call being in object, vars have to be set global to be accessible in object
 */
var ajax_load = new Image();
ajax_load.src = '/images/game/structure/ajax_load.gif';
var right_column;
var left_column;
var sUrl;
var widget_id;
var contest_id;
var side_tab;
var top_tab;
var temp_side_tab;
var temp_top_tab;
var side_tab_update;
var top_tab_update;
var model_id;


function tabSelect(element, action, this_widget_id,args) {
    temp_top_tab = document.getElementById(element);
   
    if(temp_top_tab) {
        widget_id = this_widget_id;                
        viewContestData(action,args, false,true);
    }    
}

function getAjaxResponse(response)
{
    if(!response || response=='')
    {
        return null;
    }

    var results = response.split('~||~');
    if(results.length<2)
    {
        return null;
    }
    return results;
}

function sideTabSelect(this_element, this_widget_id, this_contest_id) {
    temp_side_tab = document.getElementById(this_element);

    if(!temp_side_tab)
    {
        return;
    }

    widget_id = this_widget_id;
    contest_id = this_contest_id;
   
    temp_top_tab = document.getElementById('contest_tab_'+widget_id);

    viewContestData('show_contest','',true,false);
}

function turnOnSideTab()
{
    side_tab = (!temp_side_tab ? side_tab : temp_side_tab);
    if(!side_tab)
    {
        return;
    }

    turnOffSideTabs();

    side_tab.setAttribute("className","contest_title_selected");
    side_tab.setAttribute("class","contest_title_selected");
    side_tab.blur();
    
}

function turnOffSideTabs()
{
    //grab all elements w/ class name and set 'a' to unselected class tag
    var list_items;
    list_items = YAHOO.util.Dom.getElementsByClassName('contest_title');

    for(var i=0; i<list_items.length; i++)
    {
        var a_tag = YAHOO.util.Dom.getFirstChild(list_items[i]);
        if(a_tag)
        {
            a_tag.setAttribute("className","");
            a_tag.setAttribute("class","");
        }
    }
}

function turnOnTopTab()
{
    top_tab = (!temp_top_tab ? top_tab :temp_top_tab);
    if(!top_tab)
    {
        return;
    }

    //grab all elements w/ class name and set 'a' to unselected class tag
    var list_items;
    list_items = YAHOO.util.Dom.getElementsByClassName('contest_tab');

    for(var i=0; i<list_items.length; i++)
    {
        //check if disabled class is set, if so remember to retain it when removing selected class
        var class_name = list_items[i].getAttribute('className');
        if(!class_name)
        {
            class_name = list_items[i].getAttribute('class');
        }
        if(class_name && class_name.indexOf('contest_tab_disabled')>=0)
        {
            list_items[i].setAttribute("className","contest_tab contest_tab_disabled");
            list_items[i].setAttribute("class","contest_tab contest_tab_disabled");
        } else
        {
            list_items[i].setAttribute("className","contest_tab");
            list_items[i].setAttribute("class","contest_tab");
        }
    }

    top_tab.setAttribute("className","contest_tab contest_tab_selected");
    top_tab.setAttribute("class","contest_tab contest_tab_selected");
    top_tab.blur();
}

function changeWidgetPage(offset,limit)
{
    var action;
    if(!top_tab || top_tab.id.indexOf('contest_tab')>-1)
    {
        action = 'current_contests';
    } else if(top_tab.id.indexOf('upcoming_tab')>-1)
    {
        action = 'upcoming_contests';
    } else if(top_tab.id.indexOf('past_tab')>-1)
    {
        action = 'past_contests';
    }

    viewContestData(action,offset+'/'+limit+'/',true,true);
}


// method to load tab content
function viewContestData(action,args,my_side_tab_update,my_top_tab_update)
{    
    right_column = document.getElementById('contest_right_column_'+widget_id);
    left_column = document.getElementById('contest_left_column_'+widget_id);
    side_tab_update = my_side_tab_update;
    top_tab_update = my_top_tab_update;

    if(!right_column || !left_column)
    {
        alert('Contest containers not available, please contact us for assistance');
    }
    
    var old_content;
    var left_old_content;
    var results;

    old_content = right_column.innerHTML;
    right_column.innerHTML = '<img src="'+ajax_load.src+'" style="width:'+ajax_load.width+'px;height'+
        ajax_load.height+':px;margin:auto;" alt="loading..." />';
   
    sUrl = '/game/contest/ContestAjaxRequest/'+action+'/'+widget_id+'/'+contest_id+'/'+(model_id?model_id+'/':'');

    switch(action)
    {
        case 'show_contest' :        
        AjaxRequest.post(
          {
            'url':sUrl
            ,'onSuccess':function(req) {
                results = getAjaxResponse(req.responseText);
               
                if(results==null || results[0]=='error')
                {
                    right_column.innerHTML = old_content;
                    alert('There was an error with fulfilling the request');
                } else if(results[0]=='success')
                {
                    right_column.innerHTML = results[1];
                    if(side_tab_update)
                    {
                        turnOnSideTab();
                    }
                    if(top_tab_update)
                    {
                        turnOnTopTab();
                    }
                }
                temp_top_tab = null;
                temp_side_tab = null;
            }
            ,'timeout':5000            
            ,'onTimeout':function(){ right_column.innerHTML = old_content;
                alert('The request timed out, please try again');}
          }
        );       
        break;

        case 'current_contests' :
        case 'upcoming_contests' :
        case 'past_contests' :
        if(model_id && model_id!='')
        {
            sUrl = '/game/contest/ContestAjaxRequest/'+action+'/'+widget_id+'/'+model_id+'/'+(!args?'':args);
        } else
        {
            sUrl = '/game/contest/ContestAjaxRequest/'+action+'/'+widget_id+'/0/'+(!args?'':args);
        }
        left_old_content = left_column.innerHTML;
        left_column.innerHTML = '<img src="'+ajax_load.src+'" style="width:'+ajax_load.width+'px;height'+
        ajax_load.height+':px;margin:auto;" alt="loading..." />';
        AjaxRequest.post(
          {
            'url':sUrl
            ,'onSuccess':function(req) {
                results = getAjaxResponse(req.responseText);

                if(results==null || results[0]=='error')
                {
                    right_column.innerHTML = old_content;
                    left_column.innerHTML = left_old_content;
                    alert('There was an error with fulfilling the request');
                } else if(results[0]=='success')
                {
                    left_column.innerHTML = results[1]; //get new contests
                    right_column.innerHTML = results[2]; //get contest data
                    contest_id = (results.length>3?results[3]:null); //set the current contest_id to the first one in the list
                    if(top_tab_update)
                    {
                        turnOnTopTab();                       
                    }
                }
                temp_top_tab = null;
                temp_side_tab = null;
            }
            ,'timeout':5000
            ,'onTimeout':function()
            {
                right_column.innerHTML = old_content;
                left_column.innerHTML = left_old_content;
                alert('The request timed out, please try again');
            }
          }
        );
        break;

        /*case 'upcoming_contests' :
        sUrl = '/game/contest/ContestAjaxRequest/'+action+'/'+widget_id+'/'+args;
        AjaxRequest.post(
          {
            'url':sUrl
            ,'onSuccess':function(req) {
                results = getAjaxResponse(req.responseText);

                if(results==null || results[0]=='error')
                {
                    right_column.innerHTML = old_content;
                    alert('There was an error with fulfilling the request');
                } else if(results[0]=='success')
                {
                    right_column.innerHTML = results[1];
                    if(top_tab_update)
                    {
                        turnOnTopTab();
                        turnOffSideTabs();
                    }
                }
                temp_top_tab = null;
                temp_side_tab = null;
            }
            ,'timeout':5000
            ,'onTimeout':function(){ right_column.innerHTML = old_content;
                alert('The request timed out, please try again');}
          }
        );
        break;*/      

        case 'search_contests' :
        left_old_content = left_column.innerHTML;
        left_column.innerHTML = '<img src="'+ajax_load.src+'" style="width:'+ajax_load.width+'px;height'+
        ajax_load.height+':px;margin:auto;" alt="loading..." />';
        AjaxRequest.post(
          {
            'url':sUrl
            ,'onSuccess':function(req) {
                results = getAjaxResponse(req.responseText);

                if(results==null || results[0]=='error')
                {
                    right_column.innerHTML = old_content;
                    left_column.innerHTML = left_old_content;
                    alert('There was an error with fulfilling the request');
                } else if(results[0]=='success')
                {
                    left_column.innerHTML = results[1];
                    right_column.innerHTML = results[2]
                    //assign side_tab and top_tab as the first tabs for current widget_id
                    top_tab = document.getElementById('contest_tab_'+widget_id);
                    side_tab = document.getElementById('title_0_'+widget_id);
                    if(side_tab_update)
                    {
                        turnOnSideTab();
                    }
                    if(top_tab_update)
                    {
                        turnOnTopTab();
                    }
                }
                temp_top_tab = null;
                temp_side_tab = null;
            }
            ,'timeout':5000
            ,'onTimeout':function(){
                right_column.innerHTML = old_content;
                left_column.innerHTML = left_old_content;
                alert('The request timed out, please try again');}
          }
        );
        break;

        default:
        right_column.innerHTML = old_content;
        alert('There was no action provided');
        break;

    }
}
