

//This is auto generated file frcom Controller project
if (typeof JobsDB_System_ControllerResponseConversion == "undefined") JobsDB_System_ControllerResponseConversion = {};
JobsDB_System_ControllerResponseConversion.CodeToString = function(type,code)
{
        if(type == 'WebflowEventType'){
            switch (code) {
                 case 0:
                    return 'None';
                    break;
                case 1:
                    return 'RefreshAuthenticationTicket';
                    break;
                case 2:
                    return 'RefreshCoverLetter';
                    break;
                case 3:
                    return 'DeletedCoverLetter';
                    break;
                case 4:
                    return 'RefreshResume';
                    break;
                case 5:
                    return 'DeleteResume';
                    break;
                case 6:
                    return 'RefreshJobApplication';
                    break;
                case 7:
                    return 'RefreshJobAlert';
                    break;
                case 8:
                    return 'DeleteJobAlert';
                    break;
                case 9:
                    return 'RefreshJobSave';
                    break;
                case 10:
                    return 'RefreshCandidateManagementComment';
                    break;
                case 11:
                    return 'RefreshJobPostingPackages';
                    break;
                case 12:
                    return 'RefreshResumeRequest';
                    break;
                case 13:
                    return 'RefreshJobAdManagementFolder';
                    break;
                case 14:
                    return 'JobSeekerLocalMemberRegistration';
                    break;
                case 15:
                    return 'TriggerCandidateManagementGridRefresh';
                    break;
                case 16:
                    return 'RefreshPersonalNotes';
                    break;
                case 17:
                    return 'RefreshJobAdManagementGrid';
                    break;
                case 18:
                    return 'RefreshCandidateMatch';
                    break;
                case 19:
                    return 'RefreshRecommendJobs';
                    break;
                case 20:
                    return 'RefreshCandidateHistory';
                    break;
                case 21:
                    return 'FolderAddSuccessEvent';
                    break;
            }
        }
        if(type == 'ResponseType'){
            switch (code) {
                 case 0:
                    return 'GenericWebflow';
                    break;
                case 1:
                    return 'ValidationFailure';
                    break;
                case 2:
                    return 'CustomHandle';
                    break;
            }
        }
        if(type == 'WebflowType'){
            switch (code) {
                 case 0:
                    return 'MainPage';
                    break;
                case 1:
                    return 'Thickbox';
                    break;
                case 2:
                    return 'PopupPage';
                    break;
                case 3:
                    return 'Layer';
                    break;
                case 4:
                    return 'NewWindow';
                    break;
                case 5:
                    return 'Viewless';
                    break;
            }
        }
        if(type == 'WebflowActionType'){
            switch (code) {
                 case 0:
                    return 'EvalScript';
                    break;
                case 1:
                    return 'DoNothing';
                    break;
                case 2:
                    return 'GoNext';
                    break;
                case 3:
                    return 'Close';
                    break;
            }
        }
        if(type == 'TargetType'){
            switch (code) {
                 case 0:
                    return 'Self';
                    break;
                case 1:
                    return 'Parent';
                    break;
                case 2:
                    return 'AllChildren';
                    break;
                case 3:
                    return 'AllWindows';
                    break;
            }
        }
    return code;
}

