/* Logs something in the browser's console if exists */

/*
 * Logs Message to the browser console
 * 
 * @param message string Message
 */
function log(message1, message2)
{    
   var alertFallback = true;
   if (typeof console === "undefined" || typeof console.log === "undefined") {
     console = {};
     if (alertFallback) {
         console.log = function(message1, message2) {
             if (typeof message2 != 'undefined') {
                 //alert(message1 + ' ' + message2);
             } else {
                 //alert(message1);
             } 
         };
     } else {
         console.log = function() {};
     }
   } else {
       if (typeof message2 != 'undefined') {
           console.log(message1, message2);
       } else {
           console.log(message1);
       }         
   }    
      
}

function validJSONResponse(json, objectName, methodName)
{
    var errMessage = false;
    var statusFlag = false;

    if (typeof json !== 'object') {
        errMessage = 'Could not parse JSON response';
    } else if (typeof json.result == 'undefined') {
        errMessage = 'Could not find RESULT in the JSON string';
    } else if (json.result != 200) {
        errMessage = 'No valid JSON result code';
        statusFlag = true;
    }

    if (errMessage != false) {
        var status = 'No valid JSON';
        var responseText = (typeof json == 'object') ? JSON.stringify(json) : '{}';
        var jqXHR = {'status': status, 'statusText': errMessage, 'reponseText': responseText};
        error_obj.log(jqXHR, '', errMessage, objectName, methodName);
        return false;
    }

    return true;
}


function simulationIdToStr(simulationId)
{
    if (simulationId == child) {
        return 'child';
    } else if (simulationId == adult) {
        return 'adult';
    }

    return false;
}

function setEntity(simulationId)
{
    if (simulationId == child) {

        if (child_obj == false) {
            child_obj = new Entity(child);
        }

        return child_obj;
    } else if (simulationId == adult) {

        if (adult_obj == false) {
            adult_obj = new Entity(adult);
        }

        return adult_obj;
    } 
    
    /* @todo handle error */
    return false;
    
}

function isValidCourseId(courseId)
{   
    var result = false;
    
    var data = {
        cmd: 'isvalidcourseid',
        courseid: courseId,
        simid: active
    };
    
    $.ajax({
        url: '/api/entity/v2/',
        type: 'POST',
        dataType: 'json',
        data: data,
        async: false,
        success: function(json) {                        
            if (json.valid == true) {
                result = true;
            }
        },
        error: function(x,y,z) {
            error_obj.log(x,y,z,'Utils','isValidCourseId');
        }
    });
    
    return result;
}

function roundAge(ageMonths)
{
    var mod = 0;
    if (ageMonths > 24) {       
       mod = ageMonths%12;       
       if (mod != 0) {
           ageMonths = ageMonths - mod;           
       }
    }
    
    return ageMonths;
}

function inRange(age, start, end)
{
    if ( (age >= start)  && (age <= end)) {
        return true;
    }

    return false;
}

function monthsToStr(m)
{
    if (m <= 24) {
        return m + ' months';
    } else {
        if ((m%12) == 0) {
            return (m/12) + ' years';
        } else {
            var j = m - (m%12);
            j = j/12;
            return j + ' years, ' + (m%12) + ' months';
        }
    }    
}

function oc(a)
{
    var o = {};    
    for (var i = 0; i < a.length; i++) {        
        o[a[i]] = '';
    }
    
    return o;
}

/*
 * IE Fixes to support CSS3 shadows and cool buttons.
 */
function ieFix()
{

    if ($.browser.msie && parseInt($.browser.version) <= 8) {
        $('.shadow').each(function(index){ // CSS3 Shadow
            var e = $(this);

            if (!e.parent().is('.ie-shadow')) {
                var css = [];
                function fixMargin(mtype, rest)
                {
                    var m = parseInt(e.css(mtype));
                    if (m > 0) {
                        css[mtype] = m - rest;
                        e.css(mtype, 0);
                    }
                }

                fixMargin('marginLeft', 3);
                fixMargin('marginTop', 3);
                fixMargin('marginRight', 5);
                fixMargin('marginBottom', 5);

                var wrp = $('<div class="ie-shadow"></div>').css(css);
                e.wrap(wrp);
            }
        });

        $('.minimal-indent').each(function(){ // Grey Buttons
            var e = $(this);
            var c = 'btngrey' + e.width();
            e.removeClass('minimal-indent').addClass(c);

        });

        $('.shiny-blue').each(function(){ // Blue buttons
            var e = $(this);
            var c = 'btnblue' + e.width();
            e.removeClass('shiny-blue').addClass(c);
        });

    }
}

