/**
 * @param (string) itm
 * @param (string) img
 */
function showhideinfo(itm, img) {
	var	image = document.getElementById(img);
	var	div = document.getElementById(itm);
	var name = '#'+itm;
	var isShow = div.style.display;	
	
	if (isShow == 'block') {
		$(name).hide();
		div.style.display = 'none';
		if (image != null)
			image.className = 'ui-icon ui-icon-plus';
	}
	else {		
		$(name).show();
		div.style.display = 'block';
		if (image != null)
			image.className = 'ui-icon ui-icon-minus';
	}
}
/**
 * @param (string) itm
 * @params (string) cls
 * @param (string) val
 */
function hover(itm, cls, val) {
	var name = '#'+itm;
	if(!val)
		$(name).removeClass(cls);
	else
		$(name).addClass(cls);
}
/**
 * Remove whitespaces before and after the string.
 * @param (string) str
 */
function trim(str)
{
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
/** 
 * @param (string) controlname
 * @param (int) displaypage
 * @param (string) dataString Parameters
 */
function LoadContent(controlname,displaypage,dataString)
{
	dataString = (!dataString)? '{"pageNumber":1}' : dataString;
    var control = ShowLoader();
    
	$('#'+controlname).load($('#baseUrl').val()+'/'+displaypage,{"data":dataString},function() {
            HideLoader(control);
        });
}

/** 
 * @param (string) controlname
 * @param (int) displaypage
 * @param (string) dataString Parameters
 */
function LoadContentWithoutLoader(controlname,displaypage,dataString)
{
	dataString = (!dataString)? "{pageNumber:1}" : dataString;
    $("#"+controlname).load($("#baseUrl").val()+"/"+displaypage,{'data':dataString});
}

/**
 * Instantiates the control dialog and set the height and width properties.
 * @param (Object) control
 * @param (int) height
 * @param (int) width
 */
function CreateDialog(control,height,width)
{
	control.dialog(
	{
		bgiframe: true,
		autoOpen: true,
        bgiframe: true,
        draggable: true,
        modal: true,
        position: 'top',
        resizable: false,
        close: function()
        {
            $(this).dialog('destroy');
        }
	});	
	if(height > 0)
	{
		control.dialog('option', 'height',height);	
	}
	if(width > 0)
	{
			control.dialog('option', 'width', width);
	}
	control.dialog('option', 'position', 'center');
}

/**
 * Create delete confirmation dialog.
 * @param (Object) control
 * @param (string) requestURL
 * @param (array) data
 * @param (string) objContainerID
 * @param (string) callbackURL
 * @param (string) callback_data
 */
function DeleteDialog(control,requestURL,data,objContainerID,callbackURL,callback_data)
{
    CreateDialog(control,0,0);
    control.dialog('option', 'buttons', {
        "No" : function(){
            $(this).dialog('close');
        },
        "Yes" : function(){
            var saveurl = $("#baseUrl").val()+"/"+ requestURL;
            $.post(saveurl,data, function(){
                LoadContent(objContainerID,callbackURL,callback_data);
            });
            $(this).dialog('destroy');
        }
    });
}

/**
 * Create exists error dialog.
 */
function ExistsDialog()
{
	var control = $("#existPopup");
	CreateDialog(control, 0, 0);
	control.dialog('option', 'buttons', {"OK" : function() {$(this).dialog('close');}});
}
/**
 * Create general error dialog.
 */
function ErrorDialog()
{
	var control = $("#errorPopup");
	CreateDialog(control, 0, 0);
	control.dialog('option', 'buttons', {"OK" : function() {$(this).dialog('close');}});
}
/**
 * Create message dialog. 
 * @param (String) dialogid
 */
function MessageDialog(dialogid)
{
	var control = $("#" + dialogid);
	CreateDialog(control,0,0);
	control.dialog('option', 'buttons', {"OK" : function(){$(this).dialog('close');}});	
}

function CheckTime(time)
{	
    var timereg = /^([0-1]?[0-9]|2[0-3])[:][0-5][0-9]$/;
    var result = timereg.test(time);
    return result;
}

function CheckFarePrice(price) {
    if (price == '') return false;
    var result = /^[1-9][0-9]{0,2}(,[0-9]{3})*(\.[0-9]{2})?$/.test(price);
    if (!result) result = /^[1-9][0-9]*(\.[0-9]{2})?$/.test(price);
    return result;
}

function submitForm(formname, action)
{
	if (action != null) document.forms[formname].action = action;
	document.forms[formname].submit();
}

function checkNumInput(e) {
	var _enter = 8;
	var _tab = 9;
	var _arrowleft = 37;
	var _arrowright = 39;
	var _delete = 46; 
	
	var unicode = e.charCode ? e.charCode : e.keyCode;
	if (unicode != _enter && unicode != _tab && unicode != _arrowleft 
			&& unicode != _arrowright && unicode != _delete){ 
		if (unicode < 48 || unicode > 57) //if not a number 
			return false; 
	}
	return true;
}

function computeVAT(e, basecontrol, fuelcontrol, vatcontrol) {
	var unicode = e.charCode ? e.charCode : e.keyCode;
	if(unicode == 13) {
		var basefare = $("#" + basecontrol).val();
		
		if(ValidIntOrDecimal(basefare)){
			var amount = parseFloat(basefare);
		
			if(fuelcontrol != null && ValidIntOrDecimal($("#" + fuelcontrol).val())) {
				amount = amount + parseFloat($("#" + fuelcontrol).val());
			}
			var vat = Math.round(amount * 0.12 * 100)/100;
			//alert(amount);
			$("#" + vatcontrol).val(vat);
		}
	}
}

function ValidIntOrDecimal(num){
	var decimal =/^[0-9]+(\.[0-9]+)+$/;
	var integer =/^[0-9]+$/; 
	if(num.match(decimal) || num.match(integer))
	{ 
		return true;
	}
	return false;
}

function ValidateId(id){
    if (id == null || id <= 0){
        return false;
    }
    return true;
}

function ValidateDate(datevalue){
    test = Date.parse(datevalue);
    if (isNaN(test)){
        return false;
    }
    return true;
}

/**
 * Show general error message
 * @param (Object) validator
 */
function ShowErrorMessage(validator){
    var errors = validator.numberOfInvalids();
    if (errors) {
    	var message = errors == 1
        ? 'You missed 1 field. It has been highlighted below'
        : 'You missed ' + errors + ' fields. They have been highlighted below';
        $("div.error span").html(message);
        $("div.error").show();
    } else {
        $("div.error").hide();
    }
}

function AddValidator(controlid) {
	jQuery.validator.messages.required = "";
      
    $("#" + controlid).validate({
        invalidHandler: function(e, validator) {
            ShowErrorMessage( validator);
        },
        wrapper: "div",
        errorClass: "invalid",
        errorElement: "em",
        highlight: function(element, errorClass) {
            $(element).addClass(errorClass);
        },
        unhighlight: function(element, errorClass) {
            $(element).removeClass(errorClass);
        }
    });
}

function ShowLoader()
{	
	 var loader = $('#load');
	 loader.dialog(
		{
			autoOpen: true,
			bgiframe: true,
			draggable: true,
			modal: true,
			position: 'center',
			resizable: false,
			minHeight: 0,
			minWidth: 0,
			height: 59,
			width: 220		
		}
	);
	$(".ui-dialog-titlebar").hide();
	return loader;
}

function HideLoader(loader) 
{
	loader.dialog('destroy');
	$(".ui-dialog-titlebar").show();
}

function ComputeAge(bdate, ddate)
{
	var birthdate = new Date(bdate);
	var departuredate = new Date(ddate);
	
	var age = departuredate.getFullYear() - birthdate.getFullYear();
	if(age > 0) {
		if((birthdate.getMonth() > departuredate.getMonth()) || 
				((birthdate.getMonth() == departuredate.getMonth()) && (birthdate.getDate() > departuredate.getDate())))
			{
				age = age - 1; 
			}
	}
	return age;
}

function BackForm(url){
    window.location.replace(url);
}