JobsDB_System_ControllerResponseConversion.StringToCode = function(type,codeString)
{
    var tempCodeString = ''+codeString;
        if(type == 'WebflowEventType'){
            switch (tempCodeString) {
                 case 'None':
                    return 0;
                    break;
                case 'RefreshAuthenticationTicket':
                    return 1;
                    break;
                case 'RefreshCoverLetter':
                    return 2;
                    break;
                case 'DeletedCoverLetter':
                    return 3;
                    break;
                case 'RefreshResume':
                    return 4;
                    break;
                case 'DeleteResume':
                    return 5;
                    break;
                case 'RefreshJobApplication':
                    return 6;
                    break;
                case 'RefreshJobAlert':
                    return 7;
                    break;
                case 'DeleteJobAlert':
                    return 8;
                    break;
                case 'RefreshJobSave':
                    return 9;
                    break;
                case 'RefreshCandidateManagementComment':
                    return 10;
                    break;
                case 'RefreshJobPostingPackages':
                    return 11;
                    break;
                case 'RefreshResumeRequest':
                    return 12;
                    break;
                case 'RefreshJobAdManagementFolder':
                    return 13;
                    break;
                case 'JobSeekerLocalMemberRegistration':
                    return 14;
                    break;
                case 'TriggerCandidateManagementGridRefresh':
                    return 15;
                    break;
                case 'RefreshPersonalNotes':
                    return 16;
                    break;
                case 'RefreshJobAdManagementGrid':
                    return 17;
                    break;
                case 'RefreshCandidateMatch':
                    return 18;
                    break;
                case 'RefreshRecommendJobs':
                    return 19;
                    break;
                case 'RefreshCandidateHistory':
                    return 20;
                    break;
                case 'FolderAddSuccessEvent':
                    return 21;
                    break;
            }
        }
        if(type == 'ResponseType'){
            switch (tempCodeString) {
                 case 'GenericWebflow':
                    return 0;
                    break;
                case 'ValidationFailure':
                    return 1;
                    break;
                case 'CustomHandle':
                    return 2;
                    break;
            }
        }
        if(type == 'WebflowType'){
            switch (tempCodeString) {
                 case 'MainPage':
                    return 0;
                    break;
                case 'Thickbox':
                    return 1;
                    break;
                case 'PopupPage':
                    return 2;
                    break;
                case 'Layer':
                    return 3;
                    break;
                case 'NewWindow':
                    return 4;
                    break;
                case 'Viewless':
                    return 5;
                    break;
            }
        }
        if(type == 'WebflowActionType'){
            switch (tempCodeString) {
                 case 'EvalScript':
                    return 0;
                    break;
                case 'DoNothing':
                    return 1;
                    break;
                case 'GoNext':
                    return 2;
                    break;
                case 'Close':
                    return 3;
                    break;
            }
        }
        if(type == 'TargetType'){
            switch (tempCodeString) {
                 case 'Self':
                    return 0;
                    break;
                case 'Parent':
                    return 1;
                    break;
                case 'AllChildren':
                    return 2;
                    break;
                case 'AllWindows':
                    return 3;
                    break;
            }
        }
    return codeString;
}

JobsDB_System_ControllerResponseConversion.CountryCodeToDomain = function(countryCode)
{
    var tempCodeString = ''+countryCode;
    tempCodeString = tempCodeString.toUpperCase();
    var domain = '';
    
    if (countryCode.toLowerCase()  == g_countryCode.toLowerCase()) {
        domain = g_currentSite.substring(0, g_currentSite.length - 2);                      
    }
    else {
        switch (tempCodeString) {
            case 'AU':
                domain = 'http://www.jobsdb.com/AU/';
                break;
            case 'HK':
                domain = 'http://www.jobsdb.com/HK/';
                break;
            case 'ID':
                domain = 'http://id.jobsdb.com/ID/';
                break;
            case 'IN':
                domain = 'http://www.jobsdb.com/IN/';
                break;
            case 'KR':
                domain = 'http://www.jobsdb.com/KR/';
                break;
            case 'MY':
                domain = 'http://www.jobsdb.com/MY/';
                break;
            case 'PH':
                domain = 'http://www.jobsdb.com/PH/';
                break;
            case 'SG':
                domain = 'http://www.jobsdb.com/SG/';
                break;
            case 'TH':
                domain = 'http://th.jobsdb.com/TH/';
                break;
            case 'TW':
                domain = 'http://www.jobsdb.com/TW/';
                break;
            case 'US':
                domain = 'http://www.jobsdb.com/US/';
                break;
            default:
                domain = g_currentSite.substring(0, g_currentSite.length - 2);                      
                break;
        }
    }
            
    return domain;
}

