/**
* General Javascript functions that are needed in multiple places
**/


$.formError = function(){   
    $.formError.getErrors();
}


$.extend($.formError, {
    settings: {
        ajaxPath : baseURL+'/ajax/formError'
    },
    
    getErrors:function(){
        $.post($.formError.settings.ajaxPath, 
            { 
               task: 'listErrors'
            },
            function(data) {     
                $('#formErrorHolder').empty().append(data);
                $("#formError").effect("highlight", {}, 3000);
            }
        );
    }
});


function serializeJs(array){
    var sArray = "";
    var totalItems = 0;
    for (var key in array)
    {
        ++ totalItems;
        sArray = sArray + "s:" +
                String(key).length + ":\"" + String(key) + "\";s:" +
                String(array[key]).length + ":\"" + String(array[key]) + "\";";
    }
    sArray = "a:" + totalItems + ":{" + sArray + "}";
    return sArray;    
}



$.fn.reset = function() { 
    $('#'+$(this).attr('id'))[0].reset();
    return false;
}




function forceCheck(on,className,fallback){
    var onCheck = false;
    
    $("."+className).each(function(i){
        if($(this).is(':checked') && $(this).attr('value')==on)
            onCheck = true;
    });
    
    $("."+className).each(function(i){
        if(onCheck && $(this).attr('value')!=on)
            $(this).removeAttr('checked');
    });
    
    if(fallback){
        $("."+className).each(function(i){
            if(!onCheck && $(this).attr('value')==fallback)
                $(this).attr('checked','true');
        });
    }
    
}

function toggleCheckBoxes(what){
    
    $checkBoxes = $(what);
    
    if($checkBoxes.size() != $checkBoxes.filter(':checked').size()){
        $(what).attr('checked','checked')
    }else
        $(what).removeAttr('checked');
    
}



function launchFullScreen(url) {
    // Defaults for browsers without (screen)
    winWidth = 400; 
    winHeight = 400; 
    if (screen){ 
       winWidth = screen.width;
       winHeight = screen.height;
    }

    newWindow = window.open(url, 'newWin', 'toolbar=no,location=no,scrollbars=no,resizable=yes,width='+winWidth+',height='+winHeight+',left=0,top=0');
    newWindow.focus();
}

function updateInpSize(o,l){
    $(o).attr('size',$(o).val().length + l);
}