JobsDB_System_ControllerResponseConversion.IsIgnoreCarryOverControllerAction = function(actionUrl)
{
    var link = actionUrl;
    if (actionUrl.indexOf('?') > -1)
        link = actionUrl.substring(0, actionUrl.indexOf('?'));
     if( link.indexOf('/Search/JobsDetails') > -1)
        return true;        
    if( link.indexOf('/Search/FindJobs') > -1)
        return true;        
    return false;
}

// Try to get an ControllerResponse from responseData.
// If a ControllerResponse cannot be extracted, we will return a response object where:
// Type = 'CustomHandle'
// RawData = responseData
JobsDB_System_ControllerResponseConversion.GetControllerResponseInJsonObject = function(responseData)
{
    var response = new Object;
    response.Type = 'CustomHandle';
    response.RawData = responseData;

    var xmlResponseData = null;

    if ((typeof responseData) == 'string')
    {
		var isJsonControllerResponse = false;
        if (responseData.indexOf('<?xml') >= 0 && responseData.indexOf('ControllerResponse') > 0)
        {
            try {
                xmlResponseData = JobsDB_System_Messaging.GetXmlFromString(responseData);
            }
            catch (ex) {
                // If we have problem in parsing the XML string, we assume it's raw data.
            }
        }else if(responseData.trim().indexOf('{') == 0)
		{
			//Assume we should return the html view content start with '{'
			responseData =  json_parse(responseData);
			isJsonControllerResponse = true;
		}
        
        if (xmlResponseData === null && !isJsonControllerResponse )
        {
            // It is raw data.  Just return.
            return response;
        }
    }
    else if ((typeof responseData) == 'object' && responseData.documentElement != undefined)
    {
        // Assume it's XML.
        xmlResponseData = responseData;
    }
    
    if (xmlResponseData === null)
    {
        // It's not an XML.  Assume it's JSON.
        // Convert numeric value to Enum strings.
        response = responseData;
        response.Type = JobsDB_System_ControllerResponseConversion.CodeToString('ResponseType', response.Type);            
        response.Webflow = JobsDB_System_ControllerResponseConversion.CodeToString('WebflowType', response.Webflow);            
        response.WebflowAction = JobsDB_System_ControllerResponseConversion.CodeToString('WebflowActionType', response.WebflowAction);            
        response.Target = JobsDB_System_ControllerResponseConversion.CodeToString('TargetType', response.Target);            
        response.UnBlockingEvent = JobsDB_System_ControllerResponseConversion.CodeToString('WebflowEventType', response.UnBlockingEvent);            
    }
    else
    {
        // ConvertFrom Xml
        $(xmlResponseData).find("ControllerResponse").each(function() {
          response.Type = $(this).find("Type").text();
          response.CountryCode = $(this).find("CountryCode").text();
          response.LanguageCode = $(this).find("LanguageCode").text();
          response.Webflow = $(this).find("Webflow").text();
          response.ActionUrl = $(this).find("ActionUrl").text();
          response.WebflowAction = $(this).find("WebflowAction").text();
          response.JsonData = $(this).find("JsonData").text();
          response.JsonNotificationData = $(this).find("JsonNotificationData").text();
          response.JsonErrorData = $(this).find("JsonErrorData").text();
          response.Description = $(this).find("Description").text();
          response.EvalScript = $(this).find("EvalScript").text();
          response.NextControllerResponeseDelayTime = $(this).find("NextControllerResponeseDelayTime").text();
          response.NextControllerResponese = $(this).find("NextControllerResponese").text();
          response.IsBlocked = $(this).find("IsBlocked").text();
          response.Target = $(this).find("Target").text();
          response.UnBlockingEvent = $(this).find("UnBlockingEvent").text();
          response.ContainerWidth = $(this).find("ContainerWidth").text();
          response.ContainerHeight = $(this).find("ContainerHeight").text();
        });
    }
    
    return response;
}
